iOS10 适配远程推送功能实现代码

 更新时间:2016年09月19日 10:12:42   作者:北方人在上海  
这篇文章主要介绍了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的适配。

本文已被整理到了《iOS推送教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • iOS中实现图片自适应拉伸效果的方法

    iOS中实现图片自适应拉伸效果的方法

    图片拉伸在移动开发中特别常见,比如常用的即时通讯应用中的聊天气泡就需要根据文字长度对背景图片进行拉伸自适应。下面这篇文章主要给大家介绍了iOS中实现图片自适应拉伸效果的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • IOS 签名错误codesign failed with exit code 1解决方法

    IOS 签名错误codesign failed with exit code 1解决方法

    这篇文章主要介绍了IOS 签名错误codesign failed with exit code 1解决方法的相关资料,遇到同样问题的朋友可以看下,这里提供了解决方案,需要的朋友可以参考下
    2017-01-01
  • 详解iOS 用于解决循环引用的block timer

    详解iOS 用于解决循环引用的block timer

    这篇文章主要介绍了详解iOS 用于解决循环引用的block timer,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • iOS中NSArray数组常用处理方式

    iOS中NSArray数组常用处理方式

    这篇文章主要介绍了iOS中NSArray数组常用处理方式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 在iOS开发的Quartz2D使用中实现图片剪切和截屏功能

    在iOS开发的Quartz2D使用中实现图片剪切和截屏功能

    这篇文章主要介绍了在iOS开发的Quartz2D使用中实现图片剪切和截屏功能的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS轻点、触摸和手势代码开发

    iOS轻点、触摸和手势代码开发

    这篇文章主要为大家详细介绍了iOS轻点、触摸和手势代码开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • IOS开发Objective-C Runtime使用示例详解

    IOS开发Objective-C Runtime使用示例详解

    这篇文章主要为大家介绍了IOS开发Objective-C Runtime使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • iOS利用UITableView设置全屏分隔线的3种方法总结

    iOS利用UITableView设置全屏分隔线的3种方法总结

    这篇文章主要介绍了关于iOS利用UITableView设置全屏分隔线的几种方法的相关对比,分析这三种的各自优缺点,并且分享了设置UITableView的单元格分割线离屏幕左右的距离为0的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起看看吧。
    2017-11-11
  • iOS如何将UIButton中的图片与文字上下对齐详解

    iOS如何将UIButton中的图片与文字上下对齐详解

    对于UIButton实现上显示图片,下显示文字这个需求估计各位iOS开发者们都不陌生,所以下面这篇文章主要给大家介绍了关于iOS如何将UIButton中图片与文字上下对齐的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • iOS开发中的几个手势操作实例分享

    iOS开发中的几个手势操作实例分享

    这篇文章主要介绍了iOS开发中的几个手势操作实例分享,编写代码为传统的Objective-C,需要的朋友可以参考下
    2015-09-09

最新评论