Objective-C 推送通知
来源:互联网 发布:android图片压缩算法 编辑:程序博客网 时间:2024/04/28 01:08
系统 iOS 10.x
本文简单记录远程通知,更多细节看心情整理
1.注册通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (iOS系统大于10.0) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (granted) { NSLog(@"register success"); } else { NSLog(@"register failure"); } }]; } else { UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:setting]; } [[UIApplication sharedApplication] registerForRemoteNotifications]; return YES;}
2.处理token
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // 自定义处理token NSLog(@"%@",deviceToken);}
3.接收远程通知
/** iOS3.0 ~ 10.0 前台状态下,当接收到远程通知 点击通知 完全退出情况下,点击通知,不会执行 */- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { double version = [[[UIDevice currentDevice] systemVersion] doubleValue]; if (version < 10.0) { NSLog(@"收到远程通知"); self.window.rootViewController.view.backgroundColor = [UIColor redColor]; }}/* iOS7.0 ~ 10.0 如果实现了该方法,则不执行application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 前台状态下,当接收到远程通知 点击通知 完全退出情况下,点击通知,也会执行 只要接收到了通知,不管当前APP的状态,不管后台,还是锁屏,都直接执行这个方法 要求: 1.必须勾选后台模式Remote Notification 2.告诉系统是否有新的内容更新(执行完成代码块) 3.设置发送通知的格式("content-available":"xxx") { "aps" : { "alert":"This is some fancy message.", "badge":1, "content-available":"xxx" } } 调用系统回调代码块的作用 1.系统会估量App消耗的电量,并根据传递的UIBackgroundFetchResult参数记录新数据是否可用 2.调用完成的处理代码时,应用的界面缩略图会自动更新 */- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { double version = [[[UIDevice currentDevice] systemVersion] doubleValue]; if (version < 10.0) { NSLog(@"收到远程通知-----2"); self.window.rootViewController.view.backgroundColor = [UIColor blueColor]; } completionHandler(UIBackgroundFetchResultNewData);}/* 前台状态下 完全退出,点击通知,不会执行这个方法 */- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { NSLog(@"收到远程通知-----3.remote"); self.window.rootViewController.view.backgroundColor = [UIColor yellowColor]; } else { NSLog(@"收到本地通知-----3.local"); self.window.rootViewController.view.backgroundColor = [UIColor orangeColor]; } // UNNotificationPresentationOptionAlert 在前台状态下会出现通知栏 completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionAlert);}/* 点击通知 完全退出,点击通知,也会执行这个方法 */- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler { if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { NSLog(@"收到远程通知-----4.remote"); self.window.rootViewController.view.backgroundColor = [UIColor purpleColor]; } else { NSLog(@"收到本地通知-----4.local"); self.window.rootViewController.view.backgroundColor = [UIColor greenColor]; } completionHandler();}
0 0
- Objective-C 推送通知
- Objective-C 通知
- Objective-C-iOS AppDelegate代理详解(启动,打开App,推送,通知)
- [objective-c]推送警告处理
- objective-c ios 通知中心
- Objective-C入门19:通知
- Objective-c语言_SNottification(通知)
- objective-C学习 通知 Notification
- 编程笔记(Objective-c:委托与通知)
- Objective-C语言:委托与通知
- Objective-c KVC and KVO and 通知
- objective c设计模式--通知中心
- Objective-C NSNotificationCenter (通知)的使用方法
- Objective-C中的发通知的(Notification)
- Objective-C之NSNotification Center(通知中心)
- Objective-C中的设计模式--NSNotification通知
- Objective-C 通知(NSNotification)及实现原理
- 推送通知
- Ruby中“||=”符号理解
- 聚类--谱聚类
- 04 Mybatis源码篇---XML配置之environments环境
- Sql Server 日志收缩
- 整体二分\cdq分治——洛谷P3332 [ZJOI2013]K大数查询
- Objective-C 推送通知
- Qt-Xcode升级导致编译不过
- 对称加密技术
- SQL— CONCAT(字符串连接函数)
- jdbc原生态问题总结
- 手把手教你把 md 文件(markdown)转换为 docx 或者 pdf
- js实现数字千分位逗号分开格式化(银行金额效果)
- swift通过字符串获取类型实例化对象问题
- Android全局异常捕获,不退出应用,让应用正常运行下去!