(1)百度云推送的接入请到百度云推送官网查看具体内容,这里不再赘述。
地址:http://push.baidu.com
(2)当app能接收到推送的消息,那么要如何展示给用户呢?
在项目的AppDelegate.m文件中
①当app收到推送消息时,会自动调用
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler方法,在这个方法中添加如下代码:
//创建一个消息对象,“infor_from_server”是自定义的消息名称,"userInfo"是信息的内容字典
NSNotification * notice = [NSNotification notificationWithName:@"infor_from_server" object:nil userInfo:userInfo];
//发送消息
[[NSNotificationCenter defaultCenter]postNotification:notice];
②在需要监听通知的ViewController的.m文件中,创建观察者用于监听刚才发送的消息。
- (void)viewDidLoad
{
//获取通知中心单例对象,添加一个观察者
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知
[center addObserver:self selector:@selector(notice:) name:@"infor_from_server" object:nil];
}
//观察者的方法,可以在这个方法中,可以做弹出框把消息内容展示给用户
-(void)notice:(id)sender
{
NSNotification * notice =(NSNotification*)sender;
NSDictionary* dictInfo=notice.userInfo;
NSDictionary* dictInfo_2=dictInfo[@"aps"];
NSLog(@"消息内容=%@",dictInfo_2[@"alert"]);
//打印出消息内容
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
在使用百度云推送时遇到的问题:
(1)DeviceToken 获取失败,原因:Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo=0x170269140 {NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}
解决方法:
后来发现是因为开发证书的问题,创建开发证书的时候不能选择带类似"com.baidu.*"这样带"*"的AppID,而是必须选择具体的例如"com.baidu.test".创建这样的证书并下载安装,在Xcode上运行时选择刚才安装的证书。