supersdk

文档中心

文档中心

下载文档

MobPush 推送模块


推送模块提供了远程推送和本地通知的功能。

注意:请在接入前,删除原游戏中已经添加的第三方推送 SDK 和相关 API 接口,防止发生冲突和闪退情况。

一、接入前准备

说明:游戏需要先找 SuperSDK 对外接口人开通该功能,申请 MobPush 参数(江流儿:yuhc@yoozoo.com 二二:hanlj@yoozoo.com)。

二、注册推送接口(必接)

接口描述:注册推送服务,在初始化完成后调用。

接口调用:

[SuperSDK invoke:@"mobpushsdk" 
        funcName:@"registerPush" 
      parameters:@{
                    @"showType" : @"1", // 必传,显示类型,0 表示应用在前台也需要弹出通知 1 表示应用在前台不需要弹出通知
                    @"lang" : @"zh" // 必传,推送语言,固定传 zh,此处为占位符
                  }];                                                         

三、远程推送

说明:远程推送提供了服务端推送的功能。

1. 设置用户标识接口(必接)

接口描述:绑定推送用户,登录完成后调用。

注意一: 传入的用户 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
}

2. 收到远程推送回调(选接)

说明:当游戏调用注册推送服务、绑定用户两个接口后,就可以收到服务端推送过来的消息。接收的地方为 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
}

四、本地通知

说明:推送模块提供了本地通知的功能。

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
}

2. 收到本地通知回调(选接)

说明:当游戏调用注册推送服务、添加本地通知两个接口后,就可以接收本地通知消息。接收的地方为 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
}

3. 删除指定标识符的本地通知(选接)

接口描述:根据 identifier 删除本地推送,如下所示:

接口调用:

NSDictionary *parameters =  @{
                                 @"identifier":@"1" // 本地通知标识符
                             };
[SuperSDK invoke:@"mobpushsdk" funcName:@"deleteLocalNotification" parameters:parameters];

4. 删除所有本地推送(选接)

接口描述:删除存在的所有本地推送,如下所示:

接口调用:

[SuperSDK invoke:@"mobpushsdk" funcName:@"deleteAllLocalNotifications" parameters:nil];