Channel/Android/hygame/debug/libs/library-debug-hygame.aarBinary files differ
Channel/Android/hygame/release/libs/library-release-hygame.aarBinary files differ
SdkProject/channel/hygame/AndroidManifest.xml
@@ -4,10 +4,8 @@ package="com.secondworld.sdk"> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> SdkProject/channel/hygame/build.gradle
@@ -1,4 +1,15 @@ //当前脚本为渠道的差异化配置 allprojects { repositories { maven { url 'https://artifact.bytedance.com/repository/Volcengine/' } flatDir { dirs 'libs' } } } dependencies { // implementation project(path: ':quick') } SdkProject/channel/hygame/deps.gradle
@@ -1 +1,15 @@ //此脚本为渠道的第三方远程依赖库配置,会复制到unity中用于构建 dependencies { //在build.gradle文件的dependencies中引入SDK,集成Lite版本 // Applog 上报组件(必须) implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.15.4' // 商业化组件(必须) 6.14.2 以上版本商业化组件独立,注:必须接入以免平台限制应用上传 implementation 'com.bytedance.applog:RangersAppLog-All-convert:6.15.4' // 调试工具(可选) //debugImplementation 'com.bytedance.applog:RangersAppLog-DevTools:3.0.0' implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61' compile(name: 'humesdk-1.0.0', ext: 'aar') //implementation(name: 'humesdk-1.0.0', ext: 'aar') } SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java
@@ -5,7 +5,7 @@ @Override public void onCreate() { super.onCreate(); //QuickSdkMgr.I.register("40450025922275820036898902533267","31232581"); } @Override SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java
@@ -20,6 +20,8 @@ // QuickSdkMgr.I.requestPermissions(activity); //QuickSdkMgr.I.init(activity); com.quicksdk.Sdk.getInstance().onCreate(activity); LogUtil.d("BtGameMain", "启动的是 BtGameMain!"); PlatformDiff.I.OnCreate(GameAppProxy.app.getApplicationContext()); } @Override @@ -95,4 +97,7 @@ } return super.onKeyDown(keyCode, event); } } SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java
@@ -1,5 +1,20 @@ package com.secondworld.sdk; import android.Manifest; import android.content.Context; import android.widget.Toast; import com.bytedance.applog.AppLog; import com.bytedance.applog.InitConfig; import com.bytedance.applog.game.GameReportHelper; import com.bytedance.applog.util.UriConstants; import com.bytedance.hume.readapk.HumeSDK; import com.quicksdk.User; import com.secondworld.sdk.utils.LogUtil; import org.json.JSONException; import org.json.JSONObject; public class BtGamePlatform extends PlatformDiff { @Override @@ -16,4 +31,129 @@ public String platformProductKey() { return "12355811"; } @Override public void CreateRoleEvent(String roleID) { GameReportHelper.onEventCreateGameRole(roleID); } @Override public void PayEvent(String title, String goodsID, int mount) { //内置事件 “支付”,属性:商品类型,商品名称,商品ID,商品数量,支付渠道,币种,是否成功(必传),金额(必传) // 付费金额单位为元 GameReportHelper.onEventPurchase("gift", title, goodsID,1, "youxitu","¥", true, mount); } @Override public void PrePayEvent(String title, String goodsID, int mount) { //关键行为 JSONObject paramsObj = new JSONObject(); try { paramsObj.put("origin_event", "prepay"); // 添加原始事件名称参数 } catch (JSONException e) { e.printStackTrace(); } AppLog.onEventV3("game_addiction", paramsObj); } @Override public void OnCreate(Context var0) { String channel = "dy"; /* 初始化SDK开始 */ // 第一个参数APPID: 参考2.1节获取 // 第二个参数CHANNEL: 填写渠道信息,请注意不能为空 final InitConfig config = new InitConfig("520784", channel); // 设置数据上送地址 config.setUriConfig(UriConstants.DEFAULT); config.setImeiEnable(false);//建议关停获取IMEI(出于合规考虑) config.setAutoTrackEnabled(true); // 全埋点开关,true开启,false关闭 config.setLogEnable(false); // true:开启日志,参考4.3节设置logger,false:关闭日志 AppLog.setEncryptAndCompress(true); // 加密开关,true开启,false关闭 config.setMacEnable(false); config.setOperatorInfoEnabled(false); config.setEnablePlay(true); config.setAutoStart(false); //AppLog.init(var0, config, GameActivityProxy.I.activity); AppLog.init(var0, config); /* 初始化SDK结束 */ } @Override public String[] platformPermission() { //return new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE}; return new String[] {}; } @Override public void RegisterEvent(String platform) { GameReportHelper.onEventRegister(platform,true); Login(); } @Override public void Login() { switch (QuickSdkMgr.I.sdkInitState) { case FAILED: { if (GameActivityProxy.I.activity == null) return; if (QuickSdkMgr.I.hasPermissions(GameActivityProxy.I.activity)) { //init(BtGameMain.I.activity); Toast.makeText(GameAppProxy.app, "异常请重启游戏", Toast.LENGTH_LONG).show(); } break; } case SUCCEED: { //User.getInstance().login(GameActivityProxy.I.activity); GameActivityProxy.I.activity.runOnUiThread(new Runnable() { @Override public void run() { User.getInstance().login(GameActivityProxy.I.activity); } }); break; } case UNKNOWN: { QuickSdkMgr.I.sdkInitState = PlatformSdkMgr.SdkInitState.LOADING; break; } case LOADING: { //Toast.makeText(GameAppProxy.app, "账号登录成功后,请再次点击进入游戏", Toast.LENGTH_LONG).show(); QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity); break; } } } @Override public void StartRequestPermission() { //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity); //获取渠道名称 context为宿主的context String channel = HumeSDK.getChannel(GameAppProxy.app.getApplicationContext()); if (channel == null || channel.isEmpty()) { channel = "dy"; } //获取humeSDK版本号 String version = HumeSDK.getVersion(); LogUtil.i("HumeSDK", "DYStart " + channel + " "+ version); AppLog.getInitConfig().setChannel(channel); AppLog.start(); } } SdkProject/gradle.properties
@@ -18,4 +18,4 @@ ## Automatically convert third-party libraries to use AndroidX android.enableJetifier=false #当前构建的渠道名称 CHANNEL_NAME=hygame2 CHANNEL_NAME=hygame SdkProject/library/libs/humesdk-1.0.0.aarBinary files differ
SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java
@@ -1,5 +1,7 @@ package com.secondworld.sdk; import android.content.Context; public abstract class PlatformDiff { public static PlatformDiff I; @@ -9,4 +11,22 @@ public abstract String platformProductCode(); public abstract String platformProductKey(); public abstract void CreateRoleEvent(String roleID); //创建角色后需要处理的逻辑,如不同sdk的汇报接口不同 public abstract void PayEvent(String title, String goodsID, int mount); //支付后需要处理的逻辑,如不同sdk的汇报接口不同 public abstract void PrePayEvent(String title, String goodsID, int mount); //发起支付订单后需要处理的逻辑,如不同sdk的汇报接口不同 public abstract void OnCreate(Context var0); //启动成功后需要处理的逻辑,如不同sdk的汇报接口不同 public abstract String[] platformPermission(); //请求的权限类型 public abstract void RegisterEvent(String platform); //注册后需要处理的逻辑,如不同sdk的汇报接口不同 public abstract void Login(); //登录后需要处理的逻辑,如不同sdk登录流程不同 //请求权限 常规quickSDK登录流程 1.游戏方弹出隐私政策等 2.游戏方请求权限,拒绝权限也可进入下一步 3.初始化quicksdk 4.登录 //加入抖音sdk后,抖音必须在生命周期初始化,在权限请求后启动,按规定流程修改为 // 1.游戏方弹出隐私政策等 // 2.必须在用户主动交互应用场景才能请求权限 如在登录界面出现点击登录按钮后,初始化quicksdk // 3.登录 public abstract void StartRequestPermission(); //请求权限 } SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
@@ -1,7 +1,7 @@ package com.secondworld.sdk.command; import com.secondworld.sdk.GameActivityProxy; import com.secondworld.sdk.PermissionManager; import com.secondworld.sdk.PlatformDiff; import com.secondworld.sdk.QuickSdkMgr; import com.secondworld.sdk.utils.CodeU2A; import com.secondworld.sdk.utils.LogUtil; @@ -18,15 +18,14 @@ @Override public void process(JSONObject json) throws JSONException { //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity); GameActivityProxy.I.activity.runOnUiThread(new Runnable() { @Override public void run() { LogUtil.i("SdkManager", "CmdRequestPermissionStart process"); QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity); //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity); PlatformDiff.I.StartRequestPermission(); } }); } SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java
@@ -47,22 +47,29 @@ public String channelID; int REQUEST_RECORD_PERMISSION_SETTING = 110; private boolean hasPermissions(Activity activity) { public boolean hasPermissions(Activity activity) { //权限提取到各自项目中 // return (ContextCompat.checkSelfPermission(activity, // Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) // && (ContextCompat.checkSelfPermission(activity, // Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED); return ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED; String[] permissionStr = PlatformDiff.I.platformPermission(); for (int i = 0; i < permissionStr.length; i++) { if (ContextCompat.checkSelfPermission(activity, permissionStr[i]) != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } public void requestPermissions(Activity activity) { try { if (!hasPermissions(activity)) { ActivityCompat.requestPermissions(activity, new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestCode.QUICK); ActivityCompat.requestPermissions(activity, PlatformDiff.I.platformPermission(), RequestCode.QUICK); } else { @@ -119,40 +126,14 @@ } public void init(Activity activity) { sdkInitState = SdkInitState.LOADING; Sdk.getInstance().init(activity, productCode, productKey); } public void login() { switch (sdkInitState) { case FAILED: case UNKNOWN: { if (GameActivityProxy.I.activity == null) return; if (hasPermissions(GameActivityProxy.I.activity)) { //init(BtGameMain.I.activity); Toast.makeText(GameAppProxy.app, "异常请重启游戏", Toast.LENGTH_LONG).show(); } break; } case SUCCEED: { //User.getInstance().login(GameActivityProxy.I.activity); GameActivityProxy.I.activity.runOnUiThread(new Runnable() { @Override public void run() { User.getInstance().login(GameActivityProxy.I.activity); } }); break; } case LOADING: { Toast.makeText(GameAppProxy.app, "正在初始化中,请稍等!", Toast.LENGTH_LONG).show(); break; } } PlatformDiff.I.Login(); } public void loginOut() { @@ -247,8 +228,8 @@ sdkInitState = SdkInitState.SUCCEED; LogUtil.debug("SdkManager", "初始化成功"); UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk); PlatformDiff.I.RegisterEvent("youxitu"); } @Override public void onFailed(String message, String trace) { //初始化失败 SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java
@@ -1,9 +1,9 @@ package com.secondworld.sdk.command; import com.quicksdk.entity.GameRoleInfo; import com.secondworld.sdk.PlatformDiff; import com.secondworld.sdk.QuickSdkMgr; import com.secondworld.sdk.utils.CodeU2A; import org.json.JSONObject; public class CmdCreateRole implements ICommand { @@ -39,5 +39,6 @@ roleInfo.setProfession("-1"); //设置角色职业名称 roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190 QuickSdkMgr.I.setGameRoleInfo(roleInfo, true); PlatformDiff.I.CreateRoleEvent(json.getString("roleID")); } } SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java
@@ -1,5 +1,6 @@ package com.secondworld.sdk.command; import com.secondworld.sdk.PlatformDiff; import com.secondworld.sdk.utils.CodeU2A; import org.json.JSONObject; @@ -12,5 +13,7 @@ @Override public void process(JSONObject json) throws Exception { int money = (int) json.getDouble("money"); PlatformDiff.I.PayEvent("title" + money, "goodsID"+money, money); } } SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java
@@ -3,9 +3,9 @@ import com.quicksdk.entity.GameRoleInfo; import com.quicksdk.entity.OrderInfo; import com.secondworld.sdk.GameAppProxy; import com.secondworld.sdk.PlatformDiff; import com.secondworld.sdk.QuickSdkMgr; import com.secondworld.sdk.utils.CodeU2A; import org.json.JSONObject; import java.net.URLEncoder; @@ -64,5 +64,6 @@ URLEncoder.encode(extraData.toString(), "utf-8")); QuickSdkMgr.I.pay(orderInfo, roleInfo); PlatformDiff.I.PrePayEvent(json.getString("title"), json.getString("cpInfo"), (int) json.getDouble("mount")); } }