手机
当前位置:查字典教程网 >编程开发 >IOS开发 >iOS10 适配远程推送功能实现代码
iOS10 适配远程推送功能实现代码
摘要:iOS10正式版发布之后,网上各种适配XCode8以及iOS10的文章满天飞。但对于iOS10适配远程推送的文章却不多。iOS10对于推送的...

iOS10正式版发布之后,网上各种适配XCode8以及iOS10的文章满天飞。但对于iOS10适配远程推送的文章却不多。iOS10对于推送的修改还是非常大的,新增了UserNotifications Framework,今天就结合自己的项目,说一说实际适配的情况。

一、Capabilities中打开Push Notifications 开关

在XCode7中这里的开关不打卡,推送也是可以正常使用的,但是在XCode8中,这里的开关必须要打开,不然会报错:

Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo={NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串}

打开后会生成entitlements文件,在这里可以设置APS Environment

二、推送的注册

首先引入UserNotifications Framework,

import <UserNotifications/UserNotifications.h>

iOS10修改了注册推送的方法,这里我们又要对不同版本分别进行设置了。在application didFinishLaunchingWithOptions方法中修改以前的推送设置(我只实现了iOS8以上的设置)

if (IOS_VERSION >= 10.0) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) { if (!error) { DLog(@"request authorization succeeded!"); } }]; } else { if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { //IOS8,创建UIUserNotificationSettings,并设置消息的显示类类型 UIUserNotificationSettings *notiSettings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil]; [application registerUserNotificationSettings:notiSettings]; } }

三、UNUserNotificationCenterDelegate代理实现

在iOS10中处理推送消息需要实现UNUserNotificationCenterDelegate的两个方法:

复制代码 代码如下:- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler

其中第一个方法为App在前台的时候收到推送执行的回调方法,第二个为App在后台的时候,点击推送信息,进入App后执行的 回调方法。

以前处理推送,信息是在userInfo参数中,而新方法中表明上看并没有这个参数,其实我们一样可以获取到userInfo,如下:

/// App在前台时候回调 - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { NSDictionary *userInfo = notification.request.content.userInfo; [self handleRemoteNotificationForcegroundWithUserInfo:userInfo]; } /// App在后台时候点击推送调用 - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { NSDictionary *userInfo = response.notification.request.content.userInfo; [self handleRemoteNotificationBackgroundWithUserInfo:userInfo]; }

完成上面三个步骤的设置,对于iOS10的推送设置基本就适配了。要想自定义Notification Content或者实现其他NotificationAction请参考其他文章。这里只是做了对iOS10的适配。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持查字典教程网。

【iOS10 适配远程推送功能实现代码】相关文章:

iOS App中实现播放音效和音乐功能的简单示例

iOS统计项目的代码总行数

ios开发调用摄像头代码

举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现

iOS10 推送完整剖析和注意事项

iOS UITableView 拖动排序实现代码

IOS提醒用户重新授权打开定位功能

IOS实现邮箱模糊匹配的功能

iOS滑动解锁、滑动获取验证码效果的实现代码

iOS开发中实现邮件和短信发送的简单示例

精品推荐
分类导航