1. 程式人生 > >項目實戰:iOS極光推送集成(30分鐘搞定)

項目實戰:iOS極光推送集成(30分鐘搞定)

adg append ati 技術分享 tro markdown ocs sym xcode

推送有非常多,如個推、友盟、融雲和極光等等。在這裏就講下怎樣使用極光推送。

主要內容是將官方文檔資料詳細匯總並一步一步集成到項目中,您也能夠直接去官方文檔閱覽。

極光推送SDK下載

直接打開官方文檔下載最新的SDK

極光網創建APP並上傳證書

一、制作推送證書和描寫敘述文件:須要註意要制作兩個證書,一個是測試證書,一個是公布證書,詳細看官方文檔截圖:點擊查看證書制作
直接看《iOS 證書 設置指南》其它的不用看了,廢話太多

二、在極光推送官網註冊你的APP吧。

bundle id要和你項目一直,假設是測試就選擇開發環境。上線後再切換下就能夠了;開發環境和生產環境的證書千萬別弄混了。是p12文件,還有password的。
技術分享

項目配置問題

1、直接將SDK中的lib目錄拖到項目中,裏面主要是兩個文件,.a靜態安裝包和.h文件。還有Demo中一個聲音文件要加入。
2、加入必要的框架

CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Adsupport.framework (獲取IDFA須要)

Xcode7須要的是libz.tbd;Xcode7下面版本號是libz.dylib

3、假設SDK是2.1.0後的,直接編譯,假設報錯,會有一個bitcode錯誤,直接到Build Settings 關閉 bitCode 選項;
假設還有報錯,看下是否是由於找不到.a的靜態庫。把靜態庫地址拖過去就能夠了。


技術分享

4、假設是老版本號的,SDK1.8.8創建並配置PushConfig.plist文件,如圖
技術分享
假設是最新的SDK,直接跳過了。直接忽視這條就能夠了

5、假設用的是Xcode7時,須要在App項目的plist手動加入下面key和值以支持http傳輸:

1.在Info.plist中加入NSAppTransportSecurity類型Dictionary。
2.在NSAppTransportSecurity下加入NSAllowsArbitraryLoads類型Boolean,值設為YES
註意:不是單元測試的info.plist

6、打開推送設置
技術分享
技術分享

7、打開xxx-info.plist的Bundle identifier項把上傳到JPush 控制臺的bundle id填寫進去:
技術分享

項目代碼

你也能夠直接在第一步的SDK中查看詳細的Demo。
在Appdelegate.h導入頭文件

#import <AdSupport/AdSupport.h>
#import "JPUSHService.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                          UIUserNotificationTypeSound |
                                                          UIUserNotificationTypeAlert)
                                              categories:nil];
    } else {

        [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                          UIRemoteNotificationTypeSound |
                                                          UIRemoteNotificationTypeAlert)
                                              categories:nil];
    }


    [JPUSHService setupWithOption:launchOptions appKey:JPushAPPKEY
                          channel:channel
                 apsForProduction:isProduction
            advertisingIdentifier:advertisingId];





}

setupWithOption 方法中須要的參數

appkey:註冊的APPkey,站點上找去吧
channel:隨便寫個字符串吧。也沒事
advertisingIdentifier:廣告標識符,(蘋果都廢棄了,這廝還要,哎)
apsForProduction:BOOL值,區分是開發環境還是測試環境

接下來是幾個回調函數設置下就能夠了

- (void)applicationDidEnterBackground:(UIApplication *)application {

   [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[application setApplicationIconBadgeNumber:0];
[application cancelAllLocalNotifications];
 }


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

    [JPUSHService registerDeviceToken:deviceToken];
    NSLog(@"%@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]);
}
- (void)application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}

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

    NSLog(@"8.0收到通知:%@",[self logDic:userInfo]);

    [JPUSHService handleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);

}


詳細API參考詳細版本號SDK。我的SDK是2.1.5,最新的哦!
completionHandlez作用主要是2個:
1、並依據傳遞的UIBackgroundFetchResult 參數記錄新數據是否可用
2、調用完畢的處理代碼時。應用的界面縮略圖會自己主動更新

測試推送

好了,你如今在真機跑下項目,然後就能夠去極光站點測試你的推送是否成功了(app在後臺或者鎖屏狀態下都能夠收到通知的)
技術分享

問題匯總

假設控制臺沒有打印出你的消息,說明你有問題了。
技術分享

不要急。看下官方的問題匯總吧,反正你依照上面做的,保證沒問題的哦,》》》》》》問題匯總

項目實戰:iOS極光推送集成(30分鐘搞定)