文档介绍:iOS推送之远程推送
(点击上方公众号,可快速关注我们)
中文:陈思(@陈思Siming) 链接:/
最近公司项目升级重构(重写),除了本来我所负责的模块,最后临危受n,当用户升级系统的时候deviceToken是会变化的。远程推送应用
注册远程通知(获取deviceToken)
注册远程通知的方法
一般都是在App启动完成的时候去注册远程通知注册方法调用一般都在didFinishLaunchingWithOptions:方法中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 在iOS8之前注册远程通知的方法,如果项目要支持iOS8以前的版本,必须要写此方法 UIRemoteNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types]; // iOS8之后注册远程通知的方法 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert; UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];}
处理注册远程通知的回调方法
// 注册成功回调方法,其中deviceToken即为APNs返回的token- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [self sendProviderDeviceToken:deviceToken]; // 将此deviceToken发送给Provider}// 注册失败回调方法,处理失败情况- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { }
在iOS8之后增加了可操作通知类型,可操作通知允许开发者添加自定义跳转事件。这些高级功能此篇文章不讲解,有兴趣的同学可自己去了解UIUserNotificationAction UIMutableUserNotificationAction UIUserNotificationCategory UIMutableUserNotificationCategory这几个类。
处理接收到远程通知消息(会回调以下方法中的某一个)
application: didFinishLaunchingWithOptions:
此方法在程序第一次启动是调用,也就是说App从Terminate状态进入Foreground状态的时候,根据方法内代码判断是否有推送消息。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // userInfo为收到远程通知的内容 NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; if (userInfo) { // 有推送的消息,处理推送的消息 } return YES;}
applica