ChannelDiff/Android/904100357/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ChannelDiff/Android/904100357/libs/app-game_822055139-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ChannelDiff/Android/904100357/libs/app-game_904100357-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ChannelDiff/Android/904100357/libs/applog-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ChannelDiff/Android/904100357/libs/freesdk-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ChannelDiff/Android/904100357/libs/iapppay_plugin.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
GradleDiff/904100357/mainTemplate.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Project/app/src/game_904100357/AndroidManifest.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Project/app/src/game_904100357/java/com/secondworld/univeralsdk/FreePlatformUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ChannelDiff/Android/904100357/AndroidManifest.xml
New file @@ -0,0 +1,268 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.secondworld.univeralsdk" android:installLocation="auto" android:versionCode="1" android:versionName="1.1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature" /> <!-- Required --> <permission android:name="com.ziyouyouxi08.djxxz.permission.JPUSH_MESSAGE" /> <uses-permission android:name="com.ziyouyouxi08.djxxz.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <application android:allowBackup="true" android:hardwareAccelerated="false" android:icon="@drawable/app_icon" android:isGame="true" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" > <activity android:name="com.secondworld.univeralsdk.MainActivity" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="sensorLandscape" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" /> <meta-data android:name="android.vendor.home_indicator" android:value="hide" /> <meta-data android:name="android.max_aspect" android:value="1075419520.000000" /> <meta-data android:name="com.samsung.android.keepalive.density" android:value="true" /> </activity> <!-- 针对7.0以上的api开放的文件权限 --> <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.ziyouyouxi08.djxxz.fileProvider" android:exported="false" android:grantUriPermissions="true" > <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> <meta-data android:name="yl_appid" android:value="904100357" /> <meta-data android:name="yl_channelid" android:value="1000" /> <meta-data android:name="yl_platform_id" android:value="1000" /> <meta-data android:name="TrackAppID" android:value="${TrackAppID}" /> <meta-data android:name="TrackChannelID" android:value="${TrackChannelID}" /> <!-- 今日头条相关配置 --> <meta-data android:name="TouTiao_AppName" android:value="${TT_AppName}" /> <meta-data android:name="TouTiao_AppID" android:value="${TT_AppID}" /> <meta-data android:name="TouTiao_Chanel" android:value="${TT_Chanel}" /> <!-- Required SDK 核心功能 --> <!-- 可配置android:process参数将PushService放在其他进程中 --> <service android:name="cn.jpush.android.service.PushService" android:exported="false" android:process=":mult" > <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <!-- since 3.0.9 Required SDK 核心功能 --> <provider android:name="cn.jpush.android.service.DataProvider" android:authorities="com.ziyouyouxi08.djxxz.DataProvider" android:exported="true" /> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="com.ziyouyouxi08.djxxz" /> </intent-filter> </service> <!-- since 3.1.0 Required SDK 核心功能 --> <provider android:name="cn.jpush.android.service.DownloadProvider" android:authorities="com.ziyouyouxi08.djxxz.DownloadProvider" android:exported="true" /> <!-- Required SDK核心功能 --> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true" > <intent-filter android:priority="1000" > <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="com.ziyouyouxi08.djxxz" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <!-- Required SDK核心功能 --> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@android:style/Theme.NoTitleBar" > <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.ziyouyouxi08.djxxz" /> </intent-filter> </activity> <!-- SDK核心功能 --> <activity android:name="cn.jpush.android.ui.PopWinActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@style/MyDialogStyle" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.ziyouyouxi08.djxxz" /> </intent-filter> </activity> <!-- Required SDK核心功能 --> <service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:exported="false" /> <!-- Required SDK核心功能 --> <receiver android:name="cn.jpush.android.service.AlarmReceiver" /> <!-- Required since 3.0.7 --> <!-- 新的tag/alias接口结果返回需要开发者配置一个自定的广播 --> <!-- 该广播需要继承JPush提供的JPushMessageReceiver类, 并如下新增一个 Intent-Filter --> <!-- <receiver --> <!-- android:name="自定义 Receiver" --> <!-- android:enabled="true" > --> <!-- <intent-filter> --> <!-- <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" /> --> <!-- <category android:name="您应用的包名" /> --> <!-- </intent-filter> --> <!-- </receiver> --> <!-- <!– User defined. 用户自定义的广播接收器–> --> <receiver android:name="com.secondworld.univeralsdk.JPushReceiver" android:enabled="true" > <intent-filter> <!-- Required 用户注册SDK的intent --> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!-- Required 用户接收SDK消息的intent --> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!-- Required 用户接收SDK通知栏信息的intent --> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <action android:name="cn.jpush.android.intent.CONNECTION" /> <category android:name="com.ziyouyouxi08.djxxz" /> </intent-filter> </receiver> <!-- Required. For publish channel feature --> <!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。 --> <!-- 例如: --> <!-- 发到 Google Play 的APK可以设置为 google-play; --> <!-- 发到其他市场的 APK 可以设置为 xxx-market。 --> <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" /> <!-- Required. AppKey copied from Portal --> <meta-data android:name="JPUSH_APPKEY" android:value="bc1907c74128fdbd85018a83" /> <meta-data android:name="android.max_aspect" android:value="1075838976.000000" /> <meta-data android:name="com.samsung.android.keepalive.density" android:value="true" /> <!-- <meta-data --> <!-- android:name="android.notch_support" --> <!-- android:value="true" /> --> <meta-data android:name="notch.config" android:value="none" /> <meta-data android:name="android.vendor.full_screen" android:value="true" /> </application> </manifest> ChannelDiff/Android/904100357/libs/app-game_822055139-release.aarBinary files differ
ChannelDiff/Android/904100357/libs/app-game_904100357-release.aarBinary files differ
ChannelDiff/Android/904100357/libs/applog-release.aarBinary files differ
ChannelDiff/Android/904100357/libs/freesdk-release.aarBinary files differ
ChannelDiff/Android/904100357/libs/iapppay_plugin.aarBinary files differ
GradleDiff/904100357/mainTemplate.gradle
New file @@ -0,0 +1,59 @@ // GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' } } allprojects { repositories { flatDir { dirs 'libs' } } } apply plugin: 'com.android.application' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) **DEPS**} android { compileSdkVersion **APIVERSION** buildToolsVersion '**BUILDTOOLS**' defaultConfig { targetSdkVersion **TARGETSDKVERSION** applicationId '**APPLICATIONID**' ndk { abiFilters **ABIFILTERS** } } lintOptions { abortOnError false } aaptOptions { noCompress '.unity3d', '.ress', '.resource', '.obb' } **SIGN** buildTypes { debug { jniDebuggable true } release { // Set minifyEnabled to true if you want to run ProGuard on your project minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt' **SIGNCONFIG** } } } Project/app/src/game_904100357/AndroidManifest.xml
New file @@ -0,0 +1,238 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.secondworld.univeralsdk" android:installLocation="auto" android:versionCode="1" android:versionName="1.1.0"> <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/> <!-- Required --> <permission android:name="${appId}.permission.JPUSH_MESSAGE" /> <uses-permission android:name="${appId}.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <application android:allowBackup="true" android:icon="@drawable/app_icon" android:hardwareAccelerated="false" android:isGame="true" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"> <activity android:name="com.secondworld.univeralsdk.MainActivity" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="sensorLandscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" /> </activity> <!-- 针对7.0以上的api开放的文件权限 --> <provider android:name="android.support.v4.content.FileProvider" android:authorities="${appId}.fileProvider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> <meta-data android:name="yl_appid" android:value="${FreeSDK_AppID}" /> <meta-data android:name="yl_channelid" android:value="${FreeSDK_ChanelID}" /> <meta-data android:name="yl_platform_id" android:value="${FreeSDK_PlatformID}" /> <meta-data android:name="TrackAppID" android:value="${TrackAppID}" /> <meta-data android:name="TrackChannelID" android:value="${TrackChannelID}" /> <!-- 今日头条相关配置 --> <meta-data android:name="TouTiao_AppName" android:value="${TT_AppName}" /> <meta-data android:name="TouTiao_AppID" android:value="${TT_AppID}" /> <meta-data android:name="TouTiao_Chanel" android:value="${TT_Chanel}" /> <!-- Required SDK 核心功能--> <!-- 可配置android:process参数将PushService放在其他进程中 --> <service android:name="cn.jpush.android.service.PushService" android:exported="false" android:process=":mult"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <!-- since 3.0.9 Required SDK 核心功能--> <provider android:name="cn.jpush.android.service.DataProvider" android:authorities="${appId}.DataProvider" android:exported="true" /> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="${appId}" /> </intent-filter> </service> <!-- since 3.1.0 Required SDK 核心功能--> <provider android:name="cn.jpush.android.service.DownloadProvider" android:authorities="${appId}.DownloadProvider" android:exported="true" /> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="${appId}" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <!-- Required SDK核心功能--> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="${appId}" /> </intent-filter> </activity> <!-- SDK核心功能--> <activity android:name="cn.jpush.android.ui.PopWinActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" android:theme="@style/MyDialogStyle"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="${appId}" /> </intent-filter> </activity> <!-- Required SDK核心功能--> <service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:exported="false"></service> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.AlarmReceiver" /> <!-- Required since 3.0.7 --> <!-- 新的tag/alias接口结果返回需要开发者配置一个自定的广播 --> <!-- 该广播需要继承JPush提供的JPushMessageReceiver类, 并如下新增一个 Intent-Filter --> <!--<receiver--> <!--android:name="自定义 Receiver"--> <!--android:enabled="true" >--> <!--<intent-filter>--> <!--<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />--> <!--<category android:name="您应用的包名" />--> <!--</intent-filter>--> <!--</receiver>--> <!--<!– User defined. 用户自定义的广播接收器–>--> <receiver android:name="com.secondworld.univeralsdk.JPushReceiver" android:enabled="true"> <intent-filter> <!--Required 用户注册SDK的intent--> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <action android:name="cn.jpush.android.intent.CONNECTION" /> <category android:name="${appId}" /> </intent-filter> </receiver> <!-- Required. For publish channel feature --> <!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。--> <!-- 例如: --> <!-- 发到 Google Play 的APK可以设置为 google-play; --> <!-- 发到其他市场的 APK 可以设置为 xxx-market。 --> <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" /> <!-- Required. AppKey copied from Portal --> <meta-data android:name="JPUSH_APPKEY" android:value="${JpushAppKey}" /> </application> </manifest> Project/app/src/game_904100357/java/com/secondworld/univeralsdk/FreePlatformUtil.java
New file @@ -0,0 +1,155 @@ package com.secondworld.univeralsdk; import android.app.Activity; import com.allugame.freesdk.callback.FreeCallback; import com.allugame.freesdk.callback.FreeCallbackCode; import com.allugame.freesdk.callback.FreeRegisterCallback; import com.allugame.freesdk.entities.FreeOrder; import com.allugame.freesdk.port.FreePlatform; import com.reyun.tracking.sdk.Tracking; import com.ss.android.common.applog.TeaAgent; import com.ss.android.common.lib.EventUtils; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2018/7/18 0018. */ public class FreePlatformUtil { private static FreePlatformUtil s_Instance; private boolean m_Init = false; public boolean payProcessing = false; public static FreePlatformUtil getInstace() { if (s_Instance == null) { s_Instance = new FreePlatformUtil(); } return s_Instance; } private Map<String, Object> m_Message = new HashMap<>(); public void login(final Activity activity) { FreePlatform.getInstance().login(activity); } public void logout() { FreePlatform.getInstance().logout(); } public void switchAccount(final Activity activity) { FreePlatform.getInstance().switchAccount(activity); } public void pay(Activity activity, String title, String orderId, float mount, String cpInfo) { FreeOrder _order = new FreeOrder(title, orderId, mount, cpInfo); FreePlatform.getInstance().pay(activity, _order); } public void init(final Activity activity) { if (m_Init) { return; } FreePlatform.getInstance().init(activity, new FreeCallback() { @Override public void onResult(int i, String s) { m_Message.clear(); switch (i) { case FreeCallbackCode.INIT_SUCCESS: m_Init = true; m_Message.put("code", CodeA2U.FreePlatformInitOk); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.INIT_FAILURE: m_Message.put("code", CodeA2U.FreePlatformInitFail); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.LOGIN_SUCCESS: FreePlatform.getInstance().auth(); try { JSONObject _info = new JSONObject(s); m_Message.put("code", CodeA2U.FreePlatformLoginOk); m_Message.put("info", _info); UniversalUtil.sendMessageToUnity(m_Message); Tracking.setLoginSuccessBusiness(_info.getString("account")); } catch (JSONException e) { e.printStackTrace(); } break; case FreeCallbackCode.LOGIN_FAILURE: m_Message.put("code", CodeA2U.FreePlatformLoginFail); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.LOGOUT_SUCCESS: m_Message.put("code", CodeA2U.FreePlatformLogoutOk); UniversalUtil.sendMessageToUnity(m_Message); EventUtils.setLogin("mobile",true); break; case FreeCallbackCode.LOGOUT_FAILURE: m_Message.put("code", CodeA2U.FreePlatformLogoutFail); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.SWITCH_SUCCESS: m_Message.put("code", CodeA2U.FreePlatformSwitchAccountOk); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.LOGIN_CANCEL: m_Message.put("code", CodeA2U.FreePlatformLoginCancel); UniversalUtil.sendMessageToUnity(m_Message); break; case FreeCallbackCode.PAY_SUCCESS: m_Message.put("code", CodeA2U.FreePlatformPayOk); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; break; case FreeCallbackCode.PAY_FAIL: m_Message.put("code", CodeA2U.FreePlatformPayFail); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; break; case FreeCallbackCode.PAY_CANCEL: m_Message.put("code", CodeA2U.FreePlatformPayCancel); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; break; } } }); FreePlatform.getInstance().setRegisterCallback(new FreeRegisterCallback() { @Override public void onResult(boolean b, String account) { Map<String, Object> _registerMsg = new HashMap<>(); _registerMsg.put("code", CodeA2U.FreePlatformRegisterOk); _registerMsg.put("account", account); UniversalUtil.sendMessageToUnity(_registerMsg); Tracking.setRegisterWithAccountID(account); EventUtils.setRegister("mobile",true); } }); } } Project/app/src/game_904100357/java/com/secondworld/univeralsdk/H2EngineSDK.java
New file @@ -0,0 +1,418 @@ package com.secondworld.univeralsdk; import android.app.Activity; import android.app.AlertDialog; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.Settings; import android.widget.Toast; import com.allugame.freesdk.port.FreePlatform; import com.reyun.tracking.sdk.Tracking; import com.ss.android.common.applog.TeaAgent; import com.ss.android.common.applog.TeaConfigBuilder; import com.ss.android.common.lib.EventUtils; import com.unity3d.player.UnityPlayer; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.util.HashMap; import java.util.Map; import cn.jpush.android.api.JPushInterface; import cn.jpush.android.data.JPushLocalNotification; public class H2EngineSDK { private static final String TAG = "H2EngineSDK"; public static void HandleUnityMessage(String json) { LogUtil.i(TAG, "收到Unity发来的信息: " + json); Activity _activity = UnityPlayer.currentActivity; try { JSONObject _json = new JSONObject(json); int _code = _json.getInt("code"); switch (_code) { case CodeU2A.Init: init(_activity); break; case CodeU2A.AssetCopy: FileUtil.copyAssets(_activity); break; case CodeU2A.CopyOneAsset: FileUtil.copy(_activity, _json.getString("fileName")); break; case CodeU2A.BatteryListenStart: BatteryUtil.getInstance().start(_activity); break; case CodeU2A.BatteryListenStop: BatteryUtil.getInstance().stop(_activity); break; case CodeU2A.UniqueID: break; case CodeU2A.CopyContent: CopyContent(_activity, _json.getString("content")); break; case CodeU2A.OpenWebView: WebViewUtil.OpenWebView(_activity, _json.getString("url")); break; case CodeU2A.RestartApp: RestartApp(_activity); break; case CodeU2A.InstallAPK: InstallApp(_activity, _json.getString("path")); break; case CodeU2A.ExteneralStorage: GetExternalStorage(); break; case CodeU2A.RequestPermission: break; case CodeU2A.RequestManifestPermissions: break; case CodeU2A.FreePlatformInit: FreePlatformUtil.getInstace().init(_activity); break; case CodeU2A.FreePlatformLogin: FreePlatformUtil.getInstace().login(_activity); break; case CodeU2A.FreePlatformSwitchAccount: FreePlatformUtil.getInstace().switchAccount(_activity); break; case CodeU2A.FreePlatformLogout: FreePlatformUtil.getInstace().logout(); break; case CodeU2A.FreePlatformPay: FreePlatformUtil.getInstace().pay(_activity, _json.getString("title"), _json.getString("orderId"), (float) _json.getDouble("mount"), _json.getString("cpInfo")); FreePlatformUtil.getInstace().payProcessing = true; break; case CodeU2A.PayFinished: Tracking.setPayment(_json.getString("orderID"), _json.getString("payType"), _json.getString("moneyType"), (float) _json.getDouble("money")); int _money = (int) (_json.getDouble("money")); EventUtils.setPurchase("", "", "", 1, _json.getString("payType"), _json.getString("moneyType"), true, _money); FreePlatformUtil.getInstace().payProcessing = false; break; case CodeU2A.ClientPackage: // 初始化热云 Tracking.initWithKeyAndChannelId(_activity, UniversalUtil.getMetaString(_activity, "TrackAppID"), _json.getString("clientPkgID")); break; case CodeU2A.JPushAddLocalMessage: addLocalNotification(_activity, _json.getInt("id"), _json.getString("title"), _json.getString("content"), _json.getLong("fireTime")); break; case CodeU2A.JPushRemoveLocalMessage: removeNotification(_activity, _json.getInt("id")); break; } } catch (JSONException e) { e.printStackTrace(); } } // 本地推送 public static void addLocalNotification(Activity activity, int id, String title, String content, long fireTime) { try { JPushLocalNotification ln = new JPushLocalNotification(); ln.setBuilderId(0);// 设置样式 ln.setNotificationId(id);// id ln.setTitle(title);// 标题 ln.setContent(content);// 内容 ln.setBroadcastTime(fireTime);// 等待时间 JPushInterface.addLocalNotification(activity, ln); } catch (Exception e) { e.printStackTrace(); } } public static void removeNotification(Activity activity, int id) { JPushInterface.removeLocalNotification(activity, id); } public static void GetExternalStorage() { Map<String, Object> _msg = new HashMap<>(); _msg.put("code", CodeA2U.ExternalStorage); _msg.put("path", Environment.getExternalStorageDirectory().getAbsolutePath()); UniversalUtil.sendMessageToUnity(_msg); } public static void InstallApp(Activity activity, String path) { File _file = new File(path); if (_file == null) { LogUtil.i(TAG, "找不到给定地址的apk: " + path); return; } try { Intent _intent = new Intent(Intent.ACTION_VIEW); // if (Build.VERSION.SDK_INT >= 23) // { // _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Uri _contentUri = FileProvider.getUriForFile(activity, // "com.shandangceshi.snxxz.fileProvider", // _file); // _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive"); // // } // else // { _intent.setDataAndType(Uri.fromFile(_file), "application/vnd.android.package-archive"); _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // } activity.startActivity(_intent); } catch (Exception e) { e.printStackTrace(); Toast.makeText(activity, "没有找到打开此类文件的程序", Toast.LENGTH_SHORT).show(); } } public static void CopyContent(final Activity activity, final String content) { activity.runOnUiThread(new Runnable() { @Override public void run() { ClipboardManager _mgr = (ClipboardManager) activity.getSystemService( Context.CLIPBOARD_SERVICE); ClipData _data = ClipData.newPlainText("playerId", content); _mgr.setPrimaryClip(_data); } }); } public static void RestartApp(final Activity activity) { activity.runOnUiThread(new Runnable() { @Override public void run() { new Thread() { public void run() { String _pn = activity.getPackageName(); PackageManager _pm = activity.getPackageManager(); Intent _l = _pm.getLaunchIntentForPackage(_pn); _l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); activity.startActivity(_l); android.os.Process.killProcess(android.os.Process.myPid()); } }.start(); activity.finish(); } }); } public static void init(final Activity activity) { final int _memoryTotal = (int) (UniversalUtil.getMemTotal() / 1024); if (_memoryTotal < 1024) { LogUtil.i(TAG, "检测设备内存不满足运行程序标准"); AlertDialog.Builder _builder = new AlertDialog.Builder(activity); _builder.setIcon(R.drawable.app_icon); _builder.setTitle("警告"); _builder.setMessage("您的手机内存不足,无法正常运行游戏"); _builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { android.os.Process.killProcess(android.os.Process.myPid()); } }); _builder.show(); return; } new Thread(new Runnable() { @Override public void run() { LogUtil.i(TAG, "开始执行初始化"); GetExternalStorage(); // ------------------------------- 设备信息 ------------------------------- Map<String, Object> _msgStruct = new HashMap<>(); _msgStruct.put("code", CodeA2U.DeviceInfo); _msgStruct.put("userAgent", System.getProperty("http.agent")); _msgStruct.put("mac", UniqueID.getLocalMac(activity)); _msgStruct.put("imei", UniqueID.getDeviceId(activity)); _msgStruct.put("android_id", Settings.System.getString(activity.getContentResolver(), Settings.System.ANDROID_ID)); _msgStruct.put("unique_id", UniqueID.get(activity)); _msgStruct.put("memoryTotal", _memoryTotal); UniversalUtil.sendMessageToUnity(_msgStruct); // ------------------------------- 自由SDK ------------------------------- FreePlatformUtil.getInstace().init(activity); // ------------------------------- 极光推送 ------------------------------- JPushInterface.setDebugMode(true); JPushInterface.init(activity); // ------------------------------- 今天头条 ----------------------- TeaAgent.init(TeaConfigBuilder.create(activity) .setAppName(UniversalUtil.getMetaString(activity, "TouTiao_AppName")) .setChannel(UniversalUtil.getMetaString(activity, "TouTiao_Chanel")) .setAid(UniversalUtil.getMetaInt(activity, "TouTiao_AppID")) .createTeaConfig()); TeaAgent.setDebug(true); final long _waitingTime = System.currentTimeMillis(); while (true) { // 等待获取极光registrationID if (!JPushInterface.getRegistrationID(activity).equals("")) { break; } long _escapeTime = System.currentTimeMillis() - _waitingTime; if (_escapeTime > 3000) { LogUtil.w(TAG, "等待获取极光推送registrationID超时: 3秒"); break; } } _msgStruct.clear(); _msgStruct.put("code", CodeA2U.PushClientID); _msgStruct.put("clientID", JPushInterface.getRegistrationID(activity)); UniversalUtil.sendMessageToUnity(_msgStruct); _msgStruct.clear(); _msgStruct.put("code", CodeA2U.SdkInitComplete); UniversalUtil.sendMessageToUnity(_msgStruct); LogUtil.i(TAG, "初始化执行完毕"); } }).start(); } public static void onCreate(Activity activity, Bundle savedInstanceState) { FreePlatform.getInstance().onCreate(); } public static void onWindowFocusChanged(boolean b) { } public static void onNewIntent(final Activity activity, final Intent intent) { } public static void onActivityResult(int requestCode, int resultCode, final Intent data, final Activity activity) { } public static void onConfigurationChanged(final Configuration newConfig) {} public static void onRestart(final Activity activity) { } public static void onStart(final Activity activity) { FreePlatform.getInstance().onStart(); } public static void onPause(final Activity activity) { FreePlatform.getInstance().onPause(); TeaAgent.onPause(activity); } public static void onResume(final Activity activity) { FreePlatform.getInstance().onResume(); TeaAgent.onResume(activity); if(FreePlatformUtil.getInstace().payProcessing) { Map<String, Object> _msgStruct = new HashMap<>(); _msgStruct.put("code", CodeA2U.FreePlatformPayCancel); UniversalUtil.sendMessageToUnity(_msgStruct); FreePlatformUtil.getInstace().payProcessing = false; } } public static void onStop(final Activity activity) { FreePlatform.getInstance().onStop(); } public static void onDestroy(final Activity activity) { FreePlatform.getInstance().onDestory(); Tracking.exitSdk(); } }