JPush(极光推送)

一、简介

现在有很多解决远程推送的三方库,比如百度推送、极光推送等,集成它们的API步骤都类似,下面我就给大家介绍一下JPush集成。
1.JPush是一套解决远程推送的三方库,支持android和iOS两个平台;它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度。
2.更多的信息,可以参考JPush官方网站:https://www.jpush.cn
3.集成iOS SDK的步骤可以参考:
http://docs.jpush.cn/pages/viewpage.action?pageId=2621727

二、集成步骤

1.注册账号,创建应用

JPush(极光推送)_第1张图片

2.填写iOS app的必要信息

JPush(极光推送)_第2张图片

注意:生成的CER证书是与电脑关联的证书,在其他的电脑上是不能使用的,只能在注册的制定的电脑上使用;在极光推送的iOS开发证书和iOS生产证书必须是p12格式的交换证书

3.点击创建我的应用

4.将API开发包导入到引用程序中
将SDK包解压,在XCode中选择“Add files to 'Your project name'...”,将解压后的lib子文件夹(包含APService.h、libPushSDK.a)添加到你的工程目录中。

5.导入必要的框架
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
libz.dylib
注意:虽然从XCode5开始用到系统自带的框架不用导入,但是如果在静态库中用得框架,还是必须要导入,不然就会报错。

6.创建并配置PushConfig.plist文件
在你的工程中创建一个新的Property List文件,并将其命名为PushConfig.plist,填入Portal为你的应用提供的APP_KEY等参数。

7.调用代码
导入
#import "APService.h"


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 // Override point for customization after application launch.

   // Required
 #if
__IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
        //可以添加自定义categories
        [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound |UIUserNotificationTypeAlert) categories:nil];
    } else {
        //categories 必须为nil
        [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)  categories:nil];
  }
#else
    //categories 必须为nil 
  [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];
#endif

    // Required
    [APService setupWithOption:launchOptions];
    return YES;
}

// 获取到deviceToken就会调用
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    // Required
    // 传递获取到得deviceToken给Jpush,Jpush会自动帮我们管理deviceToken
    [APService registerDeviceToken:deviceToken];
} 

/*
 在iOS7以前, 只要程序在前台或者后台接收到远程推送过来的通知就会调用
 */
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    // Required
    [APService handleRemoteNotification:userInfo];
}
// iOS7以后调用
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    // IOS 7 Support Required
    [APService handleRemoteNotification:userInfo];
    // 每次处理完推送过来的通知, 都"必须"告诉系统是否处理成功
    // 1.方便程序在后台更新数据
    // 2.系统会更具状态判断是否处理成功
    completionHandler(UIBackgroundFetchResultNewData);
}

注意:
API里面提供了下面 5 种类型的通知:

 // 建立连接
extern NSString* const kJPFNetworkDidSetupNotification; 
       
// 关闭连接
extern NSString * const kJPFNetworkDidCloseNotification; 
       
// 注册成功 
extern NSString * const kJPFNetworkDidRegisterNotification;
      
 // 登录成功
extern NSString * const kJPFNetworkDidLoginNotification; 
  
// 收到消息(非APNS)
extern NSString * const kJPFNetworkDidReceiveMessageNotification; 

其中,kJPFNetworkDidReceiveMessageNotification通知是有传递数据的,可以通过NSNotification中的userInfo方法获取,包括标题、内容、内容类型、扩展信息等

你可能感兴趣的:(JPush(极光推送))