美文网首页
JPush(极光推送)

JPush(极光推送)

作者: 温暖C | 来源:发表于2016-06-13 18:16 被阅读249次

    一、简介

    现在有很多解决远程推送的三方库,比如百度推送、极光推送等,集成它们的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.注册账号,创建应用

    2.填写iOS app的必要信息

    注意:生成的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(极光推送)

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