掌趣海外SDK第三方广告平台通用接入说明

文档说明

文档只对掌趣sdk海外版本,并且(安卓3.4.1;IOS4.5.0)以后版本适用;
目前支持:Adjust、Firebase、Facebook、AppsFlyer 四个广告统计SDK,产品可以根据需求选择。
注意: 由于海外产品打点各不相同且有区别,接入时请联系掌趣数据产品组具体支持人员,索要打点接入文档
附:各产品接入的广告统计SDK情况以及对应版本,详见【海外三方广告SDK版本汇总】

1 安卓接口使用说明

注意事项
(1)文档中的参数是用于举例,具体的要看DEV上配置的KEY及属性 ,进行传递;

1.1 安卓接口说明

本接口内日志事件key和事件logvalue 的key值需要开发人员根据掌趣数据产品组提供的统计日志说明文档使用,并且根据掌趣数据产品组提供的统计日志说明文档每条统计的描述在相应的逻辑处调用本接口并且传了相应的事件key和logvalue。

  1. /**
  2. * 游戏端发送第三方的日志
  3. *
  4. * @param logKey
  5. * 日志事件KEY
  6. * @param logValue
  7. * 日志事件内容 HashMap key-val格式
  8. */
  9. public void Ourpalm_SendAnalyticsInfoLog(String logKey,
  10. HashMap<String, Object> logValue);

1.2 安卓接口使用举例

注意:以下Key -Value值仅做举例说明,请以提供的产品打点接入文档为准;

1 注册日志(账号首次登陆该游戏,唯一不可重复)

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("registration", logValue);

2 登录账号(账号登录)

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("login", logValue);

3 充值日志
日志事件key为purchase (举例:充值0.99美元,需要事件参数)

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. logValue.put("price", "0.99");
  3. logValue.put("currency", "USD");
  4. Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).Ourpalm_SendAnalyticsInfoLog("purchase", logValue);

4 自定义日志(需要在DEV平台配置需要的参数)

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("custom1", logValue);

5 特殊自定义日志-购买二次回传(如需使用,请提前联系平台对接人进行配置)
举例:充值0.99美元,需要事件参数

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. logValue.put("price", "0.99");
  3. logValue.put("currency", "USD");
  4. Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).Ourpalm_SendAnalyticsInfoLog("customIAP", logValue);

1.3 安卓广告打点事件中添加自定义字段接入方法

接入说明:
支持在打点事件中添加游戏自定义属性,游戏可以在自定义广告打点事件中添加如下四个定义好的自定义属性:
uni_deviceId(设备ID)
uni_accountId(账号ID)
uni_roleId(角色ID)

接口示例:

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. logValue.put("uni_deviceId", "test_uni_deviceId");
  3. logValue.put("uni_accountId", "test_uni_accountId");
  4. logValue.put("uni_roleId", "test_uni_roleId");
  5. Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).
  6. Ourpalm_SendAnalyticsInfoLog("custom1", logValue);

使用说明:
1、上面三个字段名是固定的,不能改,游戏可以选择其中几个传入,不是每个字段都需要传入,如果研发同学要新加字段,
需要提前联系技术平台,平台添加完成后才能二次打包测试。
2、所有想添加自定义属性的打点事件都需要参照上面的方法单独传入自定义字段。

onelink完整接入流程参见:
https://ourpalm.feishu.cn/wiki/wikcnICNWvGeTWxHInGANeD06Vc
如果是apk包,请研发同学提供apk包的SHA256码,如果是aab包,需要运营同学登录google Play Console后台-设置-应用完整性-应用签名 copy SHA-256证书指纹;
市场同学配置后,会提供applink及url sheme参数,研发同学参照上面文档4.4 Step4(To研发):调试“调起并打开APP”功能部分,
在游戏母包manifest配置文件中,主activity需要新增两个intent-filter节点。
游戏母包添加完成后,二次打包测试,通过市场同学提供的onelink,调试【点击链接后“未安装APP则打开商店、已安装APP则打开APP”】。

1.5 appsflyer广告打点事件中添加自定义字段接入方法

接入说明:
appsflyer支持在打点事件中添加游戏自定义属性,游戏可以在自定义广告打点事件中添加如下四个定义好的自定义属性:
uni_deviceId(设备ID)
uni_accountId(账号ID)
uni_roleId(角色ID)
gameLaunchIdentity(启动标识)

接口示例:

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. logValue.put("uni_deviceId", "test_uni_deviceId");
  3. logValue.put("uni_accountId", "test_uni_accountId");
  4. logValue.put("uni_roleId", "test_uni_roleId");
  5. logValue.put("gameLaunchIdentity", "test_gameLaunchIdentity");
  6. Ourpalm_Entry.getInstance(NewMainActivity.mMainActivity).
  7. Ourpalm_SendAnalyticsInfoLog("custom1", logValue);

使用说明:
1、上面四个字段名是固定的,不能改,游戏可以选择其中几个传入,不是每个字段都需要传入,如果研发同学要新加字段,
需要提前联系技术平台,平台添加完成后才能二次打包测试。
2、所有想添加自定义属性的打点事件都需要参照上面的方法单独传入自定义字段。

1.6 appsflyer用户邀请链接接口

请注意:部分参数请与广告部门同事进行获取和确认(参数后有备注)
AF官方文档:点击跳转
接口范例:

  1. HashMap<String,Object> map = new HashMap<String,Object>();
  2. map.put("inviteOneLink","inviteOneLink");//广告同事提供
  3. map.put("deep_link_value","deep_link_value");//广告同事提供
  4. map.put("deep_link_sub1","deep_link_sub1");//广告同事提供
  5. map.put("deep_link_sub2","deep_link_sub2");//广告同事提供
  6. map.put("af_sub1","af_sub1");//广告同事提供
  7. map.put("summer_sale","summer_sale");//广告同事提供
  8. map.put("mobile_share","mobile_share");//广告同事提供
  9. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(map,"appsflyer_Link_url");
  10. 注意事项:
  11. Map类型和参数名字 必须严格按照范例传入
  12. 回调范例:
  13. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  14. @Override
  15. public void Ourpalm_Spreads(String id, String... arg) {
  16. // TODO Auto-generated method stub
  17. Logs.i("info", " Ourpalm_Spreads id = " + id);
  18. if (id.equals("appsFlyer_LinkUrl")) {
  19. String url = arg[0]
  20. }
  21. }
  22. }

1.7 appsflyer深度链接回调

1.7.1激活回调

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. Logs.i("info", " Ourpalm_Spreads id = " + id);
  6. if (id.equals("appsFlyer_onConversionDataSuccess")) {
  7. //返回数据参考:{"install_time":"2023-05-09 03:01:10.454","af_status":"Organic","af_message":"organic install","is_first_launch":true}
  8. JsonObject mJsonObject = new JsonObject(arg[0])
  9. }
  10. }
  11. }

1.7.2onelink回调

  1. Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
  2. @Override
  3. public void Ourpalm_Spreads(String id, String... arg) {
  4. // TODO Auto-generated method stub
  5. Logs.i("info", " Ourpalm_Spreads id = " + id);
  6. if (id.equals("appsFlyer_onDeepLinking")) {
  7. //返回数据参考:
  8. {"af_dp":"com.fingerfun.coc.ios%3A%2F%2F","path":"\/YeOs","media_source":"appsflyer_sdk_test_int","scheme":"https","link":"https:\/\/my-ourpalm.onelink.me\/YeOs?pid=appsflyer_sdk_test_int&is_retargeting=true&clickid=079a4034-b873-4295-baa4-7c36d3872bc4&af_dp=com.fingerfun.coc.ios%253A%252F%252F&af_force_deeplink=true&AID=eeb42833-ac0c-4572-84e9-f87d92fd526c","host":"my-ourpalm.onelink.me","AID":"eeb42833-ac0c-4572-84e9-f87d92fd526c","is_deferred":false}
  9. JsonObject mJsonObject = new JsonObject(arg[0])
  10. }
  11. }
  12. }

1.8 appsflyer-获取AFID

  1. Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("getAppsFlyerID');

2 iOS接口使用说明

2.1 iOS接口说明

  1. 接口定义
  2. void LogEvent(const char* ourpalm_event_key, const char* event_paras);

添加库及配置文件ourpalm_statlog.json(由掌趣技术支持提供)
一定要将BaseSDK中对应广告SDK的资源,添加至游戏项目中;

配置参数
(1)掌趣配置文件ourpalm_statlog.json
(2)Facebook参数配置(正确参数请与运营人员确认)

(3)Firebase配置文件GoogleService-Info.plist(由掌趣数据产品组提供)

2.2 iOS接口使用举例

注意事项
(1)文档中的参数是用于举例,具体的要看DEV上配置的KEY及属性,进行传递;
注意:以下Key -Value值仅做举例说明,请以提供的产品技术打点接入文档为准;
例如:

1、注册账号(账号首次登陆该游戏,唯一不可重复)

  1. OPGameSDK::GetInstance().LogEvent("registration");

2、登录日志(账号登录)

  1. OPGameSDK::GetInstance().LogEvent("login");

3、充值成功日志(举例:充值1.99美元)

  1. Json::Value event_paras;
  2. event_paras["currency"] = Json::Value("USD");
  3. event_paras["price"] = Json::Value("1.99");
  4. Json::FastWriter fast_writer;
  5. string s = fast_writer.write(event_paras);
  6. OPGameSDK::GetInstance().LogEvent("purchase", s.c_str());

4、自定义事件(需要在DEV平台配置需要的参数)

  1. HashMap<String, Object> logValue = new HashMap<String, Object>();
  2. Ourpalm_Entry.getInstance(MainActivity).Ourpalm_SendAnalyticsInfoLog("custom1", logValue);

5、特殊自定义日志-购买二次回传(如需使用,请提前联系平台对接人进行配置)
举例:充值1.99美元,需要事件参数

  1. Json::Value event_paras;
  2. event_paras["currency"] = Json::Value("USD");
  3. event_paras["price"] = Json::Value("1.99");
  4. Json::FastWriter fast_writer;
  5. string s = fast_writer.write(event_paras);
  6. OPGameSDK::GetInstance().LogEvent("customIAP", s.c_str());

2.3 自定义字段接入方法

2.3.1 adjust广告打点事件中添加自定义字段接入方法

接入说明:
adjust支持在打点事件中添加游戏自定义属性

接口示例

  1. NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
  2. //启动标识
  3. [dic setObject:@"xxxgameLaunchIdentityxxx" forKey:@"gameLaunchIdentity"];
  4. //设备ID
  5. [dic setObject:@"xxxuni_deviceIdxxx" forKey:@"uni_deviceId"];
  6. //账号ID
  7. [dic setObject:@"xxxuni_accountIdxxx" forKey:@"uni_accountId"];
  8. //角色ID
  9. [dic setObject:@"xxxuni_roleIdxxx" forKey:@"uni_roleId"];
  10. OPGameSDK::GetInstance().ChannelSpreads("SetLogEventInfo",dic);
  11. [dic release];

2.3.2 Firebase广告打点事件中添加自定义字段接入方法

功能说明
角色登陆成功时,上传日志

接口示例

  1. #import <OPAdsSDK/OPAdsSDK.h>
  2. NSMutableDictionary *dic = [[[NSMutableDictionary alloc] init] autorelease];
  3. [dic setObject:@"用户Id" forKey:@"uid"];
  4. [dic setObject:@"角色Id" forKey:@"roleId"];
  5. [dic setObject:@"角色名称" forKey:@"roleName"];
  6. [dic setObject:@"游戏服id" forKey:@"logicDeployNodeCode"];
  7. [[OPAdsSDK shareInstance] sendGameLoginLog:dic];

2.4AppsFlyer接口

2.4.1 获取AppsFlyerId接口

  1. string appsFlyerId = OPGameSDK::GetInstance().GetChannelSpreads("GetAppsFlyerID");
  1. void appsFlyer_onDeepLinking(const char* jsonStr)
  2. {
  3. }
  4. void appsFlyer_onConversionDataSuccess(const char* jsonStr)
  5. {
  6. }
  7. OPGameSDK::GetInstance().ChannelSpreads("SetAppsFlyerDeepLink",(void*)appsFlyer_onDeepLinking);
  8. OPGameSDK::GetInstance().ChannelSpreads("SetAppsFlyerConversionDataSuccess",(void*)appsFlyer_onConversionDataSuccess);

2.4.3 邀请接口

需要注意的是:部分参数请与广告部门同事进行获取和确认(参数后有备注)

  1. void appsflyer_link_url(const char* jsonStr)
  2. {
  3. }
  4. NSMutableDictionary *dic = [[[NSMutableDictionary alloc] init] autorelease];
  5. [dic setObject:@"YeOs" forKey:@"inviteOneLink"];//onelink模版ID,广告同事提供
  6. [dic setObject:@"deep_link_value_test" forKey:@"deep_link_value"];//广告同事提供
  7. [dic setObject:@"deep_link_sub1_test" forKey:@"deep_link_sub1"];//广告同事提供
  8. [dic setObject:@"deep_link_sub2_test" forKey:@"deep_link_sub2"];//广告同事提供
  9. [dic setObject:@"af_sub1_test" forKey:@"af_sub1"];//广告同事提供
  10. [dic setObject:@"summer_sale_test" forKey:@"summer_sale"];//广告同事提供
  11. [dic setObject:@"media_source_test" forKey:@"media_source"];//广告同事提供
  12. [dic setObject:@"summer_sale_test" forKey:@"summer_sale"];//广告同事提供
  13. OPGameSDK::GetInstance().ChannelSpreads("appsflyer_link_url",(void*)appsflyer_link_url,dic);

2.4.4设置广告归因回调地址

Info.plist文件中配置

  1. <key>NSAdvertisingAttributionReportEndpoint</key>
  2. <string>https://appsflyer-skadnetwork.com/</string>