160
阿裏雲
iOS API介紹__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
iOS SDK最新版本v1.9.1。
移動推送iOS Demo,點擊這裏。
API索引:
1. CloudPushSDK接口
【注意】提供回調的接口均為異步執行。
1.1 基本信息獲取
打開調試日誌
- 打開推送SDK日誌;
- 測試時可選擇打開,App上線後建議關閉。
+ (void)turnOnDebug;
獲取SDK版本號
- 版本號也可以在
CloudPushSDK.h
中查看。
返回
- SDK版本號。
+ (NSString *)getVersion;
獲取推送通道狀態
- 查詢推送應用內通道狀態。
返回
- 推送通道是否打開。
+ (BOOL)isChannelOpened;
獲取設備deviceId
- deviceId為阿裏雲移動推送過程中對設備的唯一標識;
- 推送通道正確打開後,可以獲取。
返回
- 設備唯一標識deviceId。
+ (NSString *)getDeviceId;
1.2 賬號API
綁定賬號
- 將應用內賬號和推送通道相關聯,可以實現按賬號的定點消息推送;
- 設備隻能綁定一個賬號,更換綁定賬號時無需進行解綁,重新調用綁定賬號接口即可生效;
- 若業務場景需要先解綁後綁定,在解綁賬號成功回調中進行綁定綁定操作,以此保證執行的順序性;
- 賬戶名設置支持
32
字節。
參數
- account 綁定賬號名
- callback 回調
+ (void)bindAccount:(NSString *)account
withCallback:(CallbackHandler)callback;
解綁賬號
- 將應用內賬號和推送通道取消關聯。
參數
- callback 回調
+ (void)unbindAccount:(CallbackHandler)callback;
1.3 標簽API
綁定標簽
- 綁定標簽到指定目標;
- 支持向設備、賬號和別名綁定標簽,綁定類型由參數
target
指定; - 綁定標簽後,第二天服務端可按該標簽推送,即
(T + 1)
天生效; - App最多支持綁定
128
個標簽【請謹慎使用,避免標簽綁定達到上限】,單個標簽最大支持40
字節。
參數
- target 目標類型,1:本設備;2:本設備綁定賬號;3:別名
- tags 標簽(數組輸入)
- alias 別名(僅當target = 3時生效)
- callback 回調
+ (void)bindTag:(int)target
withTags:(NSArray *)tags
withAlias:(NSString *)alias
withCallback:(CallbackHandler)callback;
解綁標簽
- 解綁指定目標標簽;
- 支持解綁設備、賬號和別名標簽,解綁類型由參數target指定;
- 解綁標簽後,當天服務端可繼續按該標簽推送,解綁生效時間在第二天,即
(T + 1)
天生效; 解綁標簽
不等同於刪除標簽
,目前不支持標簽的刪除。
參數
- target 目標類型,1:本設備;2:本設備綁定賬號;3:別名
- tags 標簽(數組輸入)
- alias 別名(僅當target = 3時生效)
- callback 回調
+ (void)unbindTag:(int)target
withTags:(NSArray *)tags
withAlias:(NSString *)alias
withCallback:(CallbackHandler)callback;
查詢標簽
- 查詢目標綁定標簽,當前僅支持查詢設備標簽;
- 查詢結果可從callback的data中獲取;
- 標簽綁定成功後即可查詢。
參數
- target 目標類型,1:本設備
- callback 回調
+ (void)listTags:(int)target
withCallback:(CallbackHandler)callback;
1.4 別名API
添加別名
- 設備添加別名;
- 單個設備最多添加
128
個別名,且同一別名最多添加到128
個設備; - 別名支持
128
字節。
參數
- alias 別名
- callback 回調
+ (void)addAlias:(NSString *)alias
withCallback:(CallbackHandler)callback;
刪除別名
- 刪除設備別名;
- 支持刪除指定別名和刪除全部別名(alias為nil or length = 0)。
參數
- alias 別名(alias為nil or length = 0時,刪除設備全部別名)
- callback 回調
+ (void)removeAlias:(NSString *)alias
withCallback:(CallbackHandler)callback;
查詢別名
- 查詢設備別名;
- 查詢結果可從callback的data中獲取。
參數
- callback 回調
+ (void)listAliases:(CallbackHandler)callback;
1.5 deviceToken API
上報設備deviceToken
- 向阿裏雲推送注冊該設備的deviceToken;
- 可在APNs注冊成功回調中調用該接口。
參數
- deviceToken 蘋果APNs服務器返回的deviceToken
- callback 回調
+ (void)registerDevice:(NSData *)deviceToken
withCallback:(CallbackHandler)callback;
獲取設備deviceToken
- 返回獲取APNs返回的deviceToken;
- 調用
registerDevice()
接口後可獲取。
返回
- 設備deviceToken。
+ (NSString *)getApnsDeviceToken;
1.6 通知上報API
上報“通知點擊事件”
- 上報“通知點擊事件”ACK到推送服務器;
- 用於替換SDK v1.8.1之前的
handleLaunching:
和handleReceiveRemoteNotification:
上報接口;
參數
- userInfo 通知payload
+ (void)sendNotificationAck:(NSDictionary *)userInfo;
上報“通知點擊事件”(App處於關閉狀態)(Deprecated from v1.8.1
)
- 上報“通知點擊事件”到推送服務器;
- 點擊通知將App從關閉狀態拉起時,在
didFinishLaunchingWithOptions
回調中調用該接口。
參數
- launchOptions
didFinishLaunchingWithOptions
回調中的launchOptions
參數
+ (void)handleLaunching:(NSDictionary *)launchOptions;
上報“通知點擊事件”(App處於打開狀態)(Deprecated from v1.8.1
)
- 上報“通知點擊事件”到推送服務器;
- App處於打開狀態(前台 or 後台),在
didReceiveRemoteNotification
回調中調用該接口; - App處於前台,通知不彈窗,直接觸發回調;App處於後台,通知彈窗並觸發回調。
參數
- userInfo
didReceiveRemoteNotification
回調中的參數userInfo
+ (void)handleReceiveRemoteNotification:(NSDictionary *)userInfo;
2. 推送通道監聽接口
2.1 監聽推送通道建立
- 通知中心注冊事件名為
CCPDidChannelConnectedSuccess
的廣播監聽; - 推送通道成功建立後,發出事件名為
CCPDidChannelConnectedSuccess
的廣播通知。
- (void)listenerOnChannelOpened {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onChannelOpened:)
name:@"CCPDidChannelConnectedSuccess"
object:nil];
}
// 通道打開通知
- (void)onChannelOpened:(NSNotification *)notification {
}
2.2 消息接收監聽
- 通知中心注冊事件名為
CCPDidReceiveMessageNotification
的廣播監聽; - 推送通道成功建立後,發出事件名為
CCPDidReceiveMessageNotification
的廣播通知。
- (void) registerMessageReceive {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onMessageReceived:)
name:@"CCPDidReceiveMessageNotification"
object:nil];
}
- (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);
}
2.3 通知打開監聽
iOS 10+
- App處於前台收到通知;
/**
* 處理iOS 10通知(iOS 10+)
*/
- (void)handleiOS10Notification:(UNNotification *)notification {
UNNotificationRequest *request = notification.request;
UNNotificationContent *content = request.content;
NSDictionary *userInfo = content.userInfo;
// 通知時間
NSDate *noticeDate = notification.date;
// 標題
NSString *title = content.title;
// 副標題
NSString *subtitle = content.subtitle;
// 內容
NSString *body = content.body;
// 角標
int badge = [content.badge intValue];
// 取得通知自定義字段內容,例:獲取key為"Extras"的內容
NSString *extras = [userInfo valueForKey:@"Extras"];
// 通知打開回執上報
[CloudPushSDK sendNotificationAck:userInfo];
NSLog(@"Notification, date: %@, title: %@, subtitle: %@, body: %@, badge: %d, extras: %@.", noticeDate, title, subtitle, body, badge, extras);
}
/**
* App處於前台時收到通知(iOS 10+)
*/
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
NSLog(@"Receive a notification in foregound.");
// 處理iOS 10通知相關字段信息
[self handleiOS10Notification:notification];
// 通知不彈出
//completionHandler(UNNotificationPresentationOptionNone);
// 通知彈出,且帶有聲音、內容和角標(App處於前台時不建議彈出通知)
completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge);
}
- 觸發通知動作時回調,比如點擊、刪除通知和點擊自定義action(iOS 10+);
/**
* 觸發通知動作時回調,比如點擊、刪除通知和點擊自定義action(iOS 10+)
*/
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
NSString *userAction = response.actionIdentifier;
// 點擊通知打開
if ([userAction isEqualToString:UNNotificationDefaultActionIdentifier]) {
NSLog(@"User opened the notification.");
// 處理iOS 10通知,並上報通知打開回執
[self handleiOS10Notification:response.notification];
}
// 通知dismiss,category創建時傳入UNNotificationCategoryOptionCustomDismissAction才可以觸發
if ([userAction isEqualToString:UNNotificationDismissActionIdentifier]) {
NSLog(@"User dismissed the notification.");
}
NSString *customAction1 = @"action1";
NSString *customAction2 = @"action2";
// 點擊用戶自定義Action1
if ([userAction isEqualToString:customAction1]) {
NSLog(@"User custom action1.");
}
// 點擊用戶自定義Action2
if ([userAction isEqualToString:customAction2]) {
NSLog(@"User custom action2.");
}
completionHandler();
}
iOS 10以下版本
- App處於關閉狀態時,點擊打開通知;
- (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:51
上一篇:
iOS SDK配置__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
下一篇:
iOS靜默通知__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
OssDemo簡介__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲
阿裏雲棲大會上 “達摩院”吸睛了!
多任務__操作指南_批量計算-阿裏雲
JobInstance__數據類型_API參考_E-MapReduce-阿裏雲
調用說明__附錄_API文檔_雲解析-阿裏雲
GetRange__API 概覽_API 參考_表格存儲-阿裏雲
管理生命周期__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲
阿裏雲協助警方破案,抓獲多名網絡犯罪份子
批量操作表__管理表_數據庫開發_用戶指南(RDBMS)_數據管理-阿裏雲
技術優勢對比__快照_產品簡介_雲服務器 ECS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲