極光推送總結

weixin_34321977發表於2016-09-08

1-證書申請

證書指南官方連結
http://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/

2-工程配置

匯入SDK
將SDK包解壓,在Xcode中選擇“Add files to 'Your project name'...”,將解壓後的lib子資料夾(包含JPUSHService.h、jpush-ios-x.x.x.a)新增到你的工程目錄中。

新增Framework
    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,請不要新增)
    UserNotifications.framework(Xcode8及以上)

Build Settings

如果你的工程需要支援小於7.0的iOS系統,請到Build Settings 關閉 bitCode 選項,否則將無法正常編譯通過。

設定 Search Paths 下的 User Header Search Paths 和 Library Search Paths,比如SDK資料夾(預設為lib)與工程檔案在同一級目錄下,則都設定為"$(SRCROOT)/{靜態庫所在資料夾名稱}"即可。

2323089-3750d69aadc2c2e8.png
BABE5231-012B-4EE5-9E32-8EAF82BC3AE6.png

Capabilities

如使用Xcode8及以上環境開發,請開啟Application Target的Capabilities->Push Notifications選項,如圖:

2323089-4e5f6a4bb7328c7b.jpg
capabilities_intro.jpg

允許Xcode7支援Http傳輸方法

如果您使用的是2.1.9以後的版本則不需要配置此步驟如果用的是Xcode7或更新版本,需要在App專案的plist手動配置下key和值以支援http傳輸:

選擇1:根據域名配置
在專案的info.plist中新增一個Key:NSAppTransportSecurity,型別為字典型別。
然後給它新增一個NSExceptionDomains,型別為字典型別;
把需要的支援的域新增給NSExceptionDomains。其中jpush.cn作為Key,型別為字典型別。
每個域下面需要設定2個屬性:NSIncludesSubdomains、NSExceptionAllowsInsecureHTTPLoads。兩個屬性均為Boolean型別,值分別為YES、YES。

2323089-80771a046348b585.jpg
ios_http.jpg

選擇2:全域性配置

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict>

初始化程式碼
在AppDelegate.m中匯入#import "JPUSHService.h"
在以下方法中新增程式碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
#pragma mark --鐳射推送--
//    NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
//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
         // 如需繼續使用pushConfig.plist檔案宣告appKey等配置內容,
         請依舊使用[JPUSHService setupWithOption:launchOptions]方式初始化。
         [JPUSHService setupWithOption:launchOptions appKey:@"appKey"
                      channel:nil
             apsForProduction:FALSE  // FALSE開發環境下的測試,YES為生產環境下的測試
        advertisingIdentifier:nil];
}

// 請在AppDelegate.m實現該回撥方法並新增回撥方法中的程式碼

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

/// Required - 註冊 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}

通知

此時可前往極光控制檯傳送推送訊息

2323089-61b9afc44394e217.png
![2710157B-1519-4842-8A4F-1D082004208A.png](http://upload-images.jianshu.io/upload_images/2323089-47f78f55155edafa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

自定義訊息

如果需要應用接收自定義訊息,我們需要新增一個觀察者。
(自定義訊息是長連線需要應用在前臺,如果應用在後臺會儲存為離線)
在以下方法中新增觀察者

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

    NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self
                selector:@selector(networkDidReceiveMessage:)
                    name:kJPFNetworkDidReceiveMessageNotification
                  object:nil];
}

實現回撥

- (void)networkDidReceiveMessage:(NSNotification *)notification {
     NSLog(@"did receive messagr %@",notification);
}
2323089-6c239219c4ebc8fc.png
螢幕快照 2016-09-08 下午4.12.02.png

列印結果

2323089-a78da9b3c687c3a7.png
螢幕快照 2016-09-08 下午4.16.47.png

自定義訊息可以新增多個欄位,新增完成後點選立即傳送

2323089-6184c22bdb0c00ee.png
螢幕快照 2016-09-08 下午4.19.22.png

列印結果

2323089-564759a1c54a15db.png
螢幕快照 2016-09-08 下午4.19.45.png

如有疑問檢視官方教程
JPush iOS SDK 教程
連結: http://docs.jpush.io/client/ios_tutorials/

相關文章