极光推送(手把手教你)

作者: hx永恒之恋 | 来源:发表于2016-09-29 23:44 被阅读2188次

    极光社区极光社区

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

    iOS开发中不可避免要使用到推送,JPush还是个不错的选择。本文主要介绍极光推送的过程。
    写在前面:极光推送本身也有教程,网上也有好多大牛总结,为什么我还要写这篇呢?不知道大家是否有这样的感觉:每次接触一个新东西,如果有那么一两步没有写,可能就无法成功!反正这次的激光推送,有那么一两步让我吃了点苦头,而为什么有这一两步呢?因为大牛们都觉得太简单不需要!!!

    鉴于我吃了苦头,所以本篇文章准备把每一块的每个步骤都尽量详细,尽量能够一次上手就可成功。
    准备事项:
    苹果开发者账号。是要交过99美金的。如果没有账号或者没有交过钱,可以参考这篇博客:AppStrore企业开发者账号完整申请流程。
    极光平台账号。像其他平台一样,需要注册一个账号,点我注册账号。
    一个Xcode工程。
    需要测试机一部。
    浏览器一个,方便随时查询信息。

    整个步骤过程如下:

    1. 设置并下载证书,包括:
      1.1 真机调试的测试证书1.2 绑定Bundle Identifier1.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.2 输入账号和密码

      1.1.2 输入账号和密码
      1.1.3 点击Certificates & Profiles

      1.1.3 选择创建证书
      1.1.4 选择创建测试证书


      1.1.4 选择创建测试证书
      1.1.5 选择并创建
      粘贴的图像1148x1061 219 KB

      1.1.5 选择并创建
      1.1.6 选择测试证书


      1.1.6 选择测试证书.png
      1.1.7 提示创建一个证书请求文件


      1.1.7 提示创建一个证书请求文件
      1.1.8 打开钥匙串


      1.1.8 打开钥匙串
      1.1.9 从证书颁发机构请求证书


      1.1.9 从证书颁发机构请求证书
      1.1.10 填写邮箱和选存到磁盘


      1.1.10 填写邮箱和选存到磁盘
      1.1.11 找到我们创建的证书请求文件


      1.1.11 找到我们创建的证书请求文件
      1.1.12 选择请求文件后继续下一步


      1.1.12 选择请求文件后继续下一步
      1.1.13 下载测试证书


      1.1.13 下载测试证书
      1.2 绑定Bundle Identifier
      1.2.1 新绑定Bundle Identifier


      1.2.1 新绑定Bundle Identifier
      1.2.2 打开工程找到Bundle Identifier


      1.2.2 打开工程找到Bundle Identifier
      1.2.3 填写Bundle Identifier
      粘贴的图像1148x1061 179 KB

      1.2.3填写Bundle Identifier
      1.2.4 给项目开启推送


      1.2.4 给项目开启推送
      1.2.5 查看证书状态(黄色)


      1.2.5 查看证书状态(黄色)
      1.3 生成开发的推送cer证书
      1.3.1 开始创建开发推送证书


      1.3.1 开始创建开发推送证书
      1.3.2 开发和生产推送证书


      1.3.2 开发和生产推送证书
      1.3.3 选择Bundle Identifier


      1.3.3 选择Bundle Identifier
      1.3.4 选择CSR证书请求文件


      1.3.4 选择CSR证书请求文件
      1.3.5 选择好CSR


      1.3.4 选择CSR证书请求文件
      1.3.6 下载开发推送证书


      1.3.6 下载开发推送证书
      1.3.7 已经可以进行推送测试


      1.3.7 已经可以进行测试推送
      1.4 生成开发所需的P12证书
      1.4.1 双击开发推送证书


      1.4.1 双击开发推送证书
      1.4.2 右击多出的证书


      1.4.2 右击多出的证书
      1.4.3 右键并导出


      1.4.3 右键并导出
      1.4.4 存储


      1.4.4 存储
      1.4.5 设置生产P12证书的密码 1.4.5 设置生产P12证书的密码
      1.4.6 输入开机密码 1.4.6 输入开机密码
      1.5 生成生产cer证书
      1.5.1 开始创建生产推送证书


      1.5.1 开始创建生产推送证书
      1.5.2 选择生产推送证书


      1.5.2 选择生产推送证书
      1.5.3 提示选择CSR


      1.5.3 提示选择CSR
      1.5.4 选定CSR证书请求文件


      1.5.4 选定CSR证书请求文件
      1.5.5 下载生产证书


      1.5.5 下载生产证书
      1.5.6 两个证书都配置完毕


      1.5.6 两个证书都配置完毕
      1.6 生成生产所需的P12证书
      1.6.1 双击生产推送证书


      1.6.1 双击生产推送证书
      1.6.2 右击多出的证书


      1.6.2 右击多出的证书
      1.6.3 右键并导出.png


      1.6.3 右键并导出.png
      1.6.4 存储


      1.6.4 存储
      1.6.5 设置生产P12证书的密码 1.6.5 设置生产P12证书的密码
      1.6.6 输入开机密码 1.6.6 输入开机密码
      1.7 生成Provisioning Profile配置文件
      1.7.1 开始生成配置文件


      1.7.1 开始生成配置文件
      1.7.2 选择


      1.7.2 选择
      1.7.3 选择Bundle Identifier


      1.7.3 选择Bundle Identifier
      1.7.4 选择真机调试证书


      1.7.4 选择真机调试证书
      1.7.5 创建Devices(需要注意的是如果在创建Provisioning Prifile文件之前没有创建调试设备的话,这里接着创建的话,创建完成的时候需要从1.7.1开始重来到1.7.4的步骤。当然,如果第一次操作,肯定是这样的顺序,我没单独分一个模块,就是想让后来者也能经历一下这个顺序)


      1.7.5 创建Devices
      1.7.6 填写调试设备的Name和UDID


      1.7.6 填写调试设备的Name和UDID
      1.7.7 获取设备的UDID

      1.7.7 获取设备的UDID
      1.7.8 接着1.7.4选择新创建的调试设备 1.7.8 接着1.7.4选择新创建的调试设备
      1.7.9 给配置文件起个名字


      1.7.9 给配置文件起个名字
      1.7.10 下载配置好的配置文件


      1.7.10 下载配置好的配置文件
      (阿西吧,该死的证书终于整理完毕,累死 :baby::baby: 宝宝了)
      2.配置项目,包括:
      2.1 极光推送上创建应用
      2.1.1 登录极光账号


      2.1.1 登录极光账号
      2.1.2 创建一个应用


      2.1.2 创建一个应用
      2.1.3 上传P12证书


      2.1.3 上传P12证书
      2.1.4 创建成功 2.1.4 创建成功
      2.2 下载SDK,导入到Xcode的项目中
      2.2.1 下载JPushSDK


      2.2.1 下载JPushSDK
      2.2.2 将SDK导入到项目中


      2.2.2 将SDK导入到项目中
      2.3 导入必要框架
      2.3.1 开始添加框架


      2.3.1 开始添加框架
      2.3.2 添加完毕


      2.3.2 添加完毕
      2.4 配置PushConfig.plist文件
      2.4.1 创建新的文件


      2.4.1 创建新的文件
      2.4.2 选择Property List,并命名为Push Config


      2.4.2 选择Property List
      2.4.3 配置三条信息


      2.4.3 配置三条信息
      在你的工程中创建一个新的Property List文件,并将其命名为PushConfig.plist,文件所含字段如下:CHANNEL指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义,如:App Store。
      APP_KEY填写管理Portal上创建应用1后自动生成的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.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 *)applicationdidFinishLaunchingWithOptions:(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 *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(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.1 双击PP证书
    2.7.2 同意加入到iPhone配置实用工具


    2.7.2 同意加入到iPhone配置实用工具
    2.7.3 设置Code Signing


    2.7.3 设置Code Signing
    3.极光推送平台发送通知
    3.1 应用在后台的情况下发送通知
    3.1.1 登录极光平台


    3.1.1 登录极光平台
    3.1.2 点击通知


    3.1.2 点击通知
    3.1.3 输入内容发送通知


    3.1.3 输入内容发送通知
    3.1.4 通知结果


    3.1.4 通知结果
    3.2 使用第三方在应用active状态下获取通知
    这个使用的是标哥的处理方法,传送门.标哥讲的很好,我就不画蛇添足了。3.2.1 active通知显示


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

    相关文章

      网友评论

      • 刘波_ecae:第一步测试证书显示满了,该怎么办啊?
      • 超_iOS:发布应用需要单独生成发布证书么>?还是直接用发布推送证书就可以?
      • Joe_lisa:我今天试过,用Code Signing 里面Debug 选择Apple Code Signing Certication Authority,
        any iOS SDK 选择iOS Developer
        Release Apple Code Signing Certication Authority
        any iOS SDK 选择iOS Developer
        Provisioning Profile Automatic 能打包spa ,但是不知道到底是不是证书已经打包进去了
      • Joe_lisa:2.7.1 双击PP证书(灰常重要,如果没有这个证书,那你要头疼了,谁试谁知道) 点击不动,就闪动一下,不知道是怎么回事
        Joe_lisa:并且在Code Signing 里面 Debug 里面我选择的Apple Code Signing Certication Autority,在any iossSDK ,如果选择Apple Code Signing Certication Autority,选择这就会报错,另外Realse 这边和上面一样

        Provisioning Profile 里面,就没有证书显示显示的,只有一行自动(Automatic),以及other,如果这样的话,说明还是找不到呀
        Joe_lisa:但是Provisioning Profile 里面,就没有证书显示显示的,只有一行自动(Automatic),以及other,如果这样的话,说明还是找不到呀
        hx永恒之恋: @Joe_lisa 打开工程后,点击闪动一下就OK了。有的电脑不需要手动进行同意2.7.2自动默认同意,你只需继续进行下一步2.7.3设置Code Signing即可。工程里已经安装上你的证书了,你找到它选择即可
      • 我的大名叫小爱:没有开发者账号岂不是啥也做不了
        iOS_:你试过了吗 没有开发者账号
        hx永恒之恋:@我的大名叫小爱 这个我没有试过,我想应该可以做,这个应该是为了打包供所有测试机下载用的。不用证书的话,你就直接忽略证书相关操作和项目配置,只填写代码,数据线连接真机试试,去控制台发送通知试试。

      本文标题:极光推送(手把手教你)

      本文链接:https://www.haomeiwen.com/subject/stslyttx.html