JPush推送服务集成

最近在使用JPush来完成公司的iOS App的推送需求,虽然没多难得东西,但这一路过来也是磕磕绊绊,在此记录下过程希望能为更多首次使用JPush的同行朋友有些帮助,也是对自己的一个备忘.


一.构建工程集成JPush SDK

1.1 建立工程

  建立一个Xcode工程设置,设置iOS 9 HTTPS的适配,

Info.plist文件添加设置如下:

Property List 形式:


Source Code 形式:

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>



1.2 导入SDK

在Podfile中添加 pod 'JPush' 使用Cocopods将JPush导入工程.并将必要的依赖库引入

必要的框架

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
  • Adsupport.framework (获取IDFA需要;如果不使用IDFA,请不要添加)

二.创建JPush账号,添加相关代码

2.1 创建JPush账号

2.2 获取应用信息中的AppKey

2.3 插入相关代码


I.注册远程通知

AppDelegate.m 中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中注册远程通知

   //-- Set Notification

    if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])

    {

        // iOS 8 Notifications

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:

                                                UIUserNotificationTypeAlert |

                                                UIUserNotificationTypeBadge |

                                                UIUserNotificationTypeSound

                                                                                 categories:nil];

        [application registerUserNotificationSettings:settings];

        [application registerForRemoteNotifications];

    }

    else

    {

        // iOS < 8 Notifications

        [application registerForRemoteNotificationTypes:

         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];

    }

II.注册JPush

    [JPUSHService setupWithOption:launchOptions appKey:@"JPush应用信息里的AppKey" channel:nil apsForProduction:0];

apsForProduction参数0表示开发环境,1表示生产环境



III.上传DeviceToken到JPush,失败回调.


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    NSLog(@"DEVICE TOKEN IS %@",deviceToken);

    [JPUSHService registerDeviceToken:deviceToken];

}



- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

{

  NSLog(@"Register fail error  = %@",error);

}



IV.推送内容获取处理
首先我们的App在iOS设备上有三种状态
a.未运行状态
b.后台运行状态
c.前台运行状态

在未运行状态下,设备收到远程推送后会执行的方法是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

// 远程推送来的内容也就是userInfo.

        NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];


在未运行状态下,设备收到远程推送后会执行的方法是


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

userInfo就是远程推送的内容.

关于这两个方法有什么不同请参看 http://blog.csdn.net/gang544043963/article/details/50461903


关于代码的设置到这里基本差不多了,要更多处理的是拿到通知内容后做的一些事儿.那个就是因人而异了.

三. 证书的处理

3.1  登陆 Apple开发者中心 -> Account ->  Certificates, Identifiers & Profiles -> 左侧 Identifiers -> App IDs , 新建一个App ID或选择已有的.

新建时Push Notification勾不勾选都可,后期还可以Edit.
开启Push Notification后,来申请推送证书,如图对应的位置分别是申请开发和发布证书的位置(开发和发布证书的申请流程一样,以开发为例),点击Create Certificate...-> Continue ->Choose File...
这是需要用过本机的钥匙串应用,来创建一个空白证书.



钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书 -> (填邮箱)存储到磁盘.








我们回到刚才的网页Choose File 选择刚刚创建的空白证书 -> Continue -> DownLoad,这样就获得了针对该应用的推送证书.






双击刚刚下载的推送证书(aps_development.cer(开发证书),aps.cer(发布证书)),跳转到钥匙串应用.没跳转就自己打开,右键此证书导出,获得一个.p12文件
密码自己设置(不能忘,后面会用到).





到这里证书的处理就告一段落了,JPush不需要再额外将p12文件导出为pem,证书导出PEM,再将两个PEM与起初申请用的空白证书合并成一个p12,所以我们直接用这个证书导出的p12文件就可以.

3.2 登陆 JPush官网 -> 控制台 -> 设置 -> 修改应用 -> 选择对应环境(开发 | 生产)上传证书并输入之前生成p12文件时设置的密码 -> 保存,到这里JPush的设置也完成了.


四. 开始调试


这里要注意,推送是不可以在模拟器上进行测试的,但是在真机上运行后发现后报出一个缺少描述文件的错误,这里是有由于推送除了证书外,在测试和打包上传时也要有对应的描述文件.

所以,我们再次登陆 Apple开发者中心 -> Account ->  Certificates, Identifiers & Profiles -> 左侧 Provisioning Profiles(选择对应的环境 开发 | 发布)
然后点击右上角的 " + "新建一个描述文件 ->选择对应环境 -> 对应的App ID -> 对应的证书 -> 对应的设备 -> 填描述文件名 -> DownLoad
双击描述文件










描述文件弄好后,我们回到工程 

工程左上角的工程名图标 -> Build Settings -> 搜索Code Signing,按照如下设置
然后运行到移动设备上.登陆 JPush官网 -> 控制台 -> 推送 -> 编辑内容 -> 选择对应环境 -> 发送推送 -> 查看效果.








到此JPush的集成就结束了,文章中有那些错误或不足之处还请批评指正.

Thanks!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值