激光推送已经做得比较完善了。参考集成文档就可以解决掉大部分问题。
1,证书问题,certificates,这里要区分两个概念,开发证书与推送证书。这是两个证书,刚开始混淆了,以为开发证书要有推送功能呢。
开发证书选择的生成的时候,是选择App Developer那个选项,这个是用来进行对我们的App签名的。
2,推送证书,这个单单是用来生成p12文件的,生成的时候选择push功能,然后下载下来双击,有可能没有安装在登录证书下,手动拖过去即可,要不然,导出证书不是p12文件。
3,将p12上传至极光推送平台。
4,配置好项目中pushconfig.plist文件。参考文档
5,实现相关的推送代码。参考项目文档。
至此推送工作已经准备完成,如果你人品足够好的话,估计就可以推一条试试了。
需要注意的几点:
1,极光的相关项目代码中实现的,只是后台的推送提醒。如果你觉得配置没问题,但是死活收不到,把程序退到后台试一下,或许就会收到了哈。
2,无论前台还是后台,推送都会走一个统一的方法。- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler
我们可以在这个方法里,进行一些处理。比如获取到推送的内容
NSString*content = [[userInfoobjectForKey:@"aps"]objectForKey:@"alert"];
3,判断程序前后台问题:
- (void)applicationDidBecomeActive:(UIApplication*)application 程序进入前台会走的方法。可以用BOOL来标记一下。
4,判断程序是从图标点击启动还是从推送通知点击启动
在这个方法里 - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
//如果是从点击通知启动的应用,就获取通知的内容
NSDictionary* remoteNotification = [launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(remoteNotification) {
//说明从推送通知点击启动的
}
5,关于推送跳转的问题。
项目的主架构是,rootViewController是TabbarController,然后TabbarController的对应着几个NavigationController。
我们可以获取navigationController.rootViewController