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 进入苹果开发者中心
1.1.2 输入账号和密码
1.1.3 点击Certificates & Profiles
1.1.4 选择创建测试证书
1.1.5 选择并创建
1.1.6 选择测试证书
1.1.7 提示创建一个证书请求文件
1.1.8 打开钥匙串
1.1.9 从证书颁发机构请求证书
1.1.10 填写邮箱和选存到磁盘
1.1.11 找到我们创建的证书请求文件
1.1.12 选择请求文件后继续下一步
1.1.13 下载测试证书
1.2 绑定Bundle Identifier
1.2.1 新绑定Bundle Identifier
1.2.2 打开工程找到Bundle Identifier
1.2.3 填写Bundle Identifier
1.2.4 给项目开启推送
1.2.5 查看证书状态(黄色)
1.3 生成开发的推送cer证书
1.3.1 开始创建开发推送证书
1.3.2 开发和生产推送证书
1.3.3 选择Bundle Identifier
1.3.4 选择CSR证书请求文件
1.3.5 选择好CSR
1.3.6 下载开发推送证书
1.3.7 已经可以进行推送测试
1.4 生成开发所需的P12证书
1.4.1 双击开发推送证书
1.4.2 右击多出的证书
1.4.3 右键并导出
1.4.4 存储
1.4.5 设置生产P12证书的密码
1.4.6 输入开机密码
1.5 生成生产cer证书
1.5.1 开始创建生产推送证书
1.5.2 选择生产推送证书
1.5.3 提示选择CSR
1.5.4 选定CSR证书请求文件
1.5.5 下载生产证书
1.5.6 两个证书都配置完毕
1.6 生成生产所需的P12证书
1.6.1 双击生产推送证书
1.6.2 右击多出的证书
1.6.3 右键并导出.png
1.6.4 存储
1.6.5 设置生产P12证书的密码
1.6.6 输入开机密码
1.7 生成Provisioning Profile配置文件
1.7.1 开始生成配置文件
1.7.2 选择
1.7.3 选择Bundle Identifier
1.7.4 选择真机调试证书
1.7.5 创建Devices(需要注意的是如果在创建Provisioning Prifile文件之前没有创建调试设备的话,这里接着创建的话,创建完成的时候需要从1.7.1开始重来到1.7.4的步骤。当然,如果第一次操作,肯定是这样的顺序,我没单独分一个模块,就是想让后来者也能经历一下这个顺序)
1.7.6 填写调试设备的Name和UDID
1.7.7 获取设备的UDID
1.7.8 接着1.7.4选择新创建的调试设备
1.7.9 给配置文件起个名字
1.7.10 下载配置好的配置文件
(阿西吧,该死的证书终于整理完毕,累死👶宝宝了)
2.配置项目,包括:
2.1 极光推送上创建应用
2.1.1 登录极光账号
2.1.2 创建一个应用
2.1.3 上传P12证书
2.1.4 创建成功
2.2 下载SDK,导入到Xcode的项目中
2.2.1 下载JPushSDK
2.2.2 将SDK导入到项目中
2.3 导入必要框架
2.3.1 开始添加框架
2.3.2 添加完毕
2.4 配置PushConfig.plist文件
2.4.1 创建新的文件
2.4.2 选择Property List,并命名为Push Config
2.4.3 配置三条信息
在你的工程中创建一个新的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传输
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证书(灰常重要,如果没有这个证书,那你要头疼了,谁试谁知道)
2.7.2 同意加入到iPhone配置实用工具
2.7.3 设置Code Signing
3.极光推送平台发送通知
3.1 应用在后台的情况下发送通知
3.1.1 登录极光平台
3.1.2 点击通知
3.1.3 输入内容发送通知
3.14 通知结果
3.2 使用第三方在应用active状态下获取通知
这个使用的是标哥的处理方法,传送门.标哥讲的很好,我就不画蛇添足了。
3.2.1 active通知显示
整个过程真心不易,转载请注明出处.
用到的链接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下载