閱讀160 返回首頁    go 阿裏雲


iOS API介紹__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲

iOS SDK最新版本v1.9.1。

移動推送iOS Demo,點擊這裏

API索引:

1. CloudPushSDK接口

【注意】提供回調的接口均為異步執行。

1.1 基本信息獲取


打開調試日誌

  • 打開推送SDK日誌;
  • 測試時可選擇打開,App上線後建議關閉。
  1. + (void)turnOnDebug;

獲取SDK版本號

  • 版本號也可以在CloudPushSDK.h中查看。
返回
  • SDK版本號。
  1. + (NSString *)getVersion;

獲取推送通道狀態

  • 查詢推送應用內通道狀態。
返回
  • 推送通道是否打開。
  1. + (BOOL)isChannelOpened;

獲取設備deviceId

  • deviceId為阿裏雲移動推送過程中對設備的唯一標識;
  • 推送通道正確打開後,可以獲取。
返回
  • 設備唯一標識deviceId。
  1. + (NSString *)getDeviceId;

1.2 賬號API


綁定賬號

  • 將應用內賬號和推送通道相關聯,可以實現按賬號的定點消息推送;
  • 設備隻能綁定一個賬號,更換綁定賬號時無需進行解綁,重新調用綁定賬號接口即可生效;
  • 若業務場景需要先解綁後綁定,在解綁賬號成功回調中進行綁定綁定操作,以此保證執行的順序性;
  • 賬戶名設置支持32字節。
參數
  • account 綁定賬號名
  • callback 回調
  1. + (void)bindAccount:(NSString *)account
  2. withCallback:(CallbackHandler)callback;

解綁賬號

  • 將應用內賬號和推送通道取消關聯。
參數
  • callback 回調
  1. + (void)unbindAccount:(CallbackHandler)callback;

1.3 標簽API


綁定標簽

  • 綁定標簽到指定目標;
  • 支持向設備、賬號和別名綁定標簽,綁定類型由參數target指定;
  • 綁定標簽後,第二天服務端可按該標簽推送,即(T + 1)天生效;
  • App最多支持綁定128個標簽【請謹慎使用,避免標簽綁定達到上限】,單個標簽最大支持40字節。
參數
  • target 目標類型,1:本設備;2:本設備綁定賬號;3:別名
  • tags 標簽(數組輸入)
  • alias 別名(僅當target = 3時生效)
  • callback 回調
  1. + (void)bindTag:(int)target
  2. withTags:(NSArray *)tags
  3. withAlias:(NSString *)alias
  4. withCallback:(CallbackHandler)callback;

解綁標簽

  • 解綁指定目標標簽;
  • 支持解綁設備、賬號和別名標簽,解綁類型由參數target指定;
  • 解綁標簽後,當天服務端可繼續按該標簽推送,解綁生效時間在第二天,即(T + 1)天生效;
  • 解綁標簽不等同於刪除標簽,目前不支持標簽的刪除。
參數
  • target 目標類型,1:本設備;2:本設備綁定賬號;3:別名
  • tags 標簽(數組輸入)
  • alias 別名(僅當target = 3時生效)
  • callback 回調
  1. + (void)unbindTag:(int)target
  2. withTags:(NSArray *)tags
  3. withAlias:(NSString *)alias
  4. withCallback:(CallbackHandler)callback;

查詢標簽

  • 查詢目標綁定標簽,當前僅支持查詢設備標簽;
  • 查詢結果可從callback的data中獲取;
  • 標簽綁定成功後即可查詢。
參數
  • target 目標類型,1:本設備
  • callback 回調
  1. + (void)listTags:(int)target
  2. withCallback:(CallbackHandler)callback;

1.4 別名API


添加別名

  • 設備添加別名;
  • 單個設備最多添加128個別名,且同一別名最多添加到128個設備;
  • 別名支持128字節。
參數
  • alias 別名
  • callback 回調
  1. + (void)addAlias:(NSString *)alias
  2. withCallback:(CallbackHandler)callback;

刪除別名

  • 刪除設備別名;
  • 支持刪除指定別名和刪除全部別名(alias為nil or length = 0)。
參數
  • alias 別名(alias為nil or length = 0時,刪除設備全部別名)
  • callback 回調
  1. + (void)removeAlias:(NSString *)alias
  2. withCallback:(CallbackHandler)callback;

查詢別名

  • 查詢設備別名;
  • 查詢結果可從callback的data中獲取。
參數
  • callback 回調
  1. + (void)listAliases:(CallbackHandler)callback;

1.5 deviceToken API


上報設備deviceToken

  • 向阿裏雲推送注冊該設備的deviceToken;
  • 可在APNs注冊成功回調中調用該接口。
參數
  • deviceToken 蘋果APNs服務器返回的deviceToken
  • callback 回調
  1. + (void)registerDevice:(NSData *)deviceToken
  2. withCallback:(CallbackHandler)callback;

獲取設備deviceToken

  • 返回獲取APNs返回的deviceToken;
  • 調用registerDevice()接口後可獲取。
返回
  • 設備deviceToken。
  1. + (NSString *)getApnsDeviceToken;

1.6 通知上報API


上報“通知點擊事件”

  • 上報“通知點擊事件”ACK到推送服務器;
  • 用於替換SDK v1.8.1之前的handleLaunching:handleReceiveRemoteNotification:上報接口;
參數
  • userInfo 通知payload
  1. + (void)sendNotificationAck:(NSDictionary *)userInfo;

上報“通知點擊事件”(App處於關閉狀態)(Deprecated from v1.8.1)

  • 上報“通知點擊事件”到推送服務器;
  • 點擊通知將App從關閉狀態拉起時,在didFinishLaunchingWithOptions回調中調用該接口。
參數
  • launchOptions didFinishLaunchingWithOptions 回調中的launchOptions參數
  1. + (void)handleLaunching:(NSDictionary *)launchOptions;

上報“通知點擊事件”(App處於打開狀態)(Deprecated from v1.8.1)

  • 上報“通知點擊事件”到推送服務器;
  • App處於打開狀態(前台 or 後台),在didReceiveRemoteNotification回調中調用該接口;
  • App處於前台,通知不彈窗,直接觸發回調;App處於後台,通知彈窗並觸發回調。
參數
  • userInfo didReceiveRemoteNotification回調中的參數userInfo
  1. + (void)handleReceiveRemoteNotification:(NSDictionary *)userInfo;

2. 推送通道監聽接口

2.1 監聽推送通道建立

  • 通知中心注冊事件名為CCPDidChannelConnectedSuccess的廣播監聽;
  • 推送通道成功建立後,發出事件名為CCPDidChannelConnectedSuccess的廣播通知。
  1. - (void)listenerOnChannelOpened {
  2. [[NSNotificationCenter defaultCenter] addObserver:self
  3. selector:@selector(onChannelOpened:)
  4. name:@"CCPDidChannelConnectedSuccess"
  5. object:nil];
  6. }
  7. // 通道打開通知
  8. - (void)onChannelOpened:(NSNotification *)notification {
  9. }

2.2 消息接收監聽

  • 通知中心注冊事件名為CCPDidReceiveMessageNotification的廣播監聽;
  • 推送通道成功建立後,發出事件名為CCPDidReceiveMessageNotification的廣播通知。
  1. - (void) registerMessageReceive {
  2. [[NSNotificationCenter defaultCenter] addObserver:self
  3. selector:@selector(onMessageReceived:)
  4. name:@"CCPDidReceiveMessageNotification"
  5. object:nil];
  6. }
  7. - (void)onMessageReceived:(NSNotification *)notification {
  8. CCPSysMessage *message = [notification object];
  9. NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding];
  10. NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding];
  11. NSLog(@"Receive message title: %@, content: %@.", title, body);
  12. }

2.3 通知打開監聽

iOS 10+

  • App處於前台收到通知;
  1. /**
  2. * 處理iOS 10通知(iOS 10+)
  3. */
  4. - (void)handleiOS10Notification:(UNNotification *)notification {
  5. UNNotificationRequest *request = notification.request;
  6. UNNotificationContent *content = request.content;
  7. NSDictionary *userInfo = content.userInfo;
  8. // 通知時間
  9. NSDate *noticeDate = notification.date;
  10. // 標題
  11. NSString *title = content.title;
  12. // 副標題
  13. NSString *subtitle = content.subtitle;
  14. // 內容
  15. NSString *body = content.body;
  16. // 角標
  17. int badge = [content.badge intValue];
  18. // 取得通知自定義字段內容,例:獲取key為"Extras"的內容
  19. NSString *extras = [userInfo valueForKey:@"Extras"];
  20. // 通知打開回執上報
  21. [CloudPushSDK sendNotificationAck:userInfo];
  22. NSLog(@"Notification, date: %@, title: %@, subtitle: %@, body: %@, badge: %d, extras: %@.", noticeDate, title, subtitle, body, badge, extras);
  23. }
  24. /**
  25. * App處於前台時收到通知(iOS 10+)
  26. */
  27. - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
  28. NSLog(@"Receive a notification in foregound.");
  29. // 處理iOS 10通知相關字段信息
  30. [self handleiOS10Notification:notification];
  31. // 通知不彈出
  32. //completionHandler(UNNotificationPresentationOptionNone);
  33. // 通知彈出,且帶有聲音、內容和角標(App處於前台時不建議彈出通知)
  34. completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert | UNNotificationPresentationOptionBadge);
  35. }
  • 觸發通知動作時回調,比如點擊、刪除通知和點擊自定義action(iOS 10+);
  1. /**
  2. * 觸發通知動作時回調,比如點擊、刪除通知和點擊自定義action(iOS 10+)
  3. */
  4. - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
  5. NSString *userAction = response.actionIdentifier;
  6. // 點擊通知打開
  7. if ([userAction isEqualToString:UNNotificationDefaultActionIdentifier]) {
  8. NSLog(@"User opened the notification.");
  9. // 處理iOS 10通知,並上報通知打開回執
  10. [self handleiOS10Notification:response.notification];
  11. }
  12. // 通知dismiss,category創建時傳入UNNotificationCategoryOptionCustomDismissAction才可以觸發
  13. if ([userAction isEqualToString:UNNotificationDismissActionIdentifier]) {
  14. NSLog(@"User dismissed the notification.");
  15. }
  16. NSString *customAction1 = @"action1";
  17. NSString *customAction2 = @"action2";
  18. // 點擊用戶自定義Action1
  19. if ([userAction isEqualToString:customAction1]) {
  20. NSLog(@"User custom action1.");
  21. }
  22. // 點擊用戶自定義Action2
  23. if ([userAction isEqualToString:customAction2]) {
  24. NSLog(@"User custom action2.");
  25. }
  26. completionHandler();
  27. }

iOS 10以下版本

  • App處於關閉狀態時,點擊打開通知;
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2. // 點擊通知將App從關閉狀態啟動時,將通知打開回執上報
  3. // [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1)
  4. [CloudPushSDK sendNotificationAck:launchOptions];
  5. return YES;
  6. }
  • App處於打開狀態時,點擊打開通知;
  1. - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
  2. NSLog(@"Receive one notification.");
  3. // 取得APNS通知內容
  4. NSDictionary *aps = [userInfo valueForKey:@"aps"];
  5. // 內容
  6. NSString *content = [aps valueForKey:@"alert"];
  7. // badge數量
  8. NSInteger badge = [[aps valueForKey:@"badge"] integerValue];
  9. // 播放聲音
  10. NSString *sound = [aps valueForKey:@"sound"];
  11. // 取得Extras字段內容
  12. NSString *Extras = [userInfo valueForKey:@"Extras"]; //服務端中Extras字段,key是自己定義的
  13. NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);
  14. // iOS badge 清0
  15. application.applicationIconBadgeNumber = 0;
  16. // 通知打開回執上報
  17. // [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1)
  18. [CloudPushSDK sendNotificationAck:userInfo];
  19. }

最後更新:2016-12-15 18:25:51

  上一篇:go iOS SDK配置__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲
  下一篇:go iOS靜默通知__iOS SDK手冊_App SDK 手冊_移動推送-阿裏雲