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-阿里云