程胖出品——极光推送(手把手教你啊)
iOS开发中不可避免要使用到推送,JPush还是个不错的选择。本文主要介绍极光推送的过程。
写在前面:极光推送本身也有教程,网上也有好多大牛总结,为什么我还要写这篇呢?不知道大家是否有这样的感觉:每次接触一个新东西,如果有那么一两步没有写,可能就无法成功!反正这次的激光推送,有那么一两步让我吃了点苦头,而为什么有这一两步呢?因为大牛们都觉得太简单不需要!!!
鉴于我吃了苦头,所以本篇文章准备把每一块的每个步骤都尽量详细,尽量能够一次上手就可成功。
准备事项:
1.苹果开发者账号。是要交过99美金的。如果没有账号或者没有交过钱,可以参考这篇博客:AppStrore企业开发者账号完整申请流程。
2.极光平台账号。像其他平台一样,需要注册一个账号,点我注册账号。
3.一个Xcode工程。
4.需要测试机一部。
5.浏览器一个,方便随时查询信息。
整个步骤过程如下:
1.设置并下载证书,包括:
1.1 真机调试的测试证书
1.2 绑定Bundle Identifier
1.3 生成开发的推送cer证书
1.4 生成开发所需的P12证书
1.5 生成生产cer证书
1.6 生成生产所需的P12证书
1.7 Provisioning Profile配置文件
2.配置项目,包括:
2.1 极光推送上创建应用
2.2 下载SDK,导入到Xcode的项目中
2.3 导入必要框架
2.4 配置PushConfig.plist文件
2.5 Xcode7支持http传输的方法
2.6 调试代码设置
3.极光推送平台发送通知
3.1 应用在后台的情况下发送通知
3.2 使用第三方在应用active状态下获取通知
=----------------------------------------=
1.设置并下载证书,包括:
1.1 真机调试的测试证书
首先登录苹果开发者网站,按照下图步骤走:
1.1.1 进入苹果开发者中心
![](https://img.haomeiwen.com/i1323848/b5c5b6c0f2846c39.png)
1.1.2 输入账号和密码
![](https://img.haomeiwen.com/i1323848/e3f73f1b1158c3e4.png)
1.1.3 点击Certificates & Profiles
![](https://img.haomeiwen.com/i1323848/2f43654bade2d8be.png)
1.1.4 选择创建测试证书
![](https://img.haomeiwen.com/i1323848/9759e99140c24031.png)
1.1.5 选择并创建
![](https://img.haomeiwen.com/i1323848/0e4796e96d146afd.png)
1.1.6 选择测试证书
![](https://img.haomeiwen.com/i1323848/47c70cb19b9970e8.png)
1.1.7 提示创建一个证书请求文件
![](https://img.haomeiwen.com/i1323848/444d4d62f590cfcb.png)
1.1.8 打开钥匙串
![](https://img.haomeiwen.com/i1323848/4facf4132ced48cd.png)
1.1.9 从证书颁发机构请求证书
![](https://img.haomeiwen.com/i1323848/f65e0072b5f3c34e.png)
1.1.10 填写邮箱和选存到磁盘
![](https://img.haomeiwen.com/i1323848/9e8bf760c78f737c.png)
1.1.11 找到我们创建的证书请求文件
![](https://img.haomeiwen.com/i1323848/a3ee4a92307d7c64.png)
1.1.12 选择请求文件后继续下一步
![](https://img.haomeiwen.com/i1323848/ffed752101fe0598.png)
1.1.13 下载测试证书
![](https://img.haomeiwen.com/i1323848/809c4138aaa2bfe8.png)
1.2 绑定Bundle Identifier
1.2.1 新绑定Bundle Identifier
![](https://img.haomeiwen.com/i1323848/9f30876c5d9ebdd2.png)
1.2.2 打开工程找到Bundle Identifier
![](https://img.haomeiwen.com/i1323848/a62c1c3ab086aacd.png)
1.2.3 填写Bundle Identifier
![](https://img.haomeiwen.com/i1323848/1cb0f9a58412e575.png)
1.2.4 给项目开启推送
![](https://img.haomeiwen.com/i1323848/24b984fda1b9231c.png)
1.2.5 查看证书状态(黄色)
![](https://img.haomeiwen.com/i1323848/3ae22be53895fc83.png)
1.3 生成开发的推送cer证书
1.3.1 开始创建开发推送证书
![](https://img.haomeiwen.com/i1323848/d776750450ecde70.png)
1.3.2 开发和生产推送证书
![](https://img.haomeiwen.com/i1323848/c8cd5f5a769aea72.png)
1.3.3 选择Bundle Identifier
![](https://img.haomeiwen.com/i1323848/f08d217a5e322c4a.png)
1.3.4 选择CSR证书请求文件
![](https://img.haomeiwen.com/i1323848/7ab050631ee67710.png)
1.3.5 选择好CSR
![](https://img.haomeiwen.com/i1323848/4b2e80cf90d49850.png)
1.3.6 下载开发推送证书
![](https://img.haomeiwen.com/i1323848/b145b6a37b2ed483.png)
1.3.7 已经可以进行推送测试
![](https://img.haomeiwen.com/i1323848/302241d48dab3032.png)
1.4 生成开发所需的P12证书
1.4.1 双击开发推送证书
![](https://img.haomeiwen.com/i1323848/8f08bd5159d8857b.png)
1.4.2 右击多出的证书
![](https://img.haomeiwen.com/i1323848/43d340194c729821.png)
1.4.3 右键并导出
![](https://img.haomeiwen.com/i1323848/c43358d4bbf6f60e.png)
1.4.4 存储
![](https://img.haomeiwen.com/i1323848/f40363df9719635a.png)
1.4.5 设置生产P12证书的密码
![](https://img.haomeiwen.com/i1323848/4cdd7031b8c7d131.png)
1.4.6 输入开机密码
![](https://img.haomeiwen.com/i1323848/1e73f1420c41d1d8.png)
1.5 生成生产cer证书
1.5.1 开始创建生产推送证书
![](https://img.haomeiwen.com/i1323848/1afe2335465b757e.png)
1.5.2 选择生产推送证书
![](https://img.haomeiwen.com/i1323848/4129c2eddf184128.png)
1.5.3 提示选择CSR
![](https://img.haomeiwen.com/i1323848/206b39987257c43e.png)
1.5.4 选定CSR证书请求文件
![](https://img.haomeiwen.com/i1323848/8b2a0eaced8b398d.png)
1.5.5 下载生产证书
![](https://img.haomeiwen.com/i1323848/7c02e0849c10a252.png)
1.5.6 两个证书都配置完毕
![](https://img.haomeiwen.com/i1323848/e2c077e456cd83f8.png)
1.6 生成生产所需的P12证书
1.6.1 双击生产推送证书
![](https://img.haomeiwen.com/i1323848/73829abd3bf1b471.png)
1.6.2 右击多出的证书
![](https://img.haomeiwen.com/i1323848/68e0994d9b2b984d.png)
1.6.3 右键并导出.png
![](https://img.haomeiwen.com/i1323848/8850a6f1985d7c7e.png)
1.6.4 存储
![](https://img.haomeiwen.com/i1323848/44dda851349318e2.png)
1.6.5 设置生产P12证书的密码
![](https://img.haomeiwen.com/i1323848/9557ac686e8956a2.png)
1.6.6 输入开机密码
![](https://img.haomeiwen.com/i1323848/0754262f3cd79999.png)
1.7 生成Provisioning Profile配置文件
1.7.1 开始生成配置文件
![](https://img.haomeiwen.com/i1323848/7f58c4c4f1df266a.png)
1.7.2 选择
![](https://img.haomeiwen.com/i1323848/63a5ba7bb0c9fab5.png)
1.7.3 选择Bundle Identifier
![](https://img.haomeiwen.com/i1323848/5b3806fea565d57a.png)
1.7.4 选择真机调试证书
![](https://img.haomeiwen.com/i1323848/3726596192797695.png)
1.7.5 创建Devices(需要注意的是如果在创建Provisioning Prifile文件之前没有创建调试设备的话,这里接着创建的话,创建完成的时候需要从1.7.1开始重来到1.7.4的步骤。当然,如果第一次操作,肯定是这样的顺序,我没单独分一个模块,就是想让后来者也能经历一下这个顺序)
![](https://img.haomeiwen.com/i1323848/7e38a9b3c38c9c1d.png)
1.7.6 填写调试设备的Name和UDID
![](https://img.haomeiwen.com/i1323848/9afa098b8b2048d7.png)
1.7.7 获取设备的UDID
![](https://img.haomeiwen.com/i1323848/0865869105309d3b.png)
1.7.8 接着1.7.4选择新创建的调试设备
![](https://img.haomeiwen.com/i1323848/c1db8802823f4304.png)
1.7.9 给配置文件起个名字
![](https://img.haomeiwen.com/i1323848/d246644f60acbe47.png)
1.7.10 下载配置好的配置文件
![](https://img.haomeiwen.com/i1323848/e67f9c7d7e7cf324.png)
(阿西吧,该死的证书终于整理完毕,累死👶宝宝了)
2.配置项目,包括:
2.1 极光推送上创建应用
2.1.1 登录极光账号
![](https://img.haomeiwen.com/i1323848/4b9b9b8bbd29996e.png)
2.1.2 创建一个应用
![](https://img.haomeiwen.com/i1323848/6fe685199255b067.png)
2.1.3 上传P12证书
![](https://img.haomeiwen.com/i1323848/74f2b6148a7bf06f.png)
2.1.4 创建成功
![](https://img.haomeiwen.com/i1323848/034f5367c3f44c5d.png)
2.2 下载SDK,导入到Xcode的项目中
2.2.1 下载JPushSDK
![](https://img.haomeiwen.com/i1323848/7f9b76558e462768.png)
2.2.2 将SDK导入到项目中
![](https://img.haomeiwen.com/i1323848/95a1bb4f326a6992.png)
2.3 导入必要框架
2.3.1 开始添加框架
![](https://img.haomeiwen.com/i1323848/bbcfd1f1fff68198.png)
2.3.2 添加完毕
![](https://img.haomeiwen.com/i1323848/cf322b1cb215dac9.png)
2.4 配置PushConfig.plist文件
2.4.1 创建新的文件
![](https://img.haomeiwen.com/i1323848/3c863004dde641cf.png)
2.4.2 选择Property List,并命名为Push Config
![](https://img.haomeiwen.com/i1323848/e5a0875011e46be1.png)
2.4.3 配置三条信息
![](https://img.haomeiwen.com/i1323848/94597d73c2cb1f8e.png)
在你的工程中创建一个新的Property List文件,并将其命名为PushConfig.plist,文件所含字段如下:
CHANNEL指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义,如:App Store。
APP_KEY填写管理Portal上创建应用后自动生成的AppKey值。请确保应用内配置的 AppKey 与第1步在 Portal 上创建应用后生成的 AppKey 一致。
APS_FOR_PRODUCTION1.3.1版本新增,用于标识当前应用所使用的APNs证书环境。
0 (默认值)表示采用的是开发证书,1 表示采用生产证书发布应用。
注:此字段的值要与Build Settings的Code Signing配置的证书环境一致。
在1.2.2或之前版本的配置文件中,有 TEST_MODE 这个键,新版的SDK不再使用,可以将它删除。
2.5 Xcode7支持http传输的方法
2.5.1 允许XCode7支持http传输
![](https://img.haomeiwen.com/i1323848/a05d1fe76a952d0c.png)
2.6 调试代码设置
导入头文件并配置信息
#import "JPUSHService.h"
static NSString *appKey = @"203bb93d6acaf565a52f3cf2";
static NSString *channel = @"App Store";
static BOOL isProduction = FALSE;
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
//Required
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//可以添加自定义categories
[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
UIUserNotificationTypeSound |
UIUserNotificationTypeAlert)
categories:nil];
} else {
//categories 必须为nil
[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert)
categories:nil];
}
//Required
//如需兼容旧版本的方式,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化和同时使用pushConfig.plist文件声明appKey等配置内容。
[JPUSHService setupWithOption:launchOptions appKey:appKey
channel:channel
apsForProduction:isProduction];
return YES;
}
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
/// Required - 注册 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// Required,For systems with less than or equal to iOS6
[JPUSHService handleRemoteNotification:userInfo];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// IOS 7 Support Required
[JPUSHService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
2.7 Xcode的配置
2.7.1 双击PP证书(灰常重要,如果没有这个证书,那你要头疼了,谁试谁知道)
![](https://img.haomeiwen.com/i1323848/f52d3a9a27221695.png)
2.7.2 同意加入到iPhone配置实用工具
![](https://img.haomeiwen.com/i1323848/f169c5bae43c778f.png)
2.7.3 设置Code Signing
![](https://img.haomeiwen.com/i1323848/1cd4b874eac61f4e.png)
3.极光推送平台发送通知
3.1 应用在后台的情况下发送通知
3.1.1 登录极光平台
![](https://img.haomeiwen.com/i1323848/8ef1341ee3f5b96f.png)
3.1.2 点击通知
![](https://img.haomeiwen.com/i1323848/8a6cd24d0d494673.png)
3.1.3 输入内容发送通知
![](https://img.haomeiwen.com/i1323848/b0a3edbceb58fc50.png)
3.14 通知结果
![](https://img.haomeiwen.com/i1323848/c4f0514c61e03eaf.png)
3.2 使用第三方在应用active状态下获取通知
这个使用的是标哥的处理方法,传送门.标哥讲的很好,我就不画蛇添足了。
3.2.1 active通知显示
![](https://img.haomeiwen.com/i1323848/39b77d14b7a9f6f9.png)
整个过程真心不易,转载请注明出处.
用到的链接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下载