程胖出品——极光推送(手把手教你啊)

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.1.1 进入苹果开发者中心

1.1.2 输入账号和密码
程胖出品——极光推送(手把手教你啊)_第2张图片
1.1.2 输入账号和密码

1.1.3 点击Certificates & Profiles
程胖出品——极光推送(手把手教你啊)_第3张图片
1.1.3 选择创建证书

1.1.4 选择创建测试证书
程胖出品——极光推送(手把手教你啊)_第4张图片
1.1.4 选择创建测试证书

1.1.5 选择并创建
程胖出品——极光推送(手把手教你啊)_第5张图片
1.1.5 选择并创建

1.1.6 选择测试证书
程胖出品——极光推送(手把手教你啊)_第6张图片
1.1.6 选择测试证书.png

1.1.7 提示创建一个证书请求文件
程胖出品——极光推送(手把手教你啊)_第7张图片
1.1.7 提示创建一个证书请求文件

1.1.8 打开钥匙串
程胖出品——极光推送(手把手教你啊)_第8张图片
1.1.8 打开钥匙串

1.1.9 从证书颁发机构请求证书
程胖出品——极光推送(手把手教你啊)_第9张图片
1.1.9 从证书颁发机构请求证书

1.1.10 填写邮箱和选存到磁盘
程胖出品——极光推送(手把手教你啊)_第10张图片
1.1.10 填写邮箱和选存到磁盘

1.1.11 找到我们创建的证书请求文件
程胖出品——极光推送(手把手教你啊)_第11张图片
1.1.11 找到我们创建的证书请求文件

1.1.12 选择请求文件后继续下一步
程胖出品——极光推送(手把手教你啊)_第12张图片
1.1.12 选择请求文件后继续下一步

1.1.13 下载测试证书
程胖出品——极光推送(手把手教你啊)_第13张图片
1.1.13 下载测试证书

1.2 绑定Bundle Identifier

1.2.1 新绑定Bundle Identifier


程胖出品——极光推送(手把手教你啊)_第14张图片
1.2.1 新绑定Bundle Identifier

1.2.2 打开工程找到Bundle Identifier


程胖出品——极光推送(手把手教你啊)_第15张图片
1.2.2 打开工程找到Bundle Identifier

1.2.3 填写Bundle Identifier
程胖出品——极光推送(手把手教你啊)_第16张图片
1.2.3 填写Bundle Identifier

1.2.4 给项目开启推送


程胖出品——极光推送(手把手教你啊)_第17张图片
1.2.4 给项目开启推送

1.2.5 查看证书状态(黄色)
程胖出品——极光推送(手把手教你啊)_第18张图片
1.2.5 查看证书状态(黄色)
1.3 生成开发的推送cer证书

1.3.1 开始创建开发推送证书


程胖出品——极光推送(手把手教你啊)_第19张图片
1.3.1 开始创建开发推送证书

1.3.2 开发和生产推送证书


程胖出品——极光推送(手把手教你啊)_第20张图片
1.3.2 开发和生产推送证书

1.3.3 选择Bundle Identifier
程胖出品——极光推送(手把手教你啊)_第21张图片
1.3.3 选择Bundle Identifier

1.3.4 选择CSR证书请求文件


程胖出品——极光推送(手把手教你啊)_第22张图片
1.3.4 选择CSR证书请求文件

1.3.5 选择好CSR
程胖出品——极光推送(手把手教你啊)_第23张图片
1.3.5 选择好CSR

1.3.6 下载开发推送证书
程胖出品——极光推送(手把手教你啊)_第24张图片
1.3.6 下载开发推送证书

1.3.7 已经可以进行推送测试
程胖出品——极光推送(手把手教你啊)_第25张图片
1.3.7 已经可以进行测试推送
1.4 生成开发所需的P12证书

1.4.1 双击开发推送证书


程胖出品——极光推送(手把手教你啊)_第26张图片
1.4.1 双击开发推送证书

1.4.2 右击多出的证书


程胖出品——极光推送(手把手教你啊)_第27张图片
1.4.2 右击多出的证书

1.4.3 右键并导出
程胖出品——极光推送(手把手教你啊)_第28张图片
1.4.3 右键并导出

1.4.4 存储


程胖出品——极光推送(手把手教你啊)_第29张图片
1.4.4 存储

1.4.5 设置生产P12证书的密码
程胖出品——极光推送(手把手教你啊)_第30张图片
1.4.5 设置生产P12证书的密码

1.4.6 输入开机密码
程胖出品——极光推送(手把手教你啊)_第31张图片
1.4.6 输入开机密码
1.5 生成生产cer证书

1.5.1 开始创建生产推送证书


程胖出品——极光推送(手把手教你啊)_第32张图片
1.5.1 开始创建生产推送证书

1.5.2 选择生产推送证书


程胖出品——极光推送(手把手教你啊)_第33张图片
1.5.2 选择生产推送证书

1.5.3 提示选择CSR
程胖出品——极光推送(手把手教你啊)_第34张图片
1.5.3 提示选择CSR

1.5.4 选定CSR证书请求文件


程胖出品——极光推送(手把手教你啊)_第35张图片
1.5.4 选定CSR证书请求文件

1.5.5 下载生产证书
程胖出品——极光推送(手把手教你啊)_第36张图片
1.5.5 下载生产证书

1.5.6 两个证书都配置完毕
程胖出品——极光推送(手把手教你啊)_第37张图片
1.5.6 两个证书都配置完毕
1.6 生成生产所需的P12证书

1.6.1 双击生产推送证书


程胖出品——极光推送(手把手教你啊)_第38张图片
1.6.1 双击生产推送证书

1.6.2 右击多出的证书


程胖出品——极光推送(手把手教你啊)_第39张图片
1.6.2 右击多出的证书

1.6.3 右键并导出.png
程胖出品——极光推送(手把手教你啊)_第40张图片
1.6.3 右键并导出.png

1.6.4 存储


程胖出品——极光推送(手把手教你啊)_第41张图片
1.6.4 存储

1.6.5 设置生产P12证书的密码
程胖出品——极光推送(手把手教你啊)_第42张图片
1.6.5 设置生产P12证书的密码

1.6.6 输入开机密码
程胖出品——极光推送(手把手教你啊)_第43张图片
1.6.6 输入开机密码
1.7 生成Provisioning Profile配置文件

1.7.1 开始生成配置文件


程胖出品——极光推送(手把手教你啊)_第44张图片
1.7.1 开始生成配置文件

1.7.2 选择


程胖出品——极光推送(手把手教你啊)_第45张图片
1.7.2 选择

1.7.3 选择Bundle Identifier
程胖出品——极光推送(手把手教你啊)_第46张图片
1.7.3 选择Bundle Identifier

1.7.4 选择真机调试证书


程胖出品——极光推送(手把手教你啊)_第47张图片
1.7.4 选择真机调试证书

1.7.5 创建Devices(需要注意的是如果在创建Provisioning Prifile文件之前没有创建调试设备的话,这里接着创建的话,创建完成的时候需要从1.7.1开始重来到1.7.4的步骤。当然,如果第一次操作,肯定是这样的顺序,我没单独分一个模块,就是想让后来者也能经历一下这个顺序)
程胖出品——极光推送(手把手教你啊)_第48张图片
1.7.5 创建Devices

1.7.6 填写调试设备的Name和UDID
程胖出品——极光推送(手把手教你啊)_第49张图片
1.7.6 填写调试设备的Name和UDID

1.7.7 获取设备的UDID
程胖出品——极光推送(手把手教你啊)_第50张图片
1.7.7 获取设备的UDID

1.7.8 接着1.7.4选择新创建的调试设备
程胖出品——极光推送(手把手教你啊)_第51张图片
1.7.8 接着1.7.4选择新创建的调试设备

1.7.9 给配置文件起个名字


程胖出品——极光推送(手把手教你啊)_第52张图片
1.7.9 给配置文件起个名字

1.7.10 下载配置好的配置文件
程胖出品——极光推送(手把手教你啊)_第53张图片
1.7.10 下载配置好的配置文件

(阿西吧,该死的证书终于整理完毕,累死宝宝了)
2.配置项目,包括:
2.1 极光推送上创建应用

2.1.1 登录极光账号


程胖出品——极光推送(手把手教你啊)_第54张图片
2.1.1 登录极光账号

2.1.2 创建一个应用


程胖出品——极光推送(手把手教你啊)_第55张图片
2.1.2 创建一个应用

2.1.3 上传P12证书
程胖出品——极光推送(手把手教你啊)_第56张图片
2.1.3 上传P12证书

2.1.4 创建成功


程胖出品——极光推送(手把手教你啊)_第57张图片
2.1.4 创建成功
2.2 下载SDK,导入到Xcode的项目中

2.2.1 下载JPushSDK


程胖出品——极光推送(手把手教你啊)_第58张图片
2.2.1 下载JPushSDK

2.2.2 将SDK导入到项目中


程胖出品——极光推送(手把手教你啊)_第59张图片
2.2.2 将SDK导入到项目中
2.3 导入必要框架

2.3.1 开始添加框架


程胖出品——极光推送(手把手教你啊)_第60张图片
2.3.1 开始添加框架

2.3.2 添加完毕


程胖出品——极光推送(手把手教你啊)_第61张图片
2.3.2 添加完毕
2.4 配置PushConfig.plist文件

2.4.1 创建新的文件


程胖出品——极光推送(手把手教你啊)_第62张图片
2.4.1 创建新的文件

2.4.2 选择Property List,并命名为Push Config


程胖出品——极光推送(手把手教你啊)_第63张图片
2.4.2 选择Property List

2.4.3 配置三条信息
程胖出品——极光推送(手把手教你啊)_第64张图片
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传输


程胖出品——极光推送(手把手教你啊)_第65张图片
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证书(灰常重要,如果没有这个证书,那你要头疼了,谁试谁知道)


程胖出品——极光推送(手把手教你啊)_第66张图片
2.7.1 双击PP证书

2.7.2 同意加入到iPhone配置实用工具


程胖出品——极光推送(手把手教你啊)_第67张图片
2.7.2 同意加入到iPhone配置实用工具

2.7.3 设置Code Signing
程胖出品——极光推送(手把手教你啊)_第68张图片
2.7.3 设置Code Signing
3.极光推送平台发送通知
3.1 应用在后台的情况下发送通知

3.1.1 登录极光平台


程胖出品——极光推送(手把手教你啊)_第69张图片
3.1.1 登录极光平台

3.1.2 点击通知


程胖出品——极光推送(手把手教你啊)_第70张图片
3.1.2 点击通知

3.1.3 输入内容发送通知
程胖出品——极光推送(手把手教你啊)_第71张图片
3.1.3 输入内容发送通知

3.14 通知结果


程胖出品——极光推送(手把手教你啊)_第72张图片
3.14 通知结果
3.2 使用第三方在应用active状态下获取通知

这个使用的是标哥的处理方法,传送门.标哥讲的很好,我就不画蛇添足了。
3.2.1 active通知显示

程胖出品——极光推送(手把手教你啊)_第73张图片
3.2.1 active通知显示

整个过程真心不易, 转载请注明出处.
用到的链接:
iOS SDK教程
iOS SDK集成指南
JPushSDK下载

你可能感兴趣的:(程胖出品——极光推送(手把手教你啊))