SDK合规指南
1 文档修订记录
文档版本 | 文档更新日期 | 文档更新内容 |
---|---|---|
3.3.63 | 2024.08.23 | 1.「4.10 获取配置参数接口」新增渠道模板标识 |
3.3.57 | 2024.06.03 | 1.新增「4.13 广告追踪数据获取」接口 |
3.3.51 | 2024.03.05 | 1.新增「4.12 广告监测上报」接口 |
3.3.42 | 2022.10.12 | 1.「4.7 支付」新增notifyURL 参数 |
3.3.30 | 2021.11.18 | 从聚合SDK独立拆分 |
2 接入准备
推荐C#4 以上版本,如果游戏是4及以下版本,可能会无法支持新特性
推荐Unity2018及以上版本
2.1 添加文件
- 将文件
FYBase.unitypackage
与FYCombine.unitypackage
先后导入到您的Unity工程的Assets
文件夹下 - 导入方式:打开UNITY工程,菜单栏Assets=>Import Package=>Custom Package... ,之后选择文件导入工程
2.2 配置DLL文件平台属性
UNITY项目中,选择对应Dll文件,在Inspector面板=>Select platforms for plugin 勾选对应平台
如果已经配置,请忽略此步骤
- Assets\Plugins\FYBase\FYBase.dll勾选"Any Platform",并勾选"iOS"和“Android”以排除这2平台
- Assets\Plugins\FYBase\Android\FYBase.dll选择平台为"Android",注意"Any Platform"不要打钩
- Assets\Plugins\FYBase\iOS\FYBase.dll选择平台为"iOS",注意"Any Platform"不要打钩
- Assets\Plugins\FYCombine\FYCombine.dll选择平台为"Any Platform"
2.3 添加SDK配置
1.打开"星云平台->对接中心->SDK对接->SDK 列表->基础接入参数",找到 App ID、App Key、Company ID
2.在UNITY打开星云配置界面
3.将 App ID、App Key 、Company ID 填入对应输入框,选择游戏屏幕朝向,点击确定
,完成配置。注意:此步骤会生成SDK的一些配置,如果这一步没有执行,可能会造成接口调用没有任何响应。
2.4 开启调试模式
1.将配置界面中的Debug
勾选并点击确定
,即可开启「调试模式」;取消勾选并点击确定
,即关闭「调试模式」。
2.开启「调试模式」会显示客户端的悬浮球,点击进入调试工具可以查看接口/回调的调用信息,具体调试方法可查看文档。
2.5 引入命名空间
游戏代码中引入以下命名空间,开始接入。
using FYCombine;
3 界面跳转标准规范
为了您能快速接入,并避免大多数对接问题,请按照标准规范来对接。
3.1 登录流程
3.2 首屏-切换账号流程
3.3 游戏中-切换账号流程
4 客户端接口与回调
接口接入的要诀?
- 必接接口一定要接入,选接接口根据需要接入
- 必传参数一定要传,能传的参数尽量都传
接口的回调何时注册?
- 第一种方式:在初始化回调成功后注册其余的回调
- 第二种方式:在每次调用对应接口前都预先注册对应的回调
- 综合使用:先使用第一种方式,之后如需改变再重新注册
4.1客户端回调
1.初始化回调 FYCombineInitCallback
-
游戏应在确保收到此回调后才能调用聚合渠道模块其他接口
-
游戏不需管是否初始化成功,只要关心有没有收到初始化回调即可,也不需要重新调用初始化,SDK内部自己会处理初始化失败的情况
-
使用方式:
FYCombineBridge.Instance.FYCombineInitCallback = (isSuccess) => {
// TODO: 初始化完成
};
2.登录回调 FYCombineLoginCallback
-
收到此回调的「登录成功」时,需将登录参数传到游戏服务器,再请求聚合服务端做登录校验,校验成功才算登录成功,具体校验方式请看服务端接入文档
-
游戏收到此回调的「登录取消」或「登录失败」时,需向用户提供再次登录的按钮,以便用户能重新登录
-
假如在游戏正在进行中,收到此回调的「登录成功」通知时,并且 open_id 变了,此时需要退出到登录首屏,切换成另外一个角色,并重新进入游戏
-
关于identityBirthday、identityAge这两个参数的使用,因不同渠道给到聚合的可能是生日也可能是年龄,所以若需使用这2个值,需对这2个值共同进行判断,如果identityAge有值就使用identityAge,如果没有就解析identityBirthday
-
使用方式:
FYCombineBridge.Instance.FYCombineLoginCallback = new FYCombineLoginCallback((loginSuccessInfo) => {
//TODO: 登录成功
//loginSuccessInfo.openId; // 游戏维度唯一用户ID,一般游戏只用到openId即可;
//loginSuccessInfo.token; // 登录校验码,有效时间 7天,请在有效时间内完成校验,如超出时间需重新调用登录接口获取新校验码
//loginSuccessInfo.userId; // 第三方用户ID;
//loginSuccessInfo.unionId; // 全渠道唯一用户ID;
//loginSuccessInfo.channelId; // 渠道ID;
//loginSuccessInfo.identityBirthday; // 身份证生日,格式:"1991-12-31"(有可能空);
//loginSuccessInfo.identityAge; // 身份证年龄(有可能空);
//loginSuccessInfo.paymentCode; // 支付标识;
//loginSuccessInfo.passportCode; // 通行证标识;
}, (commonInfo) => {
//TODO: 登录取消
//需向用户提供再次登录的按钮,以便用户能重新登录
}, (commonInfo) =>
{
//TODO: 登录失败,需向用户提供再次登录的按钮,以便用户能重新登录
//commonInfo.message; // 失败原因
});
3.支付回调 FYCombinePayCallback
-
收到此回调的「支付成功」通知时,不能马上发放道具,
游戏需要根据服务端的支付回调作为支付是否成功的依据
,具体的服务端回调请看服务端接入文档 -
此回调只可以用来控制游戏界面显示,例如 loading 框的关闭、遮罩层的关闭
-
使用方式:
FYCombineBridge.Instance.FYCombinePayCallback = new FYCombinePayCallback((payInfo) => {
//TODO: 支付成功
//payInfo.gameOrderId; // 游戏订单号
//payInfo.orderId;// 星云订单号
}, (payInfo) => {
//TODO: 取消支付
}, (payInfo) => {
//TODO: 支付失败
//payInfo.message // 失败原因
}, (payInfo) => {
//TODO: 支付状态未知
//第三方渠道没有给明确的客户端支付状态,建议游戏提示“如若购买成功,稍后即到账”类似的不是很明确的提示
//若后续有出"九游(UC)"这个渠道,请处理这个逻辑
});
4.退出游戏回调 FYCombineExitGameCallback
-
此回调是 Android 独有的
-
当接收到此回调时,如果 isExit 为 true 则直接退出,为 false 时需弹出游戏自定义的退出框
-
使用方式:
FYCombineBridge.Instance.FYCombineExitGameCallback = (isExit) => {
if (isExit)
{
//游戏在此时直接关闭应用
}
else {
//游戏可以选择弹出自定义退出框
}
};
5.登出回调 FYCombineLogoutCallback
-
当游戏调用「登出接口」,本SDK会执行此回调,游戏在此处判断是否在游戏内,如果在游戏内则退出到游戏登录首屏
-
一些第三方通行证自带登出按钮,当用户点击登出按钮时,也会执行此回调
-
使用方式:
FYCombineBridge.Instance.FYCombineLogoutCallback = (isLogout) => { // TODO: 退出到登录首页 };
6.实名认证回调 FYCombineRealNameCallback
-
当用户填写了实名认证信息并提交完成,将触发此回调的「认证成功」,并提供相关的实名信息
-
关于identityBirthday、identityAge这两个参数的使用,因不同渠道给到聚合的可能是生日也可能是年龄,所以若需使用这2个值,需对这2个值共同进行判断,如果identityAge有值就使用identityAge,如果没有就解析identityBirthday
-
使用方式:
FYCombineBridge.Instance.FYCombineRealNameCallback = new FYCombineRealNameCallback((realNameSuccessInfo) =>
{
//TODO: 认证成功
//realNameSuccessInfo包含认证信息,游戏可以在此对用户进行奖励
//realNameSuccessInfo.identityBirthday;//身份证生日,格式:"1991-12-31"(有可能空)
//realNameSuc.identityAge;//身份证年龄(有可能空)
}, (unRealNameInfo) =>
{
//TODO: 未实名游客时间
//可以用来给游戏提示距离实名认证弹出还有多少时间。每隔10s会回调一次
//unRealNameInfo.totalTime;//游客时间总时长,单位:秒
//unRealNameInfo.remainTime;//游客剩余时长,单位:秒
}, (commonInfo) =>
{
//TODO: 实名认证取消
}, (commonInfo) =>
{
//TODO: 实名认证失败
//commonInfo.message; // 失败原因
});
7.获取本地化商品信息回调 FYCombineQueryLocalProductsCallback
-
当用户调用
QueryLocalProducts
接口后,将触发此回调,返回商品信息列表 -
还在母包测试阶段,会返回测试用的商品信息,用于调试;待打出正式渠道包后,会根据真实情况,返回正确的本地化商品信息,具体的能获取到什么以苹果后台或谷歌后台的配置为准
-
如果回调失败或者返回的本地化商品信息为空,请使用原始的商品信息进行展示
-
使用方式:
FYCombineBridge.Instance.FYCombineQueryLocalProductsCallback = new FYCombineQueryLocalProductsCallback((localProductInfos)=> {
//TODO: 获取本地化商品信息回调成功
//localProductInfos.localProductInfos;//商品信息列表List<LocalProductInfo>
}, (commonInfo)=> {
//TODO: 获取本地化商品信息回调失败,请展示原始的商品信息
//commonInfo.message; // 失败原因
});
LocalProductInfo
包含字段
参数 | 说明 |
---|---|
productId | 商品 ID |
title | 本地化标题 |
desc | 本地化说明 |
price | 本地化价格,例如:10 |
formatPrice | 本地化价格,包含货币单位,例如:$10 |
currencyCode | 本地化货币代号,例如:CNY |
8.绑定回调FYCombineBindCallback
-
当用户触发账号绑定时,如果绑定成功,则回调成功;如果取消绑定或者绑定失败,则返回绑定失败
-
绑定成功可以到服务端查询用户的绑定信息,具体请看服务端接入文档的「登录校验接口」
-
使用方式:
FYCombineBridge.Instance.FYCombineBindCallback = (isSuccess) =>
{
if(isSuccess){
//TODO: 绑定成功
}else{
//TODO: 绑定失败
}
};
4.2 初始化接口(必接
)
1.方法
void DoInit(string gameVersion)
2.说明
- 游戏需要在刚启动游戏的时候调用
3.调用
FYCombineBridge.Instance.DoInit(gameVersion);
4.参数
参数 | 说明 | 是否必传 |
---|---|---|
gameVersion | 游戏版本号 | 是 |
5.回调
- 初始化回调
FYCombineInitCallback
4.3 登录接口(必接)
1.方法
void DoLogin()
2.说明
-
启动完游戏显示首页时调用
-
玩家点击游戏界面的「进入游戏」时,需要判断是否有登录成功,如有则可以进入游戏;否则再次调用「账号登录接口」,让玩家重新登录,直到登录成功
-
母包测试账号:需要到星云开放平台创建母包测试账号以便做母包的登录测试,创建路径:星云开放平台->对接中心->母包管理->母包测试账号
3.调用
FYCombineBridge.Instance.DoLogin();
4.参数
无
5.回调
- 登录回调
FYCombineLoginCallback
4.4 切换账号接口(必接)
1.方法
void DoSwitchAccount()
2.说明
-
在需要切换账号时调用,该接口会弹出登录窗口,让用户重新登录
-
与「登录接口」不同的是,「登录接口」非首次登录会自动登录,而此接口必定会弹出登录窗口
3.调用
FYCombineBridge.Instance.DoSwitchAccount();
4.参数
无
5.回调
- 登录回调
FYCombineLoginCallback
4.5 用户中心接口(必接)
1.方法
void DoUserCenter(string playerId, string playerName, string playerLevel, string serverId, string serverName, string vipLevel="0")
2.说明
-
需在游戏内的设置界面,放置一个「用户中心」按钮,点击按钮调用此接口
-
调用此接口将弹出用户中心界面
3.调用
FYCombineBridge.Instance.DoUserCenter(playerId,playerName,playerLevel,serverId,serverName,vipLevel);
4.参数
参数 | 说明 | 是否必传 |
---|---|---|
playerId | 玩家ID | 是 |
playerName | 玩家名字 | 是 |
playerLevel | 玩家等级,数字格式 |
是 |
serverId | 服务器ID,数字格式 |
是 |
serverName | 区服名称 | 是 |
vipLevel | vip等级,数字格式 ,如果游戏没有vip等级则传"0" |
否 |
5.回调
无
4.6 登出接口(选接)
1.方法
void DoLogout()
2.说明
- 退出用户账号,并回调「登出回调」
3.调用
FYCombineBridge.Instance.DoLogout();
4.参数
无
5.回调
- 登出回调
FYCombineLogoutCallback
4.7 支付接口(选接)
1.方法
void DoPay(string playerId, string playerName, string playerLevel, string serverId, string serverName, string goodsId, string goodsName, string payAmount, string gameOrderId, PaySignType paySignType, string vipLevel = "0", string notifyExt = "", string notifyURL = "")
2.说明
- 调用此接口将拉起支付界面
- 建议游戏制定的商品标识格式为:com.feiyu.app_id.xxxx,以保证商品 id 的唯一性
- 打开"星云平台->对接中心->SDK对接->SDK列表->基础接入参数->游戏支付回调地址",配置游戏服务端的支付回调地址,支付完成后会通过此地址回调支付结果
- 收到客户端支付回调时,不能马上发放道具,游戏需要根据服务端的支付回调作为支付是否成功的依据,具体的服务端回调请看服务端接入文档
- 客户端的支付回调只可以用来控制游戏界面显示,例如loading框的关闭、遮罩层的关闭
3.调用
FYCombineBridge.Instance.DoPay(playerId, playerName, playerLevel, serverId,serverName, goodsId, goodsName, payAmount, gameOrderId, paySignType, vipLevel, notifyExt,notifyURL);
4.参数
参数 | 说明 | 是否必传 |
---|---|---|
playerId | 玩家ID。对应服务端支付回调的player_id 参数 |
是 |
playerName | 玩家名字 | 是 |
playerLevel | 玩家等级,数字格式 |
是 |
serverId | 服务器ID,数字格式 。对应服务端支付回调的server_id 参数 |
是 |
serverName | 服务器名字 | 是 |
goodsId | 商品标识,建议格式:com.feiyu.app_id.xxxx,例:com.feiyu.20001.store1 。对应服务端支付回调的goods_id 参数 |
是 |
goodsName | 商品名称 | 是 |
payAmount | 支付金额,单位:分 (海外游戏传美分),数字格式 。对应服务端支付回调的total_amount 参数 |
是 |
gameOrderId | 游戏订单号,由游戏生成并管理。服务端支付回调会回传,游戏需进行唯一性校验,防止重复下发商息给玩家。字符串类型,50个字符内。 对应服务端支付回调的out_trade_no 参数 |
是 |
paySignType | 签名类型,游戏服务器接收回调通知签名方式,需要游戏传递:md5/rsa | 是 |
vipLevel | vip等级,数字格式 ,如果游戏没有vip等级则传"0" |
否 |
notifyExt | 额外参数,游戏的透传参数可通过此参数传递,支付完成后平台服务端会回调此参数给游戏服务端。对应服务端支付回调的notify_ext 参数 |
否 |
notifyURL | 1.通过该值能在客户端动态传递服务端支付回调地址;2.若您在客户端传递了该地址,则支付完成后会通过此地址回调支付结果;3.若您同时也在星云后台配置了支付回调地址,会优先回调客户端传递的地址;4.需要先配置支付回调可信域名,请前往"星云后台->对接中心->回调配置->支付回调可信域名"进行配置,否则无法回调成功;5.若您在客户端传递了该地址,在游戏包体发布之前,建议您仔细检查该参数是否配置正确,以防止包体发布后支付出现问题 | 否 |
5.回调
- 支付回调
FYCombinePayCallback
4.8 退出游戏接口(选接)
1.方法
void DoExitGame()
2.说明
- 仅 Android 有效
- 当用户按手机返回键,意图退出应用时调用
3.调用
FYCombineBridge.Instance.DoExitGame();
4.参数
无
5.回调
- 退出游戏回调
FYCombineExitGameCallback
4.9 第三方收集信息接口(选接)
1.方法
void DoCollectInfo(CollectMethod method, string playerId, string playerName, string playerLevel, string serverId, string serverName, string playerTime)
2.说明
- 用于收集第三方SDK收集游戏数据。
- 如果后续有出"B站"、"九游(UC)"、"OPPO"、"vivo"、"华为" 这几个渠道中任意一个,请对接此接口,否则上架渠道会被拒。
3.调用
FYCombineBridge.Instance.DoCollectInfo(method, playerId, playerName, playerLevel, serverId, serverName, playerTime);
4.参数
参数 | 说明 | 是否必传 |
---|---|---|
method | 进入区服:enterServer,创建角色:createRole ,角色升级:levelUp | 是 |
playerId | 角色ID | 是 |
playerName | 角色名称 | 是 |
playerLevel | 角色等级,数字格式 |
是 |
serverId | 区服ID,数字格式 |
是 |
serverName | 区服名称 | 是 |
playerTime | 角色创建时间,必须取服务端时间,必须为时间戳 | 是 |
5.回调
- 暂无
4.10 获取配置参数接口(选接)
1.说明
- 游戏有用到聚合 SDK 的一些配置参数,可以从以下接口获取。
2.调用方式
- 获取APP ID
string appID= FYCombineBridge.Instance.GetAppId();
- 获取渠道ID,如果游戏要对渠道做差异化处理时,可以使用此ID作为区分;渠道ID列表,请查看星云平台->对接中心->渠道打包->渠道配置;在母包阶段,Android获取到的渠道ID默认为10000,iOS获取到的渠道ID默认为10001
string channelId= FYCombineBridge.Instance.GetChannelId();
- 获取设备 ID,此 ID 为 SDK 生成的标识设备的唯一 ID,不是 IDFA 或 AndroidID
string deviceId= FYCombineBridge.Instance.GetDeviceId();
- 获取IDFA(The Identifier for Advertisers)【
仅iOS有效
】,若用户关闭 IDFA 功能,有可能取不到值
string IDFA= FYCombineBridge.Instance.GetIDFA();
- 通行证标识,用来标明该渠道用什么通行证进行登录,所有渠道的通行证标识请看渠道版本信息
string passportCode= FYCombineBridge.Instance.GetPassportCode();
- 支付标识,用来标明该渠道用什么支付方式,一般和通行证代号一致,有一些特殊的渠道登录和支付不一致,例如:苹果渠道,登录是飞鱼通行证(feiyu3),支付则是苹果支付(apple),所有渠道的支付标识请看渠道版本信息
string paymentCode = FYCombineBridge.Instance.GetPaymentCode();
- 渠道模板标识,用来标明该渠道使用的是哪个渠道模板(一级渠道,在“对接中心-渠道打包-渠道配置”中添加渠道时所选的渠道模板),如果游戏要对不同渠道模板做差异化处理时,可以使用此标识作为区分,例如:针对不同渠道模板进行玩家信息隔离。所有渠道的渠道模板标识请看渠道版本信息
string channelTemplateCode = FYCombineBridge.Instance.GetChannelTemplateCode();
4.11 获取本地化商品信息接口(选接)
1.方法
void QueryLocalProducts(params string[] products)
2.说明
-
如果后续有出"官方Apple渠道"、"海外官方Apple渠道"、"海外官方Android渠道"这几个渠道中的任意一个,请对接此接口
-
应用场景1:获取本地化商品信息。当游戏在不同国家或地区发行时,想要展示不同的商品信息,请调用此接口,在回调中接收商品信息;能获取到的什么本地化商品信息,取决于您在苹果后台或谷歌后台的本地化商品配置,如果没有配置,则会回调失败或回调空,此时您应该使用原始的商品信息进行展示;在母包阶段,会回调测试用的商品信息用于调试,请在打出渠道包后再核实一下真实的商品信息是否展示正确;应尽量在发起支付提前久一点调用此接口,因为系统需要有一点时间(10秒内)异步去获取商品信息,并应避免重复调用此接口,正确做法:在进入游戏后调用一次此接口,并将获取到的商品信息缓存下来,在用户查看商店时,将缓存下来的商品信息用于展示
-
应用场景2:加速内购拉起。游戏拉起苹果内购或者谷歌内购比较慢,是由于首次拉起该商品内购时,系统需要时间请求该商品信息,如果想要提高内购拉起速度,请在在进入游戏后调用一次此接口,系统会进行一次内购商品信息获取并缓存下来,后续再拉起商品内购就会很快;如果只是单纯想要提高内购拉起速度,而不需要进行本地化商品展示,则不需要在回调中处理任何逻辑
3.调用
string[] products = new string[] { "com.feiyu.xxx.product1","com.feiyu.xxx.product2", "com.feiyu.xxx.product3" };
FYCombineBridge.Instance.QueryLocalProducts(products);
4.参数
参数名 | 说明 | 是否必传 |
---|---|---|
products | 商品 ID 数组 | 是 |
5.回调
- 获取本地化商品信息回调
FYCombineQueryLocalProductsCallback
4.12 广告监测上报(选接)
1.方法
void DoADTrackingReport (string eventName, string paramsJson)
2.说明
- 作用:此接口用来触发第三方渠道的广告监测事件上报
- 使用说明,以华为渠道为例:
- 对接:游戏在对应的时机调用此接口,通过传入不同的事件常量以及事件参数,来触发相应的上报事件
- 调试:游戏对接完成后,导出Android游戏母包,可通过SDK调试模式,查看该接口是否对接成功,详情请看本文档第2.4小节
- 配置:打开星云平台-对接中心-渠道打包-渠道配置-华为渠道-配置,将
ad_tracking_switch
设置为1,并配置其他ad_tracking
开头的参数(参数由投放人员提供) - 打包:将Android游戏母包上传到星云后台,通过Android打包工具,输出华为渠道包,此包体即带有华为的广告上报功能
- 注意:
游戏按照文档中给出的调用时机接入各个事件,但是在接入之前要跟发行同学再次确认,以对齐数据统计标准
- 目前此接口只在导出的Android包体上有作用,导出iOS的包体无需关心此接口
3.调用
// 事件名称:启动
// 调用时机:需在刚启动游戏的时候调用,若有隐私授权弹窗,需在点击隐私授权弹窗确认之后调用
// 事件常量:START
// 事件参数:无
FYCombineBridge.Instance.DoADTrackingReport("START", "");
// 事件名称:创建角色
// 调用时机:需在游戏创建角色的调用
// 事件常量:CREATE
// 事件参数:
// playerId:角色唯一标识,字符串
XXXModel model = new XXXModel(); // 游戏自定义一个model用来转json
model.playerId = "xxxx";
string json = JsonUtility.ToJson(model);
FYCombineBridge.Instance.DoADTrackingReport("CREATE", json);
// 事件名称:进入游戏
// 调用时机:需在角色进入游戏的调用
// 事件常量:ENTER
// 事件参数:
// playerId:角色唯一标识,字符串
XXXModel model = new XXXModel(); // 游戏自定义一个model用来转json
model.playerId = "xxxx";
string json = JsonUtility.ToJson(model);
FYCombineBridge.Instance.DoADTrackingReport("ENTER", json);
// 事件名称:支付
// 调用时机:需在支付完成之后调用
// 事件常量:PAY
// 事件参数:
// payAmount:支付金额,数字,单位-分,例如支付1元需传100
XXXModel model = new XXXModel(); // 游戏自定义一个model用来转json
model.payAmount = 100;
model.goodsId = "xxx";
model.goodsName = "xxx";
string json = JsonUtility.ToJson(model);
FYCombineBridge.Instance.DoADTrackingReport("PAY", json);
4.参数
参数名 | 说明 | 是否必传 |
---|---|---|
eventName | 事件常量,字符串,用来区分不同的事件 | 是 |
paramsJson | 事件参数,json字符串,用来传递事件的参数,如果没有参数传""字符串 | 是 |
- 事件定义:
eventName | 说明 | 是否必接 |
---|---|---|
START | 启动,需在刚启动游戏的时候调用,若有隐私授权弹窗,需在点击隐私授权弹窗确认之后调用 | 是 |
CREATE | 创建角色,需在游戏创建角色的调用 | 是 |
ENTER | 进入游戏,需在角色进入游戏的调用 | 是 |
PAY | 支付,需在支付完成之后调用 | 是 |
- CREATE 事件参数说明:
参数 | 说明 | 是否必传 |
---|---|---|
playerId | 角色唯一标识,字符串 | 是 |
- ENTER 事件参数说明:
参数 | 说明 | 是否必传 |
---|---|---|
playerId | 角色唯一标识,字符串 | 是 |
- PAY 事件参数说明:
参数 | 说明 | 是否必传 |
---|---|---|
payAmount | 支付金额,字符串,数字格式,单位-分,例如支付1元需传100 | 是 |
goodsId | 商品ID,字符串 | 是 |
goodsName | 商品名称,字符串 | 是 |
4.13 广告追踪数据获取(选接)
1.方法
string GetADTrackingData()
2.说明
- 作用:此接口用来获取广告追踪数据
- 使用说明,以华为渠道为例:
- 对接:游戏在
聚合初始化回调之后
对应的时机调用此接口 - 配置:打开星云平台-对接中心-渠道打包-渠道配置-华为渠道-配置,将
ad_tracking_switch
设置为1,并配置其他ad_tracking
开头的参数(参数由投放人员提供) - 打包:将Android游戏母包上传到星云后台,通过Android打包工具,输出华为渠道包,此包体即带有华为的广告上报功能,可获取追踪数据
- 对接:游戏在
- 注意:
游戏需要在聚合初始化回调之后调用
- 目前此接口只在导出的Android包体上有作用,导出iOS的包体无需关心此接口
3.调用
string adTrackingData = FYCombineBridge.Instance.GetADTrackingData();
4.返回参数
返回JSON字符串,JSON对象参数如下,请通过解析JSON字符串获取参数:
参数名 | 说明 |
---|---|
taskid | 任务ID,可能为空 |
subTaskId | 子任务ID,如"200037037",可能为空 |
callback | 回传参数,用于oCPD对接,如"security:CD40F6*****C7A9F4",可能为空 |
channel | 由广告主运营在华为投放系统针对广告任务绑定的智能分包渠道号,可能为空 |
RTAID | 华为投放系统返回RTAID,可能为空 |
5 原生端对接
5.1 iOS
5.1.1 导出XCODE工程
- 将UNITY项目导出为XCODE工程,然后就可以在Xcode开发工具上调试了
5.2 Andorid
5.2.1 导出Android工程
- 方式一:使用UNITY打包Android APK调试
- 方式二:将UNITY项目导出为Android Studio工程,然后就可以在Android Studio开发工具上调试了
6 F&Q
6.1 iOS打包报错:MapFileParser.sh:Permission denied
- 打开终端,输入命令:chmod +x /Users/....../MapFileParser.sh (iOS工程目录下MapFileParser.sh的路径)
6.2 iOS打包报错:linker command failed with exit code 1
- Xcode配置:PROJECT -> Build Settings -> Enable Bitcode -> NO,其余具体配置可参照
聚合SDK-iOS
文档的添加SDK配置
部分
6.3 切换账号的流程是怎样的?
常规的流程:点击用户中心的切换账号 -> 接收到退出回调(logoutCallback) -> 退出到登录首屏 -> 调出登录窗口 -> 登录另一个账号 -> 点击进入游戏 -> 游戏中
非常规的流程:点击用户中心的切换账号 -> 弹出登录窗口 -> 登录另一个账号 -> 接收到登录回调(loginCallback) -> 检测 open_id 变了 -> 退出到登录首屏 -> 检测已有账号登录 -> 点击进入游戏 -> 游戏中
非常规的流程会出现在某些渠道(比如 4399),没有退出回调,直接呼出登录窗口。那这时候就需要检查 open_id 是否改变,来让游戏重新回到登录首屏。
也就是说,以上这 2 个流程,游戏都要有。
6.4 渠道ID(channel_id)和通行证标识(passport_code)有什么区别?
-
一种通行证标识,可以对应多个渠道ID,渠道ID的颗粒度是最低的。游戏对渠道做区分,通常用渠道ID 即可,这个是最保险的方法。如果只想粗颗粒度的区分不同类型的渠道,则用通行证标识。
-
具体渠道ID的值,可以查看星云后台的 对接中心-渠道打包-渠道配置 。
-
具体通行证标识,可以查看渠道版本信息
6.5 调用接口没有任何响应
1.请执行一遍本文档 "2.3 添加SDK配置" 的第3步,以确保SDK的配置有生成。
2.可能配置有冲突,具体请查看: 6.6 AndroidManifest融合时配置冲突
6.6 AndroidManifest融合时配置冲突
1.错误1:Activity配置冲突
ArgumentException: 存在其他启动的Activity:com.example.YourActivity,与目标配置 com.stars.bridge.FYSDKActivity不符,只允许存在一个
(1)解决方案一:
在Assets/Plugins目录下新建目录(XXXConfig/Editor/),并创建编辑器脚本,参考ConfigWindow.RegisterConfig方法,新建AndroidBuildConfig.json并填写: {"FYSDKActivity":{"superClass":"com.example.YourActivity"}}
,并注册自定义的SDK配置路径到事件ConfigWindow.AddAndroidConfigPathsAct中,最后将AndroidManifest文件的com.example.YourActivity修改为com.stars.bridge.FYSDKActivity
(2) 解决方案二(每次星云配置后会还原修改,不推荐):
请考虑使用继承方式(com.stars.bridge.FYSDKActivity extends com.example.YourActivity)或者将com.example.YourActivity代码融合到com.stars.bridge.FYSDKActivity中,最后将AndroidManifest文件的com.example.YourActivity修改为com.stars.bridge.FYSDKActivity
2.错误2:Application配置冲突
ArgumentException: application配置冲突,android:name的属性com.example.YourApplication与目标配置com.stars.bridge.FYSDKApplication不符
(1) 解决方案一:
在Assets/Plugins目录下新建目录(XXXConfig/Editor/),并创建编辑器脚本,参考ConfigWindow.RegisterConfig方法,新建AndroidBuildConfig.json并填写: {"FYSDKApplication":{"superClass":"com.example.YourApplication"}}
,并注册自定义的SDK配置路径到事件ConfigWindow.AddAndroidConfigPathsAct中,最后将AndroidManifest文件的com.example.YourApplication修改为com.stars.bridge.FYSDKApplication
(2) 解决方案二(每次星云配置后会还原修改,不推荐):
请考虑使用继承方式(com.stars.bridge.FYSDKApplication extends com.example.YourApplication)或者将com.example.YourApplication代码融合到com.stars.bridge.FYSDKApplication中,最后将AndroidManifest文件的com.example.YourApplication修改为com.stars.bridge.FYSDKApplication