項目實戰:iOS極光推送集成(30分鐘搞定)
推送有非常多,如個推、友盟、融雲和極光等等。在這裏就講下怎樣使用極光推送。
主要內容是將官方文檔資料詳細匯總並一步一步集成到項目中,您也能夠直接去官方文檔閱覽。
極光推送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分鐘搞定)