(轉載)iOS 極光推送SDK 集成指南

iOS SDK 集成指南

使用提示

本文匹配的 SDK版本:r1.2.5 之後。ios

查看最近更新瞭解最新的SDK更新狀況。api

產品功能說明

極光推送(JPush)是一個端到端的推送服務,使得服務器端消息可以及時地推送到終端用戶手機上,讓開發者積極地保持與用戶的鏈接,從而提升用戶活躍度、提升應用的留存率。極光推送客戶端支持 Android, iOS 兩個平臺。服務器

本 iOS SDK 方便開發者基於 JPush 來快捷地爲 iOS App 增長推送功能,減小集成 APNs 須要的工做量、開發複雜度。app

主要功能
  • 爲 JPush Server 上報 Device Token,免除開發者管理 Device Token 的麻煩
  • 應用運行時,應用內 JPush 長鏈接能夠持續地收到推送消息
主要特色
  • 集成簡單
  • iOS SDK 集成後,服務器端向 iOS 設備推送簡單方便
集成壓縮包內容

包名爲JPush-iOS-SDK-[版本號]框架

  • lib文件夾:包含頭文件 APService.h,靜態庫文件 libPushSDK.a ,支持的iOS版本爲 5.0 及以上版本。(請注意:模擬器不能實現APNS)
  • pdf文件:開發指南
  • demo文件夾:示例

開發環境

  • 使用Xcode 6版本運行IOS8版本SDK,XCode 5運行非IOS 8版本SDK

SDK集成步驟

一、在JPush Portal上建立應用

  • 在JPush的管理Portal上 上傳證書並建立應用。若是對APNs證書不太瞭解 請參考 iOS 證書設置指南

 * 建立成功後自動生成 AppKey 用以標識該應用。 fetch

二、導入API開發包到應用程序項目

  • 將SDK包解壓,在XCode中選擇「Add files to 'Your project name'...」,將解壓後的lib子文件夾(包含APService.h、libPushSDK.a)添加到你的工程目錄中。

三、必要的框架

  • CFNetwork.framework
  • CoreFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • libz.dylib

四、Build Settings

  • 設置 Search Paths 下的 User Header Search Paths 和 Library Search Paths,好比SDK文件夾(默認爲lib)與工程文件在同一級目錄下,則都設置爲"$(SRCROOT)/[文件夾名稱]"便可。

五、建立並配置PushConfig.plist文件

在你的工程中建立一個新的Property List文件,並將其命名爲PushConfig.plist,填入Portal爲你的應用提供的APP_KEY等參數。ui

{ "APS_FOR_PRODUCTION" = "0"; "CHANNEL" = "Publish channel"; "APP_KEY" = "AppKey copied from JPush Portal application"; }
  • CHANNEL 
  • 指明應用程序包的下載渠道,爲方便分渠道統計。根據你的需求自行定義便可。
  • APP_KEY 
  • 在管理Portal上建立應用時自動生成的(AppKey)用以標識該應用。請確保應用內配置的 AppKey 與第1步在 Portal 上建立應用時生成的 AppKey 一致,AppKey 能夠在應用詳情中查詢。

  • APS_FOR_PRODUCTION 
  • 1.3.1版本新增,表示應用是否採用生產證書發佈( Ad_Hoc 或 APP Store ),0 (默認值)表示採用的是開發者證書,1 表示採用生產證書發佈應用。
  • 此處設置的值建議按對應證書來設置值。
  • 在1.2.2或以前版本的配置文件中,有 TEST_MODE 這個鍵,新版的SDK再也不使用,能夠將它刪除。

六、添加代碼

API

APIs 主要集中在 APService 接口類裏。spa

@interface APService : NSObject // init Push + (void)setupWithOption:(NSDictionary *)launchingOption; // register notification type + (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types; // upload device token + (void)registerDeviceToken:(NSData *)deviceToken; // handle notification recieved + (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
調用代碼

監聽系統事件,相應地調用 JPush SDK 提供的 API 來實現功能。代理

如下 3 個事件監聽與調用 JPush SDK API 都是必須的。請直接複製以下代碼塊裏,註釋爲 "Required" 的行,到你的應用程序代理類裏相應的監聽方法裏。code

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required 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]; } // Required [APService setupWithOption:launchOptions]; return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [APService registerDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required [APService handleRemoteNotification:userInfo]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [APService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); }
監聽通知

API裏面提供了下面 5 種類型的通知:

extern NSString * const kJPFNetworkDidSetupNotification; // 創建鏈接

extern NSString * const kJPFNetworkDidCloseNotification; // 關閉鏈接

extern NSString * const kJPFNetworkDidRegisterNotification; // 註冊成功

extern NSString * const kJPFNetworkDidLoginNotification; // 登陸成功

extern NSString * const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)

其中,kJPFNetworkDidReceiveMessageNotification通知是有傳遞數據的,能夠經過NSNotification中的userInfo方法獲取,包括標題、內容、內容類型、擴展信息等

相關文章
相關標籤/搜索