1. iOS SDK 调试指南

    iOS 调试思维导图

  2. 2

    确认证书

    请到“应用详情页面”确认证书可用性:

  3. 3

    开发环境测试

    在对  JPush iOS 开发环境进行测试前,请确保 3 个统一:

    App 是开发环境打包(开发证书 Development)

    上传了开发证书并验证通过

    Portal 上的应用设置为开发环境

    发布环境测试

    在对  JPush iOS 生产环境进行测试前,请确保 3 个统一:

    App 是 ad-hoc 打包或者App Store 版本(发布证书 Production)

    上传了发布证书并验证通过

    Portal 上的应用设置为生产环境

    可能存在的其他问题

    收到消息不够稳定

    JPush iOS 是对原生官方 APNs 推送的一个补充,是对其的封装,以帮助开发人员更轻松地使用 APNs 。

    由于APNs 本身不承诺保证消息到达,客户端网络与服务器端的连通性,对 APNs 是否及时接收到消息具有很大的影响。

  4. 4

    iOS 证书 设置指南

    创建应用程序ID

    登陆 iOS Dev Center 选择进入iOS Provisioning Portal。

  5. 5

    在 iOS Provisioning Portal中,点击App IDs进入App ID列表。

  6. 6

    创建 App ID,如果 ID 已经存在可以直接跳过此步骤

  7. 7

    为 App 开启 Push Notification 功能。如果是已经创建的 App ID 也可以通过设置开启 Push Notification 功能。

  8. 8

    根据实际情况完善 App ID 信息并提交,注意此处需要指定具体的 Bundle ID 不要使用通配符。

  9. 9

    配置和下载证书

    如果你之前没有创建过 Push 证书或者是要重新创建一个新的,请在证书列表下面新建。

  10. 10

    新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于 App Store 发布)

  11. 11

    点击 Continue 后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”。

  12. 12

    根据它的说明创建打开KeychainAccess 创建 Certificate Signing Request。

  13. 13

    填写“User Email Address”和“Common Name” 后选择 Saved to disk 进行保存 。

  14. 14

    继续返回Apple developer 网站点击 Continue ,上传刚刚生成的 .certSigningRequest 文件生成 APNs Push  Certificate。

    下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。

    在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和"login"

  15. 15

    导出 .p12 证书文件

    注意要选“login”和“My Certificates” 导出证书时要选中证书文件,不要展开private key。

  16. 16

    将文件保存为Personal Information Exchange (.p12)格式。

  17. 17

    将文件保存为Personal Information Exchange (.p12)格式。

    上传证书

    在 JPush 管理 Portal 上,针对某应用程序,上传上面步骤得到 .p12 证书文件。这是 iOS SDK 能够接收到 JPush 推送消息的必要步骤。

    Provisioning Profile的创建

    假设创建了一个App ID:cn.jpush.examlpe,并为此App ID配置开发环境的Push Notifications:

  18. 18

    创建该App ID的推送证书,如下图:

  19. 19

    创建App ID、APN证书和p12证书的导出的具体步骤请看 :iOS 证书 设置指南

    点击下图按钮开始创建Provisioning Profile:

  20. 20

    选择此Provisioning Profile的环境后点击[Continue]:

  21. 21

    选择要创建Provisioning Profile的App ID后点击[Continue]:

  22. 22

    选择所属的开发者证书,(这里创建了多个开发者证书,建议只创建一个,方便管理)为了方便,选择了[Select All],再点击[Continue]进入下一步:

  23. 23

    为该Provisioning Profile选择将要安装的设备(一般选择[Select All]),点击[Continue]:

  24. 24

    给该Provisioning Profile填写Profile Name,点击[generate]完成创建。

  25. 25

    点击[DownLoad]下载Provisioning Profile:

  26. 26

    双击下载下来的Provisioning Profile,添加到xcode。

    XCode的证书配置教程

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

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

  27. 点击项目,进入Build Setting 界面,向下滑动,去到Code Signing 配置证书:

  28. iOS 7 Background Remote Notification

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

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

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

  30. 客户端设置

    开启Remote notifications

    需要在Xcode 中修改应用的 Capabilities 开启Remote notifications,请参考下图:

  31. 修改通知处理函数

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

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

    服务端推送设置

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

    使用Web Portal 推送

    在“可选设置内”选择对应的参数。

  32. 使用 API 推送

    只需在Push API v3 的 ios 内附加content-available":true 字段即可

    限制与注意

    “Silent Remote Notifications”是在 Apple 的限制下有一定的频率控制,但具体频率不详。所以并不是所有的 “Silent Remote Notifications” 都能按照预期到达客户端触发函数。

    “Background”下提供给应用的运行时间窗是有限制的,如果需要下载较大的文件请参考 Apple 的 NSURLSession 的介绍。

    “Background  Remote Notification”  的前提是要求客户端处于Background 或 Suspended 状态,如果用户通过 App Switcher 将应用从后台 Kill 掉应用将不会唤醒应用处理 background 代码。

    更详细的说明资料请查阅 Apple 官方的 iOS 开发文档。

  33. OS 8 UIUserNotificationSettings

    支持版本

    v1.8.0 版本开始。

    本次iOS 8在推送方面最大的变化就是修改了推送的注册接口,在原本的推送type的基础上,增加了一个categories参数,这个参数的目的是用来注册一组和通知关联起来的button的事件。

    这个categories由一系列的 UIUserNotificationCategory组成。每个UIUserNotificationCategory对象包含你的app用来响应本地或者远程通知的信息。每一个对象的title作为通知上每一个button的title展示给用户。当用户点击了某一个button,系统将会调用应用内的回调函数application:handleActionWithIdentifier:forRemoteNotification:completionHandler:或者application:handleActionWithIdentifier:forLocalNotification:completionHandler:。

    客户端设置

    使用UIUserNotificationCategory

  34. 客户端设置

    使用UIUserNotificationCategory

  35. 服务端设置

    服务端payload格式:aps增加category字段,当该字段与客户端UIMutableUserNotificationCategory的identifier匹配时,触发设定的action和button显示。

    payload example:{"aps":{"alert":"example", "sound":"default", "badge": 1, "category":"identifier"}}

  36. OS 8 UILocalNotification

    本次iOS 8 UILocalNotification增加了三个参数: region、regionTriggersOnce、category。

    region: 用于控制当用户进入或者离开某一个地理位置时候,触发通知。使用此功能,用户需要拥有CoreLocation的"when-in-use"权限。

    regionTriggersOnce(BOOL):当为YES时,通知只会触发一次,当为NO时,通知将会在每一次进入或者离开时都触发。

    category:如果localNotification通过+[UIUserNotificationSettings settingsForUserNotificationTypes:userNotificationActionSettings:]注册了,通过该category可以获取该通知的注册category.

    客户端设置

    使用UILocalNotification

极光推送iOS SDK教程的更多相关文章

  1. 极光推送>>java SDK服务端集成后台项目(使用详解)

    PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...

  2. 极光推送android sdk集成步骤

    推送,用极光,大家都说好,哈哈. 进入正题: 1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持.(基本上现在都已经支持了,循例说一下)  , ...

  3. Android JPush(极光推送)的使用教程

    首先进入官网https://www.jpush.cn/,先注册一个账号. 注册号以后,创建应用 1.点击右上角进入个人中心 2.点击创建应用 3.在创建应用界面输入自己项目的应用名和应用的包名,输入后 ...

  4. 极光推送 PHP sdk

    <?php defined('IN_WZ') or exit('No direct script access allowed'); /** * Created by PhpStorm. * U ...

  5. ios极光推送快速集成教程

    内容中包含 base64string 图片造成字符过多,拒绝显示

  6. iOS极光推送SDK的使用流程

    一.极光推送简介 极光推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,整合了iOS.Android和WP平台的统一推送服务.使用起来方便简单,已于集成,解决了原生远程推送繁 ...

  7. 友盟分享,极光推送Demo

    友盟分享SDK下载及官方文档 http://dev.umeng.com/social/ios/detail-share 1.注册应用获取App友盟Appkey(556d14ad67e58eb08400 ...

  8. iOS推送(利用极光推送)

    本文主要是基于极光推送的SDK封装的一个快速集成极光推送的类的封装(不喜勿喷) (1)首先说一下推送的一些原理: Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指 ...

  9. java SDK服务端推送 --极光推送(JPush)

    网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andr ...

随机推荐

  1. SQL实例整理

    本文适合将w3school的SQL教程(http://www.w3school.com.cn/sql/sql_create_table.asp)都基本看过一遍的猿友阅读. 说说博主的情况吧.毕业找工作 ...

  2. SOAP Binding: Difference between Document and RPC Style Web Services

    SOAP Binding: Difference between Document and RPC Style Web Services 20FLARES Twitter 1Facebook 9Goo ...

  3. java异常拾遗

    概述 当方法内部发生一项错误时,该方法会创建一个对象传递给运行时系统(runtime system),这个对象被称为异常对象,包含错误的类型.发生位置,程序状态等一系列信息. 当一个方法抛出异常时,运 ...

  4. Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party

    今天遇到个问题,在本地打开插件注册器连接到远程CRM服务器时报如下问题 但我在CRM服务器上连接注册器是可以打开的,所以不存在账号权限这类的问题了(当然我用的是超管的账号也不可能存在),最后查询得知是 ...

  5. Programming In Scala笔记-第八章、函数与闭包

    当程序的代码量增大时,就需要对各功能模块进行分割,这些分割的小模块就是本文中接下来会进行分析的函数.接下来的部分会讲解包括函数嵌套,函数字面量,以及函数值等概念. 一.方法 一会函数一会方法的,是不是 ...

  6. android M Launcher之LauncherModel (二)

    上一篇我们通过LauncherModel的创建 ,实例化,以及与LauncherModel之间的沟通方式.初步了解了LauncherModel一些功能及用法,如果对LauncherModel一系列初始 ...

  7. 1.物理系统PhysicsWorld,RayCast

     1 3.0物理系统PhysicsWorld T07PhysicsWorld.h #ifndef __T07PhysicsWorld_H__ #define __T07PhysicsWorld_H ...

  8. UNIX网络编程——揭开网络编程常见API的面纱【下】

    Linux网络编程数据收发的API流程分析        只要把数据在协议栈中的流动线路和脉络弄清楚了,关于协议栈的实现部分,理解起来就轻松多了.在网络编程章节的数据接收过程中,我们主要介绍过read ...

  9. 【Hadoop 10周年】我与Hadoop不得不说的故事

    什么是Hadoop        今年是2016年,是hadoop十岁的生日,穿越时间和空间,跟她说一声生日快乐,二千零八年一月二十八号,是一个特别的日子,hadoop带着第一声啼哭,来到了这个世界, ...

  10. 菜鸟学习物联网---辨析基于Andriod 5.1,Linux,Windows10开发Dragon Board 410c板

    点击打开链接 诸位亲最近怎么样?刚过完年上班是不是很不情愿?自古做事者,不唯有坚韧不拔之志,亦或有超世之才.所以,诸位好好加油.今天小编想给大家系统性总结一下Dragon Board 410c板基于A ...