初始化 YunBa SDK。
+ (BOOL)setupWithAppkey:(NSString *)appkey;
+ (BOOL)setupWithAppkey:(NSString *)appkey option:(YBSetupOption *)option;
| 名称 | 类型 | 说明 |
|---|---|---|
| appkey | NSString* | YunBa 中注册的App ID |
| option | YBSetupOption* | 选项,可包含sub_key(用于获取订阅权限的密钥), pub_key(用于获取发布权限的密钥), sec_key(用于获取管理权限的密钥,切勿外泄), auth_key(用于access manager模块中权限管理的动态密钥) |
- (BOOL) : setup的结果,YES说明setup成功,开始尝试连接,否则说明setup失败,参数错误。
BOOL succ = [YunBaService setupWithAppkey:appkey option:option];
if (succ) {
NSLog(@"setup succ %@:%@", appkey, option);
} else {
NSLog(@"setup failed %@:%@", appkey, option);
}
}];
App 可以增加订阅一个Topic, 以便可以接收来自 Topic 的 Message。
`+ (void)subscribe:(NSString *)topic resultBlock:(YBResultBlock)resultBlock;`
`+ (void)subscribe:(NSString *)topic qos:(UInt8)qosLevel resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 订阅的的主题,topic 只支持英文数字下划线,长度不超过50个字符 |
| qosLevel | NSString* | 服务质量等级,具体参考服务质量等级说明 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService subscribe:topic qos:qosLevel resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"subscribe to topic succ: %@", topic);
} else {
NSLog(@"subscribe to topic failed due to : %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以取消订阅一个 Topic, 以便取消接收来自 Topic 的 Message.
`+ (void)unsubscribe:(NSString *)topic resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 取消订阅的的主题,topic 只支持英文数字下划线,长度不超过50个字符 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService unsubscribe:topic resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"unsubscribe to topic succ: %@", topic);
} else {
NSLog(@"unsubscribe to topic failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以向 Topic 发送消息, 那么任何订阅此 Topic 的 Client 都会接受到消息。
`+ (void)publish:(NSString *)topic data:(NSData *)data resultBlock:(YBResultBlock)resultBlock;`
`+ (void)publish:(NSString *)topic data:(NSData *)data option:(YBPublishOption *)option resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 发布消息的主题,只支持英文数字下划线,长度不超过50个字符 |
| data | NSData* | 向对应 topic 的订阅者发布的消息 |
| option | YBPublishOption* | 选项,可包含qos, retained等属性 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService publish:topic data:data option:option resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"publish to topic: %@ data: %@ succ", topic, data);
} else {
NSLog(@"publish to topic failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以向 Topic 发送消息, 那么任何订阅此 Topic 的 Client 都会接受到消息,此API可以带有其他参数,如APN选项等。
`+ (void)publish2:(NSString *)topic data:(NSData *)data resultBlock:(YBResultBlock)resultBlock;`
`+ (void)publish2:(NSString *)topic data:(NSData *)data option:(YBPublish2Option *)option resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 发布消息的主题,只支持英文数字下划线,长度不超过50个字符 |
| data | NSData* | 向对应 topic 的订阅者发布的消息 |
| option | YBPublish2Option* | 选项,可包含YBApnOption等属性 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService publish2:topic data:data option:option resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"publish2 to topic: %@ data: %@ succ", topic, data);
} else {
NSLog(@"publish2 to topic failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以向 alias 发送消息, 那么此别名的 Client 会接受到消息。
`+ (void)publishToAlias:(NSString *)alias data:(NSData *)data resultBlock:(YBResultBlock)resultBlock;`
`+ (void)publishToAlias:(NSString *)alias data:(NSData *)data option:(YBPublishOption *)option resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| alias | NSString* | 目标用户的别名,只支持英文数字下划线,长度不超过50个字符 |
| data | NSData* | 向对应 topic 的订阅者发布的消息 |
| option | YBPublishOption* | 选项,可包含qos, retained等属性 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService publishToAlias:alias data:data option:option resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"publish to alias: %@ data: %@ succ", alias, data);
} else {
NSLog(@"publish to alias failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以向 alias 发送消息, 那么此别名的 Client 会接受到消息。
`+ (void)publish2ToAlias:(NSString *)alias data:(NSData *)data option:(YBPublish2Option *)option resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| alias | NSString* | 目标用户的别名,只支持英文数字下划线,长度不超过50个字符 |
| data | NSData* | 向对应 topic 的订阅者发布的消息 |
| option | YBPublish2Option* | 选项,可包含YBApnOption等属性 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService publish2ToAlias:alias data:data option:option resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"publish2 to alias: %@ data: %@ succ", alias, data);
} else {
NSLog(@"publish2 to alias failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以订阅某个频道上的其他用户的上、下线及(取消)订阅频道的事件通知。
`+ (void)subscribePresence:(NSString *)topic resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 订阅的的目标用户所在频道主题,topic 只支持英文数字下划线,长度不超过50个字符 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService subscribePresence:topic resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"subscribe presence to topic:%@ succ", topic);
} else {
NSLog(@"subscribe presence failed due to : %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以取消订阅某个频道上的其他用户的上、下线及(取消)订阅频道的事件通知。
`+ (void)unsubscribePresence:(NSString *)topic resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | app 订阅的的目标用户所在频道主题,topic 只支持英文数字下划线,长度不超过50个字符 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService unsubscribePresenceToTopic:topic resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"unsubscribe presence to topic:%@ succ", topic);
} else {
NSLog(@"unsubscribe presence failed due to : %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以查询订阅某个频道的所有用户别名个数、列表及状态。
`+ (void)getAliasList:(NSString *)topic resultBlock:(YBArrayCountResultBlock)arrayCountResultBlock;`
`+ (void)getAliasList:(NSString *)topic disableState:(BOOL)disableState disableAlias:(BOOL)disableAlias resultBlock:(YBArrayCountResultBlock)arrayCountResultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| topic | NSString* | 目标频道 |
| disableState | BOOL | 结果是否排除别名状态信息 |
| disableAlias | BOOL | 结果是否排除别名列表。 |
| arrayCountResultBlock | YBArrayCountResultBlock | API 回调接口,可通过返回的error.code判断结果的成功与否,NSError *error获取错误原因,NSArray *resArray获取别名及状态列表,size_t resCount获取别名数量。 |
None
[YunBaService getAliasList:testTopic disableState:NO disableAlias:NO resultBlock:^(NSArray *resArray, size_t resCount, NSError *error) {
if (error.code == kYBErrorNoError) {
NSLog(@"get alias list[%@] of topic[%@] succ", res, testTopic);
} else {
NSLog(@"get alias list failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以查询用户订阅的频道列表。
`+ (void)getTopicList:(YBArrayResultBlock)stringResultBlock;`
`+ (void)getTopicList:(NSString *)alias resultBlock:(YBArrayResultBlock)arrayResultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| alias | NSString* | 目标用户别名 |
| arrayResultBlock | YBArrayResultBlock | API 回调接口,可通过返回的error.code判断结果的成功与否,NSError *error获取错误原因,NSArray *res获取频道列表 |
None
[YunBaService getTopicList:alias resultBlock:^(NSArray *res, NSError *error) {
if (error.code == kYBErrorNoError) {
NSLog(@"get topic list[%@] of alias[%@] succ", res, alias);
} else {
NSLog(@"get topic list failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以调用此函数来上报客户端的行为,如打开通知栏次数,按钮点击次数,资源下载成功等等行为。
`+ (void)report:(NSString *)action withData:(NSData *)data;`
| 名称 | 类型 | 说明 |
|---|---|---|
| action | NSString* | app 需要统计的行为,如打开通知栏,下载资源成功等等 |
| data | NSData * | 想对应 action 的附加数据,以满足统计相关的其他业务需求 |
None
[YunBaService report:action withData:data];
App 可以查询用户的在线状态。
`+ (void)getState:(NSString *)alias resultBlock:(YBStringResultBlock)stringResultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| alias | NSString* | 目标用户别名 |
| stringResultBlock | YBStringResultBlock | API 回调接口,可通过返回的error.code判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService getState:alias resultBlock:^(NSString *res, NSError *error) {
if (error.code == kYBErrorNoError) {
NSLog(@"get state[%@] of alias[%@] succ", res, alias);
} else {
NSLog(@"get state of alias failed due to: %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以调用此函数来绑定账号,用户名,每个用户只能指定一个别名。
`+ (void)setAlias:(NSString *)alias resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| alias | NSString* | 用户设置的别名信息,只支持英文数字下划线,长度不超过50个字符 |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
[YunBaService setAlias:alias resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"set alias[%@] succ", alias);
} else {
NSLog(@"set alias failed due to : %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 可以调用此函数来获取当前用户的别名。
`+ (void)getAlias:(YBStringResultBlock)stringResultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| stringResultBlock | YBStringResultBlock | API 回调接口,可通过返回的 NSError *error获取错误代码(kYBErrorNoError表示成功)及原因 |
None
[YunBaService getAlias:^(NSString *res, NSError *error) {
if (error.code == kYBErrorNoError) {
NSLog(@"get alias succ:%@", res);
} else {
NSLog(@"get alias failed due to : %@, recovery suggestion: %@", error, [error localizedRecoverySuggestion]);
}
}];
App 将DeviceToken 存储在YunBa的云端,那么可以通过YunBa发送APNs通知。
`+ (void)storeDeviceToken:(NSData *)token resultBlock:(YBResultBlock)resultBlock;`
| 名称 | 类型 | 说明 |
|---|---|---|
| token | NSData* | 通过注册APNs而获取到的对应设备的device token |
| resultBlock | YBResultBlock | API 回调接口,可通过返回的BOOL succ判断结果的成功与否, NSError *error获取错误原因 |
None
注册APNs,申请获取device token:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
上传device token:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"get Device Token: %@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]);
[YunBaService storeDeviceToken:deviceToken resultBlock:^(BOOL succ, NSError *error) {
if (succ) {
NSLog(@"store device token to YunBa succ");
} else {
NSLog(@"store device token to YunBa failed due to : %@", error);
}
}];
}