iOS 集成极光推送(一)

1.苹果推送机制

先看苹果官方对其推送做出解释的概要图。(转载于 )

APNs推送机制

provider 是你手机应用发出推送消息的服务器,而APNs(Apple Push Notification Server) 则是苹果消息推送服务器。你本地的服务器当需要给应用推送一条消息的时候,先要将消息发出到苹果推送服务器,然后再由苹果推送服务器将消息发到安装了该应用的手机。

再看一张解释图:

iOS 集成极光推送(一)_第1张图片

根据上图的逻辑我来给大家解释一下:

  1. 你的iOS应用需要去注册APNs消息推送服务
  2. 当苹果APNs推送服收到来自你应用的注册消息就会返回一串device token给你(很重要)
  3. 将应用收到的device Token传到你本地的Push服务器
  4. 当你需要为应用推送消息的时候,你本地的推送服务器会将消息,以及Device Token打包发到APNs服务器。
  5. APNs再将消息推送给目的iPhone。

2. JPush iOS

iOS 集成极光推送(一)_第2张图片

从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息。

红色部分是 APNs 推送,JPush 代理开发者的应用(需要基于开发者提供的应用证书),向苹果 APNs 服务器推送。由 APNs Server 推送到 iOS 设备上。

蓝色部分是 JPush 应用内推送部分,即 App 启动时,内嵌的 JPush SDK 会开启长连接到 JPush Server,从而 JPush Server 可以推送消息到 App 里。(这部分我不是很懂,JPush Server为什么可以推送消息到App?)

3. 集成极光推送

集成极光推送的步骤在极光官网都有详细的介绍。这里简单描述下推送流程,相关链接在:

  • iOS证书设置指南。
  • iOS SDK集成指南

3.1 iOS证书设置指南

3.1.1 创建应用程序ID

3.1.2 配置和下载证书

3.1.3 上传证书

3.1.4 Provisioning Profile的创建

这地方记住一定不要忘记了!!!
如果APP能够得到device Token,但是收不到推送,检查下自己的Provisioning Profile是否配置没。,如图所示

iOS 集成极光推送(一)_第3张图片

3.1.5 XCode的证书配置教程

参照iOS SDK 集成指南集成JPush SDK 和上传了推送用到的p12证书后在编译运行前需要先配置一下证书,步骤如下:

  • 打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:

    iOS 集成极光推送(一)_第4张图片

  • 点击项目,选择目标TARGETS后进入Build Setting 界面,搜索“Code signing”,按照下图配置
    iOS 集成极光推送(一)_第5张图片

3.2 iOS7 Background Remote Notification

本次iOS 7在推送方面最大的变化就是允许,应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。

Remote Notifications 与之前版本的对比可以参考下面两张 Apple 官方的图片便可一目了然。

iOS 集成极光推送(一)_第6张图片

如果只携带content-available: 1 不携带任何badge,sound 和消息内容等参数,则可以不打扰用户的情况下进行内容更新等操作即为“Silent Remote Notifications”。

iOS 集成极光推送(一)_第7张图片

3.2.1客户端设置

开启Remote notifications

iOS 集成极光推送(一)_第8张图片

修改通知处理函数

当注册了Backgroud Modes -> Remote notifications 后,notification 处理函数一律切换到下面函数,后台推送代码也在此函数中调用。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler; 
3.2.2 服务端推送设置

推送消息携带 content-available: 1 是Background 运行的必须参数,如果不携带此字段则与iOS7 之前版本的普通推送一样。

3.2.3 使用Web Portal推送

在“可选设置内”选择对应的参数。
使用Web Portal推送

3.2.4 iOS 8 UIUserNotificationSettings
  • 本次iOS 8在推送方面最大的变化就是修改了推送的注册接口,在原本的推送type的基础上,增加了一个categories参数,这个参数的目的是用来注册一组和通知关联起来的button的事件。
  • 这个categories由一系列的 UIUserNotificationCategory组成。每个UIUserNotificationCategory对象包含你的app用来响应本地或者远程通知的信息。每一个对象的title作为通知上每一个button的title展示给用户。
iOS 9 UIUserNotificationActionBehaviorTextInput
  • 本次iOS 9在推送方面最大的变化就是修改了推送Category的类型,在原本的推送categories的基础上,增加了一个text Action类型,这个参数的目的是用来注册通过通知快捷文字输入的事项。
  • 这个categories由一系列的 UIUserNotificationCategory组成。每个UIUserNotificationCategory对象允许添加一组UIMutableUserNotificationAction类型的参数来增加通知栏上的项目。如今iOS9在原有的UIMutableUserNotificationAction类型增加了Text输入类型(UIUserNotificationActionBehaviorTextInput),通过behavior来设置(只有iOS9才拥有的属性)。
  • 回调的方法iOS9使用了两个新的回调方法来处理点击按钮的事件:

3.3 在JPush Portal上创建应用

  1. 在JPush Portal 上创建应用
  2. 导入API开发包到应用程序
  3. 必要的框架
  4. Build Settings
  5. 添加代码

你可能感兴趣的:(ios,推送,极光推送)