极光推送iOS SDK教程
iOS SDK 调试指南
iOS 调试思维导图

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

- 3
开发环境测试
在对 JPush iOS 开发环境进行测试前,请确保 3 个统一:
App 是开发环境打包(开发证书 Development)
上传了开发证书并验证通过
Portal 上的应用设置为开发环境
发布环境测试
在对 JPush iOS 生产环境进行测试前,请确保 3 个统一:
App 是 ad-hoc 打包或者App Store 版本(发布证书 Production)
上传了发布证书并验证通过
Portal 上的应用设置为生产环境
可能存在的其他问题
收到消息不够稳定
JPush iOS 是对原生官方 APNs 推送的一个补充,是对其的封装,以帮助开发人员更轻松地使用 APNs 。
由于APNs 本身不承诺保证消息到达,客户端网络与服务器端的连通性,对 APNs 是否及时接收到消息具有很大的影响。
- 4
iOS 证书 设置指南
创建应用程序ID
登陆 iOS Dev Center 选择进入iOS Provisioning Portal。

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

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

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

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

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

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

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

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

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

- 14
继续返回Apple developer 网站点击 Continue ,上传刚刚生成的 .certSigningRequest 文件生成 APNs Push Certificate。
下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和"login"

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

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

- 17
将文件保存为Personal Information Exchange (.p12)格式。
上传证书
在 JPush 管理 Portal 上,针对某应用程序,上传上面步骤得到 .p12 证书文件。这是 iOS SDK 能够接收到 JPush 推送消息的必要步骤。
Provisioning Profile的创建
假设创建了一个App ID:cn.jpush.examlpe,并为此App ID配置开发环境的Push Notifications:

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

- 19
创建App ID、APN证书和p12证书的导出的具体步骤请看 :iOS 证书 设置指南
点击下图按钮开始创建Provisioning Profile:

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

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

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

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

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

- 25
点击[DownLoad]下载Provisioning Profile:

- 26
双击下载下来的Provisioning Profile,添加到xcode。
XCode的证书配置教程
参照iOS SDK 集成指南集成JPush SDK 和上传了推送用到的p12证书后在编译运行前需要先配置一下证书,步骤如下:
打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:

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

iOS 7 Background Remote Notification
本次iOS 7在推送方面最大的变化就是允许,应用收到通知后在后台(background)状态下运行一段代码,可用于从服务器获取内容更新。功能使用场景:(多媒体)聊天,Email更新,基于通知的订阅内容同步等功能,提升了终端用户的体验。
Remote Notifications 与之前版本的对比可以参考下面两张 Apple 官方的图片便可一目了然。


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

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

修改通知处理函数
当注册了Backgroud Modes -> Remote notifications 后,notification 处理函数一律切换到下面函数,后台推送代码也在此函数中调用。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
服务端推送设置
推送消息携带 content-available: 1 是Background 运行的必须参数,如果不携带此字段则与iOS7 之前版本的普通推送一样。
使用Web Portal 推送
在“可选设置内”选择对应的参数。

使用 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 开发文档。
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
客户端设置
使用UIUserNotificationCategory


服务端设置
服务端payload格式:aps增加category字段,当该字段与客户端UIMutableUserNotificationCategory的identifier匹配时,触发设定的action和button显示。
payload example:{"aps":{"alert":"example", "sound":"default", "badge": 1, "category":"identifier"}}
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教程的更多相关文章
- 极光推送>>java SDK服务端集成后台项目(使用详解)
PS:如果你是第一次用推送,那就直接按照我的步骤来,再去看官方文档,这样,更容易能理解操作流程.还有——-请耐心看 极光文档(java SDK)请参考 [ 极光文档 ] 步骤一: 首先,你必须在 [极 ...
- 极光推送android sdk集成步骤
推送,用极光,大家都说好,哈哈. 进入正题: 1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持.(基本上现在都已经支持了,循例说一下) , ...
- Android JPush(极光推送)的使用教程
首先进入官网https://www.jpush.cn/,先注册一个账号. 注册号以后,创建应用 1.点击右上角进入个人中心 2.点击创建应用 3.在创建应用界面输入自己项目的应用名和应用的包名,输入后 ...
- 极光推送 PHP sdk
<?php defined('IN_WZ') or exit('No direct script access allowed'); /** * Created by PhpStorm. * U ...
- ios极光推送快速集成教程
内容中包含 base64string 图片造成字符过多,拒绝显示
- iOS极光推送SDK的使用流程
一.极光推送简介 极光推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,整合了iOS.Android和WP平台的统一推送服务.使用起来方便简单,已于集成,解决了原生远程推送繁 ...
- 友盟分享,极光推送Demo
友盟分享SDK下载及官方文档 http://dev.umeng.com/social/ios/detail-share 1.注册应用获取App友盟Appkey(556d14ad67e58eb08400 ...
- iOS推送(利用极光推送)
本文主要是基于极光推送的SDK封装的一个快速集成极光推送的类的封装(不喜勿喷) (1)首先说一下推送的一些原理: Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指 ...
- java SDK服务端推送 --极光推送(JPush)
网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andr ...
随机推荐
- Oracle中rownum的说明及使用技巧
一.rownum的说明 rownum是oracle特有的一个关键字. (1)对于基表,在insert记录时,oracle就按照insert的顺序,将rownum分配给每一行记录,因此在select一个 ...
- 整理的Java List Set Map是否有序,元素是否允许重复
整理的Java List Set Map是否有序,元素是否允许重复的说明,如下图:
- iOS开发基础:最新的APP打包上架流程
之前有人留言让我更新部分文章,下面就为大家分享一下iOS的APP打包上架流程: 上传至apple developer 1.1 上传准备工作 更新上架和发布上架不同,在原始版本首次上架的时候就将描述文件 ...
- Unity使用UGUI进行VR游戏的界面开发
原文链接:http://gad.qq.com/article/detail/7181505 本文首发腾讯GAD开发者平台,未经允许,不得转载 我不知道有多少同学是跟我一样,在开发VR游戏中,是使用的面 ...
- ViewPager实现滑屏切换页面及动画效果(仿优酷客户端)
找了许多实现该功能的例子,但效果都不很理想,于是自己结合网上的资源及自己的总结,整理了一下,发出来,供大家参考.这个是自己做的,仿优酷客户端的. 先看效果: ****************** ...
- 第一行代码阅读笔记---AndroidMainfest.xml分析
按照这本书的指引,我随作者一样创建了一个安卓应用,开始了安卓开发的启程. 找到AndroidMainfest.xml这个文件,打开后看到了我创建的Activity在这个文件里被成功注册,文件内容如下: ...
- Hibernate配置文件current_session_context_class的意思
转自:http://shuaigg-babysky.iteye.com/blog/563423 此设置的作用如下: What does sessionFactory.getCurrentSession ...
- Fresco图片框架内部实现原理探索
流行的网络框架 目前流行的网络图片框架: Picasso.Universal Image Loader.Volley的(ImageLoader.NetworkImageView).Glide和Fres ...
- (七十四)iOS8之前使socket可以后台运行的方法
对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设 ...
- [Error]Can't install RMagick 2.13.4. You must have ImageMagick 6.4.9 or later.
gem 安装ruby插件的时候 出现了一个错误 Installing rmagick 2.13.4 with native extensions Gem::Installer::ExtensionBu ...