supersdk

文档中心

文档中心

下载文档

广告变现模块


一、接入前准备

1. 第三方参数申请,请确认要接入的第三方广告变现渠道。

2. 接入对应 SuperSDK 广告变现接口。

注意:若游戏母包已经接入广告变现,需要将广告变现依赖的三方库从 Xcode 工程中移除后,再接入。

二、国内

说明:iOS 国内广告变现暂不支持。

三、海外

说明:海外广告变现目前支持 AdMob,游戏研发只需要按照以下文档接入。

注意:iOS 海外广告变现暂不支持 TradPlus。

1. 显示 GDPR 弹窗接口

接口描述:显示 GDPR 欧盟协议弹窗。

注意一:GDPR 是欧盟地区的政策需要,在弹出广告前,需要经过用户的授权同意,此接口为必须要接入。

注意二:在登录成功,进入游戏主界面后调用。

接口调用:

[SuperSDK invoke:@"ad_realize" funcName:@"openGDPR" parameters:nil];

2. 预加载广告接口

接口描述:预加载广告视频,在初始化完成后调用。

接口调用:

NSString *platformType = @"AdMob"; // 平台类型(必填),目前支持:AdMob
NSString *adUnitId = @"0EFA5B2F4B03EB1135BDD21422027A67"; // 广告单元 ID(必填)
NSString *opgameId = @"123"; // 混服组 ID,如不能直接获取,默认使用 server_id 前 4 位(必填)
NSString *sceneId = @"4B437A3D90DCAD"; // 广告场景 ID(选填),没有则默认传空值
NSString *clientIp = @"192.168.1.1"; // 客户端 IP(选填),没有则默认传空值

NSDictionary *params = @{
    @"platformType" : platformType,
    @"adUnitId" : adUnitId,
    @"sceneId" : sceneId,
    @"clientIp" : clientIp,
    @"opgameId" : opgameId
};

[SuperSDK invoke:@"ad_realize" funcName:@"preLoadAd" parameters:params];

接口回调:

- (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName result:(NSString *)result {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n result : %@", moduleName, funcName, result);
    NSDictionary *retParam = nil;
    if (result) {
        NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    int code            = [[retParam objectForKey:@"code"] intValue];   
    NSString *msg       = [retParam objectForKey:@"msg"]; 
                  
    if ([moduleName isEqualToString:@"preLoadAd"]) {
        if ([funcName isEqualToString:@"showAdRealize"]){
            NSString *msg = retParam[@"msg"];
            NSDictionary *dataDic = retParam[@"data"];
            NSString *platformType = dataDic[@"platformType"];
            NSString *os = dataDic[@"os"];
            if (code == 1009){
                NSLog(@"广告变现-预加载成功 聚合平台:%@ 系统:%@ 信息:%@",platformType,os,msg);
            }
        }
    }
}

日志打印:

moduleName : ad_realize
funcName : preLoadAd
result : {
    "msg":"AdMob 预加载成功",
    "data":{
        "adSourceName":"",
        "adCountryCode":"",
        "adRewardName":"",
        "adUnitId":"0EFA5B2F4B03EB1135BDD21422027A67",
        "adEcpm":"",
        "adSceneId":"",
        "os":"iOS",
        "adSourceId":"",
        "adLoadTime":"",
        "platformType":"AdMob",
        "adRewardNumber":"",
        "adResponseId":"",
        "adCurrencyCode":""
        },
    "code":1009
}

3. 显示广告接口

接口描述:弹出广告视频,在初始化完成后调用。

注意:该接口不强制依赖预加载,可直接调用。

接口调用:

NSString *platformType = @"AdMob"; // 平台类型(必填),目前支持:AdMob
NSString *adUnitId = @"0EFA5B2F4B03EB1135BDD21422027A67"; // 广告单元ID(必填)
NSString *opgameId = @"123"; // 混服组 ID,如不能直接获取,默认使用 server_id 前 4 位(必填)
NSString *sceneId = @"4B437A3D90DCAD"; // 广告场景 ID(选填),没有则默认传空值
NSString *clientIp = @"192.168.1.1"; // 客户端IP(选填),没有则默认传空值

NSDictionary *params = @{
    @"platformType" : platformType,
    @"adUnitId" : adUnitId,
    @"sceneId" : sceneId,
    @"clientIp" : clientIp,
    @"opgameId" : opgameId
};

[SuperSDK invoke:@"ad_realize" funcName:@"showAdRealize" parameters:params];

接口回调:

- (void)handlerCallback:(NSString *)moduleName funcName:(NSString *)funcName result:(NSString *)result {
    NSLog(@"****** 收到回调\n moduleName : %@,\n funcName : %@,\n result : %@", moduleName, funcName, result);
    NSDictionary *retParam = nil;
    if (result) {
        NSData *jsonData = [result dataUsingEncoding:NSUTF8StringEncoding];
        if (jsonData) {
            retParam = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil];
        }
    }
    int code            = [[retParam objectForKey:@"code"] intValue];   
    NSString *msg       = [retParam objectForKey:@"msg"]; 
                  
    if ([moduleName isEqualToString:@"ad_realize"]) {
        if ([funcName isEqualToString:@"showAdRealize"]){
            NSString *msg = retParam[@"msg"];
            NSDictionary *dataDic = retParam[@"data"];
            NSString *platformType = dataDic[@"platformType"];
            NSString *os = dataDic[@"os"];
            if (code == 1006){
                NSLog(@"广告变现,获取到了奖励 聚合平台:%@ 系统:%@ 信息:%@",platformType,os,msg);
            }else{
                NSLog(@"广告变现,其他情况 聚合平台:%@ 系统:%@ 信息:%@",platformType,os,msg);
            }
        }
    }
}

日志打印:

moduleName : ad_realize,
funcName : showAdRealize,
result : {
    "msg":"视频播放完成后,奖励验证回调",
    "data":{
        "adSourceName":"applovin",
        "adCountryCode":"CN",
        "adRewardName":"",
        "adUnitId":"0EFA5B2F4B03EB1135BDD21422027A67",
        "adEcpm":"0.01",
        "adSceneId":"4B437A3D90DCAD",
        "os":"iOS",
        "adSourceId":"55bb67d13c9262ca",
        "adLoadTime":"5137",
        "platformType":"AdMob",
        "adRewardNumber":"0",
        "adResponseId":"8BF7ABCD-251A-4F67-B017-9CE88CAF92AF",
        "adCurrencyCode":"USD"
        },
    "code":1006
}

附录

常量字符串 Code码 描述
SUCCESS 1000 成功
AD_SHOW 1001 视频广告展示
AD_VIDEO_BAR_CLICK 1002 广告的下载 bar 点击
AD_CLOSE 1003 视频广告关闭
AD_VIDEO_COMPLETE 1004 视频播放完成
AD_VIDEO_ERROR 1005 视频广告播放错误
AD_REWARD_VERIFY 1006 视频播放完成后,奖励验证回调
AD_SKIP_VIDEO 1007 视频广告跳过
AD_PRE_LOAD_SUCCESS 1009 预加载视频广告成功