iOS SDK配置__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
- 使用前必讀:移動推送名詞解釋&約束
1. 創建應用
到阿裏雲移動推送控製台創建應用,應用創建完成後,進入移動推送相關模塊進行設置,具體操作請參見 創建APP。
- iOS應用推送需配置開發環境/生產環境推送證書,具體可參見iOS推送證書設置。
2. SDK下載和集成
2.1 SDK下載
- 在移動推送控製台進行SDK下載;
2.2 SDK引用說明
2.2.1 公共包依賴
- libz.tbd
- libresolv.tbd
- CoreTelephony.framework
- SystemConfiguration.framework
- libsqlite3.tbd(阿裏雲平台下載的SDK無需依賴,百川平台下載的SDK需要依賴)
2.2.2 SDK目錄結構
- CloudPushSDK.framework
- AlicloudUtils.framework
- UTDID.framework
- UTMini.framework(阿裏雲平台下載的SDK無需依賴,百川平台下載的SDK需要依賴)
2.2.3 引入Framework
- Xcode中,直接把下載SDK目錄中的framework拖入對應Target下即可,在彈出框勾選
Copy items if needed
。 - 在
Build Phases -> Link Binary With Libraries
中,引入2.2.1列出的公共包;
2.2.4 工程引入頭文件
#import <CloudPushSDK/CloudPushSDK.h>
2.2.5 說明
- 應用的targets -> Build Settings -> Linking -> Other Linker Flags,請加上
-ObjC
這個屬性,否則推送服務無法正常使用
iOS 9引入了App Transport Security(ATS)機製,可參考App Transport Security(ATS)機製。 要求App內訪問的網絡必須使用HTTPS協議,現在阿裏移動推送使用的是HTTP安全的加簽訪問機製來保證安全,未使用HTTPS,所以解決方法如下:在工程的Info.plist中添加NSAppTransportSecurity
,添加後會自動轉變為App Transport Security Setting,右擊該選項選擇Show Raw Key/Values
,可顯示原本添加名;將該選項點擊鋪開(黑色三角指向下),右擊選擇Add Row
,會自動顯示ItemAllow Arbitrary Loads
,將Value值設為YES
;
- 移動推送iOS SDK已經完成ATS適配,請求都以HTTPS發出,無需在Info.plist中進行ATS配置。
3. Push SDK使用
- 請參照以下代碼完成SDK的初始化,其中appKey/appSecret的獲取參考創建App;
- (void)initCloudPush {
// SDK初始化
[CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {
if (res.success) {
NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]);
} else {
NSLog(@"Push SDK init failed, error: %@", res.error);
}
}];
}
- 向蘋果APNs注冊獲取deviceToken並上報到阿裏雲推送服務器;
/**
* 注冊蘋果推送,獲取deviceToken用於推送
*
* @param application
*/
- (void)registerAPNS:(UIApplication *)application {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
// iOS 8 Notifications
[application registerUserNotificationSettings:
[UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
categories:nil]];
[application registerForRemoteNotifications];
}
else {
// iOS < 8 Notifications
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
}
/*
* 蘋果推送注冊成功回調,將蘋果返回的deviceToken上傳到CloudPush服務器
*/
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) {
if (res.success) {
NSLog(@"Register deviceToken success.");
} else {
NSLog(@"Register deviceToken failed, error: %@", res.error);
}
}];
}
/*
* 蘋果推送注冊失敗回調
*/
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);
}
- 推送消息到來監聽;
/**
* 注冊推送消息到來監聽
*/
- (void)registerMessageReceive {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onMessageReceived:)
name:@"CCPDidReceiveMessageNotification"
object:nil];
}
/**
* 處理到來推送消息
*
* @param notification
*/
- (void)onMessageReceived:(NSNotification *)notification {
CCPSysMessage *message = [notification object];
NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding];
NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding];
NSLog(@"Receive message title: %@, content: %@.", title, body);
}
通知打開監聽
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 點擊通知將App從關閉狀態啟動時,將通知打開回執上報
// [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1)
[CloudPushSDK sendNotificationAck:launchOptions];
return YES;
}
/*
* App處於啟動狀態時,通知打開回調
*/
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
NSLog(@"Receive one notification.");
// 取得APNS通知內容
NSDictionary *aps = [userInfo valueForKey:@"aps"];
// 內容
NSString *content = [aps valueForKey:@"alert"];
// badge數量
NSInteger badge = [[aps valueForKey:@"badge"] integerValue];
// 播放聲音
NSString *sound = [aps valueForKey:@"sound"];
// 取得Extras字段內容
NSString *Extras = [userInfo valueForKey:@"Extras"]; //服務端中Extras字段,key是自己定義的
NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);
// iOS badge 清0
application.applicationIconBadgeNumber = 0;
// 通知打開回執上報
// [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1)
[CloudPushSDK sendNotificationAck:userInfo];
}
如果使用推送模塊,請參考移動推送常見問題
最後更新:2016-12-15 18:25:21
上一篇:
iOS推送證書設置__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
下一篇:
iOS API介紹__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
錯誤碼說明__調用方式_API參考手冊_開放搜索-阿裏雲
Java SDK實例程序__最佳實踐_歸檔存儲-阿裏雲
產品術語__產品簡介_數據集成-阿裏雲
查詢轉碼配置信息__直播流操作接口_API 手冊_CDN-阿裏雲
Linux可視化操作界麵__應用場景_產品簡介_數據管理-阿裏雲
公測開通指南___用戶手冊_雲服務總線 CSB-阿裏雲
院士潘建偉:阿裏雲與中科院聯合發布量子計算雲平台,計算能力有望躍升100萬倍
Check Point “飛天”阿裏雲 vSEC在雲棲大會閃亮登場
查詢API上綁定的流控策略__流量控製相關接口_API_API 網關-阿裏雲
雲服務器 ECS 雲服務器宕機排查
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲