推送模块提供了远程推送和本地通知的功能。
注意:请在接入前,删除原游戏中已经添加的第三方推送 SDK 和相关 API 接口,防止发生冲突和闪退情况。
说明:游戏需要先找 SuperSDK 对外接口人开通该功能,申请 MobPush 参数(江流儿:yuhc@yoozoo.com 二二:hanlj@yoozoo.com)。
接口描述:注册推送服务,在初始化完成后调用。
接口调用:
[SuperSDK invoke:@"mobpushsdk"
funcName:@"registerPush"
parameters:@{
@"showType" : @"1", // 必传,显示类型,0 表示应用在前台也需要弹出通知 1 表示应用在前台不需要弹出通知
@"lang" : @"zh" // 必传,推送语言,固定传 zh,此处为占位符
}];
说明:远程推送提供了服务端推送的功能。
接口描述:绑定推送用户,登录完成后调用。
注意一: 传入的用户 ID 必须是 SuperSDK 获取到的带前缀的 osdk_user_id。
注意二: 若某些渠道的 osdk_user_id 带有特殊字符(除了下划线 _),可传 md5(osdk_user_id) 之后的值。
接口调用:
[SuperSDK invoke:@"mobpushsdk"
funcName:@"bindAlias"
parameters:@{
@"alias":@"0060015_123456" // 必传,用户 ID,必须是带前缀的用户 ID,如 000016_123456
}];
日志打印:
moduleName : mobpushsdk,
funcName : bindAlias,
result : {
"msg":"设置别名成功",
"data":{
"alias":"0060015_123456"
},
"code":1
}
说明:当游戏调用注册推送服务、绑定用户两个接口后,就可以收到服务端推送过来的消息。接收的地方为 SuperSDK 的统一回调里面,如下所示:
接口回调:
+ (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName parameters:(NSString *)parameters
{
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
NSDictionary *retParam = nil;
if (parameters) {
NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue];
NSDictionary *data = [retParam objectForKey:@"data"];
if ([moduleName isEqualToString:@"mobpushsdk"]) { // Push模块回调
if ([funcName isEqualToString:@"receiveRemoteNotification"]) {
NSDictionary *msgInfo = [data objectForKey:@"msgInfo"]; // 推送消息
NSLog(@"收到远程推送消息,%@", msgInfo);
}
}
}
日志打印:
moduleName : mobpushsdk,
funcName : receiveRemoteNotification,
result : {
"msg":"远程通知",
"data":{
"currentServerTimestamp":0,
"content":"",
"messageID":"",
"identifier":"",
"extraInfomation":{
},
"msgInfo":{
"aps":{
"badge":1,
"alert":{
"title":"推送测试",
"body":"这是一条推送测试消息,点击此通知打开链接http://www.supersdk.cn"
},
"sound":"default"
},
"workId":"5ceb9d4277ee5d5c60683e84",
"url":"http://www.supersdk.cn", // 注意:此参数在 MobPush 后台设置才会存在!若不使用此功能可忽略。
"mobpushMessageId":"296317053718368256"
},
"isInstantMessage":false,
"messageType":3,
"taskDate":0
},
"code":1
}
说明:推送模块提供了本地通知的功能。
接口描述:当游戏需要接入本地推送,调用存储本地推送的接口,如下所示:
接口调用:
NSDateFormatter *format = [[NSDateFormatter alloc] init];
format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *fireDate = [format dateFromString:@"2023-12-18 18:30:00"];
NSTimeInterval fireInterval = [fireDate timeIntervalSince1970]; // 注意:单位秒
NSDictionary *parameters = @{
@"identifier":@"1", // 本地推送的唯一标识符,纯数字类型的字符串,长度不超过 8 位
@"alertTitle":@"通知栏显示的推送标题", // 标题
@"alertBody":@"通知栏显示的推送内容", // 推送内容
@"fireDate":@(fireInterval).stringValue // 提示时间戳,10 位时间戳(秒)
};
[SuperSDK invoke:@"mobpushsdk" funcName:@"addLocalNotification" parameters:parameters];
接口回调:
+ (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName parameters:(NSString *)parameters
{
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
NSDictionary *retParam = nil;
if (parameters) {
NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue];
NSDictionary *data = [retParam objectForKey:@"data"];
if ([moduleName isEqualToString:@"mobpushsdk"]) { // Push 模块回调
if ([funcName isEqualToString:@"addLocalNotification"]) { // 添加本地推送回调
if (code == BCORE_SUCCESS) {
NSLog(@"本地推送添加成功");
}
else {
NSLog(@"本地推送添加失败");
}
}
}
}
日志打印:
moduleName : mobpushsdk,
funcName : addLocalNotification,
result : {
"msg":"本地通知添加成功",
"data":{
"alertTitle":"通知栏显示的推送标题",
"identifier":"1",
"alertBody":"通知栏显示的推送内容",
"fireDate":"1558948500",
},
"code":1
}
说明:当游戏调用注册推送服务、添加本地通知两个接口后,就可以接收本地通知消息。接收的地方为 SuperSDK 的统一回调里面,如下所示:
消息回调:
+ (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName parameters:(NSString *)parameters
{
NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n parameters : %@", moduleName, funcName, parameters);
NSDictionary *retParam = nil;
if (parameters) {
NSData *jsonData = [parameters dataUsingEncoding:NSUTF8StringEncoding];
if (jsonData) {
retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
}
}
int code = [[retParam objectForKey:@"code"] intValue];
NSDictionary *data = [retParam objectForKey:@"data"];
if ([moduleName isEqualToString:@"mobpushsdk"]) { // Push 模块回调
if ([funcName isEqualToString:@"receiveLocalNotification"]) {
NSLog(@"收到本地通知消息,%@", data);
}
}
}
日志打印:
moduleName : mobpushsdk,
funcName : receiveLocalNotification,
result : {
"msg":"本地通知",
"data":{
"fireDate":0,
"badge":"1",
"alertTitle":"通知栏显示的推送标题",
"identifier":"", // 此项暂时没有值!
"soundName":"", // 此项暂时没有值!
"userInfo":{"key":"value"},
"alertBody":"通知栏显示的推送内容",
"messageType":4,
"subTitle":"通知栏显示的副标题"
},
"code":1
}
接口描述:根据 identifier 删除本地推送,如下所示:
接口调用:
NSDictionary *parameters = @{
@"identifier":@"1" // 本地通知标识符
};
[SuperSDK invoke:@"mobpushsdk" funcName:@"deleteLocalNotification" parameters:parameters];
接口描述:删除存在的所有本地推送,如下所示:
接口调用:
[SuperSDK invoke:@"mobpushsdk" funcName:@"deleteAllLocalNotifications" parameters:nil];