Skip to content

CocosCreator接入

IMPORTANT

在接入SDK之前, 建议先请仔细阅读:接入流程
SDK提供了Unity的Demo,里面对Android/iOS层的逻辑进行了简单的封装,故本文档仅供参考,游戏层也可以自行处理调用逻辑

基础配置

Cocos层的调用接口,都封装在了U8SDK.ts中:

将CocosDemo/assets/Script/U8SDK.ts 文件拷贝到游戏工程assets/Script/目录下

接口调用之前,需要在接入文件中引入UGSDK组件:

ts
import u8sdk, {U8AdEvent, U8LoginResult, U8PayParams, U8RoleData} from './U8SDK';

初始化

我们需要在游戏启动的时候(比如在组件的Start函数)调用初始化接口。如下:

ts
//初始化SDK
u8sdk.initSDK();

u8sdk.setLoginCallback((loginResult:U8LoginResult)=> {
    // 设置登录回调
    console.log('sdk login success.', loginResult)

});

u8sdk.setLogoutCallback(()=> {
    // SDK登出回调, 引导玩家返回到游戏登录界面,重新登录
    console.log('sdk logout success.');

});

u8sdk.setSwitchAccountCallback((loginResult:U8LoginResult)=>{
    //SDK切换账号成功回调, 引导玩家返回到游戏登录界面,并使用loginResult(新账号的)重新进入游戏
    console.log('sdk switch account success from sdk');
})

登录

在玩家进入游戏之前, 需要调用登录接口,弹出SDK的登陆界面:

ts
u8sdk.login();

当玩家登录成功后, 会通过setLoginCallback设置的回调,通知结果给游戏层:

ts
u8sdk.setLoginCallback((loginResult:U8LoginResult)=> {
    // 设置登录回调
    console.log('sdk login success.', loginResult)

});

关于U8LoginResult对象:

参数名称参数类型参数说明
userIDlong玩家唯一ID,游戏层可以用该字段绑定游戏账号或角色
sdkUserIDString渠道平台返回的玩家唯一ID,不同渠道之间可能不唯一
usernameString聚合SDK生成的用户名,无意义
sdkUsernameString渠道平台那边玩家的用户名,可能为空
tokenString此次登录的token,游戏客户端传给游戏服务器,游戏服务器登录认证需要使用
newAccountString当前账号是否是新账号(首次登录)1:是;0:否

当玩家登录失败,会通过setLoginFailedCallback设置的回调,通知给游戏层:

ts
u8sdk.setLoginFailedCallback((err:any)=> {

});

登出

如果游戏内有登出按钮, 当玩家点击登出按钮的时候, 调用登出接口后(不用等待回调结果),立即返回到游戏登陆界面(不用等待回调结果)

ts
u8sdk.logout();

注意, 还有另外一种登出: 玩家从渠道SDK的悬浮窗->用户中心中点击登出/切换账号,此时U8SDK会通过setLogoutCallback设置的回调通知游戏。 游戏层收到该回调后,需要引导玩家返回到游戏登录界面,重新吊起SDK的登录界面。(重要,影响渠道审核)

ts
u8sdk.setLogoutCallback(()=> {
    // SDK登出回调, 引导玩家返回到游戏登录界面,重新登录
    console.log('sdk logout success.');

});

部分渠道还可以在SDK中切换到新账号,此场景下, U8SDK会通过setSwitchAccountCallback设置的回调通知游戏。 游戏层收到该回调后,需要引导玩家返回到游戏登录界面,此时不用吊起SDK的登录界面,直接使用回调中返回的新userID进入游戏即可。(重要,影响渠道审核)

ts
u8sdk.setSwitchAccountCallback((loginResult:U8LoginResult)=>{
    //SDK切换账号成功回调, 引导玩家返回到游戏登录界面,并使用loginResult(新账号的)重新进入游戏
    console.log('sdk switch account success from sdk');
})

角色数据上报

ts
let data = new U8RoleData();
data.dataType = 2;      //以下四个地方都需要调用该接口。 每个地方对应的dataType不同。 dataType: 2:创建角色;3:进入游戏;4:等级升级;5:退出游戏

data.roleID = "1";
data.roleName = "u8demo";
data.roleLevel  = 1;
data.serverID = "1";
data.serverName = "刺激战场";
data.roleCreateTime = "1000035434";
data.roleLevelUpTime = "0";

u8sdk.submitGameData(data);

支付

ts
let payData = new U8PayParams();
payData.productId = "1";											//商品ID, 不能为空
payData.productName = "100元宝";										//商品名称, 不能为空
payData.productDesc = "购买100元宝,送20";							//商品描述, 不能为空
payData.price = 1;        											//商品金额, 单位元
payData.coinNum=100;        										//玩家身上拥有的游戏币余额		
payData.buyNum=1;           										//购买数量,固定1
payData.serverId = "1";												//服务器ID, 不能为空
payData.serverName = "刺激战场";										//服务器名称,不能为空
payData.roleId = "1";												//角色ID, 不能为空
payData.roleName = "u8demo";										//角色名称,不能为空
payData.roleLevel = 1;												//角色等级,不能为空
payData.payNotifyUrl = "http://game.h5.com/gameCallback";			//游戏发货地址,如果不配置,则使用SDK后台配置的地址
payData.vip = "10";													//VIP等级
payData.cpOrderId = "";												//游戏订单号,最大64个字符。 服务端支付回调时,原样传给游戏服务器
payData.extension = "custom data";									//自定义参数,最大64个字符。 服务端支付回调时, 原样传给游戏服务器
u8sdk.pay(payData);

支付成功后,会通过setPaySucCallback设置的回调,通知给游戏:

ts
u8sdk.setPaySucCallback((msg:any)=> {

});

支付失败后,会通过setPayFailedCallback设置的回调,通知给游戏:

ts
u8sdk.setPayFailedCallback((err:any)=> {

});

退出游戏

游戏应在退出游戏时,调用此接口, 部分渠道会弹出退出确认框。 注意:没有这个部分渠道会审核失败。

ts
u8sdk.exit();

广告接口(可选)

IMPORTANT

如果游戏是IAA游戏或需要通过广告变现, 可以接入U8聚合广告接口。 之后通过U8打包工具,将具体的广告SDK打入进去即可,无需单独接入各个广告平台的SDK。

在接入SDK之前, 需要先获取广告参数,建议先请仔细阅读:获取广告参数

目前支持的广告类型有: 开屏广告/自动开屏、 插屏广告、 横幅广告(Banner)、激励视频广告。

设置广告监听

在广告事件发生时, SDK会通过setAdEventCallback设置的回调,通知游戏:

ts
u8sdk.setAdEventCallback((adResult:U8AdEvent)=>{
    if (adResult.adType == 'splash') {
        // 开屏广告事件

        if (adResult.eventType == 'onLoaded') {
            // 广告加载成功
            u8sdk.showSplashAd("879620241503559680");
        } else if (adResult.eventType == 'onFailed') {
            // 广告失败
        }

    } else if (adResult.adType == 'interstitial') {
        // 插屏广告事件

        if (adResult.eventType == 'onLoaded') {
            // 广告加载成功
            u8sdk.showInterstitialAd("879620241503559681");
        } else if (adResult.eventType == 'onFailed') {
            // 广告失败
            // 可以重新预加载广告
            u8sdk.loadInterstitialAd("879620241503559681");
        }

    } else if (adResult.adType == 'rewardVideo') {
        // 激励视频广告事件
        if (adResult.eventType == 'onReward') {
            // 给玩家发放奖励
            // TODO::
            console.log('onReward called in HelloWorld.');

        } else if (adResult.eventType == 'onLoaded') {
            // 广告加载成功
            u8sdk.showRewardAd("879620241503559681");
        } else if (adResult.eventType == 'onFailed') {
            // 广告失败
            // 可以重新预加载广告
        }                
    }
})
1、 激励视频广告
  1. 加载广告
ts
u8sdk.loadRewardAd(adId, rewardName, rewardNum);

参数说明:

参数名称参数类型参数说明
adIdstringU8SDK后台创建的激励视频类型的广告位ID,如果还不知道怎么创建,可以参考文档:获取广告参数
rewardNamestring奖励物品的名称
rewardNumint奖励物品的数量
  1. 展示广告
ts
if (u8sdk.isRewardAdReady()) {
	u8sdk.showRewardAd(adId);
}
  1. 广告回调

广告事件触发时,SDK会通过setAdEventCallback设置的回调,通知给游戏,其中adType为rewardVideoeventType为具体的事件名称。 目前主要有如下事件:

bash

onReward: 符合发放奖励的条件,给玩家发放奖励
onLoaded: 广告加载成功
onShow: 广告曝光成功
onFailed: 广告加载或播放失败
onClicked: 广告被点击
onSkip: 广告被跳过
onClosed: 广告被关闭
2、 插屏广告
  1. 加载广告
ts
u8sdk.loadInterstitialAd(adId);

参数说明:

参数名称参数类型参数说明
adIdstringU8SDK后台创建的插屏广告类型的广告位ID,如果还不知道怎么创建,可以参考文档:获取广告参数
  1. 展示广告
ts
if (u8sdk.isInterstitialAdReady()) {
	u8sdk.showInterstitialAd(adId);
}
  1. 广告回调

广告事件触发时,SDK会通过setAdEventCallback设置的回调,通知给游戏,其中adType为interstitialeventType为具体的事件名称。 目前主要有如下事件:

bash

onLoaded: 广告加载成功
onShow: 广告曝光成功
onFailed: 广告加载或播放失败
onClicked: 广告被点击
onSkip: 广告被跳过
onClosed: 广告被关闭
3、 横幅广告
  1. 展示广告
ts
u8sdk.showBannerAd(adId, posType);

参数说明:

参数名称参数类型参数说明
adIdstringU8SDK后台创建的Banner广告类型的广告位ID,如果还不知道怎么创建,可以参考文档:获取广告参数
posTypeintBanner广告的位置,1:位于屏幕最上方;2:位于屏幕最下方
  1. 广告回调

广告事件触发时,SDK会通过setAdEventCallback设置的回调,通知给游戏,其中adType为bannereventType为具体的事件名称。 目前主要有如下事件:

bash

onLoaded: 广告加载成功
onShow: 广告曝光成功
onFailed: 广告加载或播放失败
onClicked: 广告被点击
onSkip: 广告被跳过
onClosed: 广告被关闭
4、 开屏广告

自动开屏广告(仅Android平台支持)

因为开屏广告一般是作为启动屏展示, 结合U8聚合SDK提供的分包工具, 我们支持自动将开屏广告作为启动屏(启动Activity),无需游戏开发者接入, 只需要在后台广告参数中打开开关,配置好广告位ID即可:

U8聚合广告-自动开屏

按上图配置后,通过U8聚合SDK打包工具分包后, 就可以测试开屏广告效果了。

但是,请注意, 自动开屏广告也有一定的局限性:


如果在游戏层自行实现开屏广告, 可以按如下说明调用:

  1. 加载广告
ts
u8sdk.loadSplashId(adId);

参数说明:

参数名称参数类型参数说明
adIdstringU8SDK后台创建的开屏广告类型的广告位ID,如果还不知道怎么创建,可以参考文档:获取广告参数
  1. 展示广告
csharp
if (u8sdk.isSplashAdReady()) {
	u8sdk.showSplashAd(adId);
}
  1. 广告回调

广告事件触发时,SDK会通过setAdEventCallback设置的回调,通知给游戏,其中adType为splasheventType为具体的事件名称。 目前主要有如下事件:

bash

onLoaded: 广告加载成功
onShow: 广告曝光成功
onFailed: 广告加载或播放失败
onClicked: 广告被点击
onSkip: 广告被跳过
onClosed: 广告被关闭

版权所有© 2021-2030 上海丞诺网络科技有限公司