Showing
57 changed files
with
777 additions
and
188 deletions
... | @@ -57,3 +57,6 @@ | ... | @@ -57,3 +57,6 @@ |
57 | - 修复防沉迷计时可能不准的问题, 增加了埋点的类型和参数,直接替换PoolSdk_V2_xxxx.jar | 57 | - 修复防沉迷计时可能不准的问题, 增加了埋点的类型和参数,直接替换PoolSdk_V2_xxxx.jar |
58 | - 2021-01-20 | 58 | - 2021-01-20 |
59 | - 去掉sentry上报,增加留存事件埋点类型,直接替换PoolSdk_V2_xxxx.jar | 59 | - 去掉sentry上报,增加留存事件埋点类型,直接替换PoolSdk_V2_xxxx.jar |
60 | + | ||
61 | +- 2021-11-16 | ||
62 | + - 重新整理国内与海外文档 | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <?xml version="1.0" ?> | 1 | <?xml version="1.0" ?> |
2 | <config> | 2 | <config> |
3 | - <sdkconfig channelparameter1="" channelparameter2="" custom="{}" gamechannelid="" gamesimplename="ces" logceportcrl="https://public.sdk.guangkatf.com/sdk/statistic" logincheckurl="https://public.sdk.guangkatf.com/logincheck/check" paycheckurl="https://public.sdk.guangkatf.com/paycheck/confirm" payorderurl="https://public.sdk.guangkatf.com/paycheck/create" sdksimplename="poolsdk" sdkversioncode="V1_0" usertype="597"/> | 3 | + <sdkconfig channelparameter1="" channelparameter2="" custom="{}" gamechannelid="" gamesimplename="fytx_test" logincheckurl="http://183.136.223.85:9010/logincheck/check" logreporturl="http://183.136.223.85:9030/sdk/statistic" paycheckurl="http://183.136.223.85:9020/paycheck/confirm" payorderurl="http://183.136.223.85:9020/paycheck/create" sdksimplename="poolsdk" sdkversioncode="V1_0" usertype="739"/> |
4 | </config> | 4 | </config> | ... | ... |
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <project version="4"> | 2 | <project version="4"> |
3 | <component name="CompilerConfiguration"> | 3 | <component name="CompilerConfiguration"> |
4 | - <bytecodeTargetLevel target="1.8" /> | 4 | + <bytecodeTargetLevel target="11" /> |
5 | </component> | 5 | </component> |
6 | </project> | 6 | </project> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <project version="4"> | 2 | <project version="4"> |
3 | - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> | 3 | + <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK"> |
4 | <output url="file://$PROJECT_DIR$/build/classes" /> | 4 | <output url="file://$PROJECT_DIR$/build/classes" /> |
5 | </component> | 5 | </component> |
6 | <component name="ProjectType"> | 6 | <component name="ProjectType"> | ... | ... |
... | @@ -3,6 +3,7 @@ | ... | @@ -3,6 +3,7 @@ |
3 | <component name="RunConfigurationProducerService"> | 3 | <component name="RunConfigurationProducerService"> |
4 | <option name="ignoredProducers"> | 4 | <option name="ignoredProducers"> |
5 | <set> | 5 | <set> |
6 | + <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" /> | ||
6 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> | 7 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> |
7 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> | 8 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> |
8 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> | 9 | <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> | ... | ... |
1 | apply plugin: 'com.android.application' | 1 | apply plugin: 'com.android.application' |
2 | 2 | ||
3 | android { | 3 | android { |
4 | - compileSdkVersion 29 | 4 | + compileSdkVersion 30 |
5 | - buildToolsVersion '29.0.2' | 5 | + buildToolsVersion '30.0.2' |
6 | defaultConfig { | 6 | defaultConfig { |
7 | applicationId "com.poolsdk.demo" | 7 | applicationId "com.poolsdk.demo" |
8 | - minSdkVersion 21 | 8 | + minSdkVersion 19 |
9 | - targetSdkVersion 29 | 9 | + targetSdkVersion 30 |
10 | versionCode 2 | 10 | versionCode 2 |
11 | versionName "1.0" | 11 | versionName "1.0" |
12 | } | 12 | } |
... | @@ -20,18 +20,4 @@ android { | ... | @@ -20,18 +20,4 @@ android { |
20 | 20 | ||
21 | dependencies { | 21 | dependencies { |
22 | implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') | 22 | implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs') |
23 | - // implementation 'com.android.support.constraint:constraint-layout:1.0.2' | ||
24 | - //implementation files('libs/PoolSdk_V2_20200313.jar') | ||
25 | -// implementation 'com.android.support:appcompat-v7:28.+' | ||
26 | -// implementation 'com.android.support:support-v4:28.+' | ||
27 | -// | ||
28 | -// implementation 'com.android.support.constraint:constraint-layout:1.1.3' | ||
29 | -// implementation 'com.android.support:design:28.+' | ||
30 | - | ||
31 | -// implementation 'com.appsflyer:af-android-sdk:5.4.1' | ||
32 | -// implementation 'com.android.installreferrer:installreferrer:1.0' | ||
33 | - | ||
34 | -// implementation 'com.google.android.gms:play-services-ads-identifier:16.0.0' | ||
35 | -// compile 'com.google.firebase:firebase-core:16.0.6' | ||
36 | -// compile 'com.google.firebase:firebase-messaging:17.3.4' | ||
37 | } | 23 | } | ... | ... |
demo/app/libs/PoolSdk_V2_1221.jar
deleted
100644 → 0
No preview for this file type
demo/app/libs/PoolSdk_V2_210913.jar
0 → 100644
No preview for this file type
demo/app/libs/okio-1.13.0.jar
0 → 100644
No preview for this file type
demo/app/libs/okio-1.6.0.jar
deleted
100644 → 0
No preview for this file type
... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
4 | 4 | ||
5 | <!-- SDK start --> | 5 | <!-- SDK start --> |
6 | <uses-permission android:name="android.permission.INTERNET" /> | 6 | <uses-permission android:name="android.permission.INTERNET" /> |
7 | - <!-- 国内需要用公共SDK的后台数据功能需要以下权限 --> | 7 | + <!-- 国内需要用公共SDK的后台数据功能需要以下权限(非必要) --> |
8 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> | 8 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
9 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | 9 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
10 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | 10 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
... | @@ -23,7 +23,6 @@ | ... | @@ -23,7 +23,6 @@ |
23 | android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> | 23 | android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> |
24 | <intent-filter> | 24 | <intent-filter> |
25 | <action android:name="android.intent.action.MAIN" /> | 25 | <action android:name="android.intent.action.MAIN" /> |
26 | - | ||
27 | <category android:name="android.intent.category.LAUNCHER" /> | 26 | <category android:name="android.intent.category.LAUNCHER" /> |
28 | </intent-filter> | 27 | </intent-filter> |
29 | </activity> | 28 | </activity> | ... | ... |
1 | <?xml version="1.0" ?> | 1 | <?xml version="1.0" ?> |
2 | <config> | 2 | <config> |
3 | - <sdkconfig channelparameter1="" channelparameter2="" custom="{}" gamechannelid="" gamesimplename="ces" logreporturl="https://public.sdk.guangkatf.com/sdk/statistic" logincheckurl="https://public.sdk.guangkatf.com/logincheck/check" paycheckurl="https://public.sdk.guangkatf.com/paycheck/confirm" payorderurl="https://public.sdk.guangkatf.com/paycheck/create" sdksimplename="poolsdk" sdkversioncode="V1_0" usertype="597"/> | 3 | + <sdkconfig channelparameter1="" channelparameter2="" custom="{}" gamechannelid="" gamesimplename="fytx_test" logincheckurl="http://183.136.223.85:9010/logincheck/check" logreporturl="http://183.136.223.85:9030/sdk/statistic" paycheckurl="http://183.136.223.85:9020/paycheck/confirm" payorderurl="http://183.136.223.85:9020/paycheck/create" sdksimplename="poolsdk" sdkversioncode="V1_0" usertype="739"/> |
4 | </config> | 4 | </config> | ... | ... |

226 KB
1 | -<?xml version="1.0" encoding="utf-8"?> | ||
2 | -<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | - package="com.youai.poolsdk.demo" | ||
4 | - android:versionCode="1" | ||
5 | - android:versionName="1.0" > | ||
6 | - | ||
7 | - <uses-sdk | ||
8 | - android:minSdkVersion="8" | ||
9 | - android:targetSdkVersion="19" /> | ||
10 | - | ||
11 | - <!-- SDK start --> | ||
12 | - <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | ||
13 | - <uses-permission android:name="android.permission.INTERNET" /> | ||
14 | - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||
15 | - <uses-permission android:name="android.permission.READ_PHONE_STATE" /> | ||
16 | - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
17 | - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | ||
18 | - <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> | ||
19 | - <uses-permission android:name="android.permission.READ_LOGS" /> | ||
20 | - <uses-permission android:name="android.permission.GET_TASKS" /> | ||
21 | - <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> | ||
22 | - <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> | ||
23 | - <uses-permission android:name="android.permission.RECORD_AUDIO" /> | ||
24 | - <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> | ||
25 | - <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" /> | ||
26 | - <uses-permission android:name="android.permission.NFC" /> | ||
27 | - <uses-feature android:name="android.hardware.nfc.hce" /> | ||
28 | - <!-- SDK end --> | ||
29 | - | ||
30 | - <application | ||
31 | - android:name="com.gzyouai.publicsdk.application.PoolSDKApplication" | ||
32 | - android:allowBackup="true" | ||
33 | - android:icon="@drawable/public_sdk_self_ic_launcher" | ||
34 | - android:label="@string/app_name" > | ||
35 | - <activity | ||
36 | - android:name="com.youai.foolsdk.demo.AppActivity" | ||
37 | - android:configChanges="keyboardHidden|orientation|screenSize" | ||
38 | - android:label="@string/app_name" | ||
39 | - android:screenOrientation="landscape" | ||
40 | - android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > | ||
41 | - <intent-filter> | ||
42 | - <action android:name="android.intent.action.MAIN" /> | ||
43 | - | ||
44 | - <category android:name="android.intent.category.LAUNCHER" /> | ||
45 | - </intent-filter> | ||
46 | - </activity> | ||
47 | - <!-- SDK start --> | ||
48 | - <receiver | ||
49 | - android:name="com.gzyouai.fengniao.sdk.framework.AppInstallReceiver" | ||
50 | - android:label="@string/app_name" > | ||
51 | - <intent-filter> | ||
52 | - <action android:name="android.intent.action.PACKAGE_ADDED" /> | ||
53 | - <action android:name="android.intent.action.PACKAGE_REPLACED" /> | ||
54 | - <action android:name="android.intent.action.PACKAGE_REMOVED" /> | ||
55 | - | ||
56 | - <data android:scheme="package" /> | ||
57 | - </intent-filter> | ||
58 | - </receiver> | ||
59 | - | ||
60 | - <activity | ||
61 | - android:name="com.youai.sdk.YouaiSDK" | ||
62 | - android:label="youai_sdk" | ||
63 | - android:launchMode="singleTask" | ||
64 | - android:theme="@android:style/Theme.Dialog" /> | ||
65 | - | ||
66 | - <service | ||
67 | - android:name="com.youai.sdk.YouaiService" | ||
68 | - android:enabled="true" > | ||
69 | - <intent-filter> | ||
70 | - <action android:name="com.youai.sdk.YouaiService" /> | ||
71 | - </intent-filter> | ||
72 | - </service> | ||
73 | - <service | ||
74 | - android:name="com.youai.sdk.FloatViewService" | ||
75 | - android:enabled="true" | ||
76 | - android:exported="true" > | ||
77 | - <intent-filter> | ||
78 | - <action android:name="com.youai.sdk.FloatViewService" /> | ||
79 | - </intent-filter> | ||
80 | - </service> | ||
81 | - | ||
82 | - <receiver android:name="com.youai.sdk.Receiver" > | ||
83 | - <intent-filter> | ||
84 | - <action android:name="android.intent.action.BOOT_COMPLETED" /> | ||
85 | - | ||
86 | - <category android:name="android.intent.category.LAUNCHER" /> | ||
87 | - </intent-filter> | ||
88 | - </receiver> | ||
89 | - | ||
90 | - <activity | ||
91 | - android:name="com.alipay.sdk.app.H5PayActivity" | ||
92 | - android:configChanges="keyboardHidden|navigation|orientation" | ||
93 | - android:exported="false" | ||
94 | - android:screenOrientation="behind" /> | ||
95 | - <activity | ||
96 | - android:name="com.alipay.sdk.auth.AuthActivity" | ||
97 | - android:configChanges="keyboardHidden|navigation|orientation" | ||
98 | - android:exported="false" | ||
99 | - android:screenOrientation="behind" /> | ||
100 | - <activity | ||
101 | - android:name=".wxapi.WXPayEntryActivity" | ||
102 | - android:exported="true" | ||
103 | - android:launchMode="singleTop" /> | ||
104 | - <activity | ||
105 | - android:name=".wxapi.WXEntryActivity" | ||
106 | - android:exported="true" | ||
107 | - android:launchMode="singleTop" /> | ||
108 | - <!-- SDK end --> | ||
109 | - </application> | ||
110 | - | ||
111 | -</manifest> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
No preview for this file type
demo/app/src/main/bin/classes.dex
deleted
100644 → 0
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
demo/app/src/main/bin/dexedLibs/YouYuSDK_190627-25cf9e4fb378a5e934c934a077782137.jar
deleted
100644 → 0
No preview for this file type
demo/app/src/main/bin/dexedLibs/YouYuSDK_190815-9df67fe2de13c627bec1969b8517feee.jar
deleted
100644 → 0
No preview for this file type
demo/app/src/main/bin/dexedLibs/YouYuSDK_190816-6c98f8148242172d3c63ff1ef7816451.jar
deleted
100644 → 0
No preview for this file type
demo/app/src/main/bin/dexedLibs/android-support-v4-17c79a85eb58fe6506760e8b1a979f9a.jar
deleted
100644 → 0
No preview for this file type
No preview for this file type
demo/app/src/main/bin/jarlist.cache
deleted
100644 → 0

5.57 KB

6.25 KB

5.49 KB

5.61 KB

3.64 KB

384 KB
demo/app/src/main/bin/resources.ap_
deleted
100644 → 0
No preview for this file type
... | @@ -91,6 +91,8 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -91,6 +91,8 @@ public class AppActivity extends Activity implements OnClickListener { |
91 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); | 91 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
92 | 92 | ||
93 | PoolSdkHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); | 93 | PoolSdkHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); |
94 | + | ||
95 | + //如果游戏有权限申请,进入游戏时申请权限完毕再调用公共SDK初始化接口 | ||
94 | init(saveBundle); | 96 | init(saveBundle); |
95 | } | 97 | } |
96 | 98 | ||
... | @@ -100,11 +102,12 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -100,11 +102,12 @@ public class AppActivity extends Activity implements OnClickListener { |
100 | saveBundle = savedInstanceState; | 102 | saveBundle = savedInstanceState; |
101 | initView(); | 103 | initView(); |
102 | 104 | ||
103 | - | 105 | + PoolSdkLog.setIsShowLog(true);//游戏无需设置该接口 |
104 | - PoolSdkLog.setIsShowLog(true); | ||
105 | PoolSdkConfig.readPoolSdkConfigData(this); | 106 | PoolSdkConfig.readPoolSdkConfigData(this); |
106 | 107 | ||
107 | //国内游戏接入如果需要使用平台统计等功能,需要获取手机识别号和读写SD卡权限再调用初始化接口 | 108 | //国内游戏接入如果需要使用平台统计等功能,需要获取手机识别号和读写SD卡权限再调用初始化接口 |
109 | + //海外接入直接调用SDK初始化接口即可 | ||
110 | + | ||
108 | if(getApplicationInfo().targetSdkVersion >= 23 && Build.VERSION.SDK_INT >= 23){ | 111 | if(getApplicationInfo().targetSdkVersion >= 23 && Build.VERSION.SDK_INT >= 23){ |
109 | requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE},1); | 112 | requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE},1); |
110 | }else { | 113 | }else { |
... | @@ -157,24 +160,6 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -157,24 +160,6 @@ public class AppActivity extends Activity implements OnClickListener { |
157 | * } | 160 | * } |
158 | */ | 161 | */ |
159 | break; | 162 | break; |
160 | - case PoolSDKCode.POOLSDK_EXTENDS_CODE1: | ||
161 | - //实名认证成功才有回调 | ||
162 | - //msg为生日 | ||
163 | - break; | ||
164 | - | ||
165 | - case PoolSDKCode.POOLSDK_ANTIADDICTION_EXIT://防沉迷满登录时间或者不在可登录时间回调 | ||
166 | - PoolSdkLog.logError("游戏收到回调 POOLSDK_ANTIADDICTION_EXIT:"+msg); | ||
167 | - break; | ||
168 | - case PoolSDKCode.POOLSDK_ANTIADDICTION_CHANNEL_NOTEXIST://渠道SDK没有实名认证功能 | ||
169 | - PoolSdkLog.logError("游戏收到回调 POOLSDK_ANTIADDICTION_CHANNEL_NOTEXIST:"+msg); | ||
170 | - break; | ||
171 | - case PoolSDKCode.POOLSDK_ANTIADDICTION_PAY://防沉迷无法充值回调 | ||
172 | - PoolSdkLog.logError("游戏收到回调 POOLSDK_ANTIADDICTION_PAY:"+msg); | ||
173 | - break; | ||
174 | - case PoolSDKCode.POOLSDK_ANTIADDICTION_CODE://渠道返回玩家实名认证信息 | ||
175 | - PoolSdkLog.logError("游戏收到回调 POOLSDK_ANTIADDICTION_CODE:"+msg); | ||
176 | - break; | ||
177 | - | ||
178 | default: | 163 | default: |
179 | break; | 164 | break; |
180 | } | 165 | } |
... | @@ -188,18 +173,14 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -188,18 +173,14 @@ public class AppActivity extends Activity implements OnClickListener { |
188 | PoolSdkHelper.setLogoutCallback(new PoolLogoutListener() { | 173 | PoolSdkHelper.setLogoutCallback(new PoolLogoutListener() { |
189 | @Override | 174 | @Override |
190 | public void onLogoutSuccess() { | 175 | public void onLogoutSuccess() { |
191 | - // TODO: 此处处理SDK登出的逻辑 | ||
192 | PoolSdkLog.logInfo("游戏中收到SDK logoutSuccess回调"); | 176 | PoolSdkLog.logInfo("游戏中收到SDK logoutSuccess回调"); |
193 | - //游戏退出当前账号 回到初始界面 重新调起登录操作 | 177 | + //游戏退出当前账号 回到初始界面后 重新调起登录操作 |
194 | login(); | 178 | login(); |
195 | } | 179 | } |
196 | }); | 180 | }); |
197 | - | ||
198 | - //开启公共SDK的防沉迷功能,国内游戏按需使用,海外游戏无需接入 | ||
199 | - PoolSdkAntiAddiction.isUseAntiAddiction = true; | ||
200 | - //PoolSdkAntiAddiction.isUseAntiAddictionToast = true;//防沉迷相关toast提示(默认关闭) | ||
201 | } | 181 | } |
202 | 182 | ||
183 | + // 生命周期相关 | ||
203 | @Override | 184 | @Override |
204 | public void onStart() { | 185 | public void onStart() { |
205 | super.onStart(); | 186 | super.onStart(); |
... | @@ -339,31 +320,8 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -339,31 +320,8 @@ public class AppActivity extends Activity implements OnClickListener { |
339 | }else if(view == btQueryProducts){ | 320 | }else if(view == btQueryProducts){ |
340 | queryProducts(); | 321 | queryProducts(); |
341 | }else if (view == pb_bt_verifyname){ | 322 | }else if (view == pb_bt_verifyname){ |
342 | - //Toast.makeText(this,PoolSdkHelper.verifyRealName(this),Toast.LENGTH_SHORT).show(); | ||
343 | - | ||
344 | - //渠道无实名认证功能时,可以调用公共SDK的实名认证接口,在登录成功后才可以调用,海外游戏无需接入,国内游戏按需使用 | ||
345 | - PoolSdkHelper.setUserIDInfo("尚福乐", "211322198509260317", new PoolSdkAntiAddictionUserInfoListener() { | ||
346 | - @Override | ||
347 | - public void onSuccess(int totalGameTime, int totalPayMoney, String ymd) { | ||
348 | 323 | ||
349 | } | 324 | } |
350 | - | ||
351 | - @Override | ||
352 | - public void onFail(String paramCustom) { | ||
353 | - | ||
354 | - } | ||
355 | - | ||
356 | - @Override | ||
357 | - public void onResult(String s) { | ||
358 | - | ||
359 | - } | ||
360 | - | ||
361 | - | ||
362 | - public void onResutl(String result) { | ||
363 | - PoolSdkLog.logError("游戏获取实名结果:"+result); | ||
364 | - } | ||
365 | - }); | ||
366 | - } | ||
367 | } | 325 | } |
368 | 326 | ||
369 | private void trackEvent(){ | 327 | private void trackEvent(){ |
... | @@ -476,6 +434,8 @@ public class AppActivity extends Activity implements OnClickListener { | ... | @@ -476,6 +434,8 @@ public class AppActivity extends Activity implements OnClickListener { |
476 | poolRoleInfo.setCallType(PoolRoleInfo.Type_EnterGame);//进入游戏(第一次创建角色后需再调用一次进入游戏) | 434 | poolRoleInfo.setCallType(PoolRoleInfo.Type_EnterGame);//进入游戏(第一次创建角色后需再调用一次进入游戏) |
477 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);//创建角色 | 435 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);//创建角色 |
478 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);//角色升级 | 436 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);//角色升级 |
437 | + | ||
438 | + //以下可选 | ||
479 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_SelectServer);//选择服务器 | 439 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_SelectServer);//选择服务器 |
480 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_ExitServer);//退出服务器 | 440 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_ExitServer);//退出服务器 |
481 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_Change_RoleName);//改名 | 441 | // poolRoleInfo.setCallType(PoolRoleInfo.Type_Change_RoleName);//改名 | ... | ... |
doc/公共SDK客户端接入文档_海外.md
0 → 100644
1 | +# 公共SDK接入文档 # | ||
2 | + | ||
3 | +## 接入必读 | ||
4 | + | ||
5 | +` | ||
6 | +接入公共SDK测试没问题后游戏打出为 母包 ,后续使用打包工具打对应 渠道包 | ||
7 | +` | ||
8 | + | ||
9 | +## 海外渠道SDK基本都有Facebook登录,谷歌登录,谷歌支付,firebase,appsflyer统计,游戏母包最好移除非必要的第三方库,以减少合并打包冲突 | ||
10 | + | ||
11 | +## 1、开发环境搭建 ## | ||
12 | +以下是以 Eclipse 为例,在 Eclipse 环境下开发的 SDK 配置(AS接入方式一样) | ||
13 | + | ||
14 | +#### 1.1、将 SDK 压缩包中 libs 目录下的所有 资源 包复制到游戏工程的libs 目录下 #### | ||
15 | + | ||
16 | +#### 1.2、复制SDK压缩包中assets目录下的所有内容到游戏工程的assets目录 #### | ||
17 | + | ||
18 | +- 将游戏中的闪屏图片放到assets中poolsdk_splash目录下(选用,图片文件名任意,最多支持2张闪屏) | ||
19 | +- 将assets中的poolsdk.xml配置文件替换(具体文件请与运营人员申请) | ||
20 | + | ||
21 | +#### 1.3、修改游戏工程的AndroidManifest.xml #### | ||
22 | + | ||
23 | +- 添加声明权限:(游戏自行处理自己必要的权限申请,渠道SDK自身需要的权限由渠道自行处理) | ||
24 | + | ||
25 | +``` | ||
26 | +<uses-permission android:name="android.permission.INTERNET" /> <!-- 必要 --> | ||
27 | +``` | ||
28 | + | ||
29 | + | ||
30 | +### 2、功能接口 (注意:以下所有接口都必须在游戏收到 SDK 初始化完成之后才能调用) ### | ||
31 | + | ||
32 | + | ||
33 | +#### 2.1、继承 PoolSDKApplication(必接) | ||
34 | + | ||
35 | +游戏工程如果没有Application,请在 AndroidManifest.xml 中添加SDK的Application,如下所示: | ||
36 | + | ||
37 | +```xml | ||
38 | +<application android:name="com.gzpublic.app.sdk.application.PoolSDKApplication"> | ||
39 | +``` | ||
40 | + | ||
41 | +游戏工程如果有 Application,请继承 SDK 中 PoolSDKApplication: | ||
42 | + | ||
43 | +```java | ||
44 | + public class XXXXApplication extends PoolSDKApplication { | ||
45 | + @Override | ||
46 | + public void onCreate() { | ||
47 | + super.onCreate(); | ||
48 | + } | ||
49 | + } | ||
50 | +``` | ||
51 | +#### 2.2、初始化接口(必接) | ||
52 | + 注意: 初始化接口必须在调用权限回调以后再调用 | ||
53 | + 接口说明: | ||
54 | + 首先在程序开始的地方调用 SDK 的初始化 init 方法,并设 置 Activity 对像和初始化完成回调 | ||
55 | + 监听(在初始化失败情况下不 再调用其它 SDK 接口方法) | ||
56 | + 注意:要确保在 SDK 初始化成功后才可调用其它接口 | ||
57 | + 2.2.1、方法定义 | ||
58 | + public static void init(final Activity activity,final PoolSDKCallBackListener callBackListener) | ||
59 | + | ||
60 | +#### 2.2.2、参数说明 | ||
61 | + | ||
62 | +| 参数 | 说明 | | ||
63 | +| ---------------- | -------------------------------- | | ||
64 | +| activity | Activity 对应 | | ||
65 | +| callBackListener | 初始化完成回调通知,需实现 poolSdkCallBack 方法 | | ||
66 | + | ||
67 | +```java | ||
68 | + 2.2.3、代码示例: | ||
69 | + PoolSdkHelper.init(this, new PoolSDKCallBackListener() { | ||
70 | + @Override | ||
71 | + public void poolSdkCallBack(int code, String msg) { | ||
72 | + PoolSdkLog.logInfo("callback: code:" + code + "msg:" + msg); | ||
73 | + switch (code) { | ||
74 | + | ||
75 | + case PoolSDKCode.POOLSDK_INIT_SUCCESS:// 初始化成功 | ||
76 | + PoolSdkLog.logInfo("游戏中POOLSDK_INIT_SUCCESS"); | ||
77 | + login(); | ||
78 | + break; | ||
79 | + | ||
80 | + case PoolSDKCode.POOLSDK_INIT_FAIL: | ||
81 | + //初始化失败 | ||
82 | + break; | ||
83 | + | ||
84 | + case PoolSDKCode.POOLSDK_QUERY_WITH_PRODUCTS://查询商品信息返回(用于根据不同的谷歌商店地区显示当地货币价格) | ||
85 | + //msg:为查询的结果值 | ||
86 | + /** | ||
87 | + * {//查询商品信息返回数据 | ||
88 | + * "android.test.purchased0": {//key为商品ID | ||
89 | + * "displayPrice": "₩1167.28",//显示价格 | ||
90 | + * "price": "₩1,167", //实际价格(去除小数点) 充值传递 | ||
91 | + * "priceAmountMicros": 1167284249, //数字价格 | ||
92 | + * "priceCurrencyCode": "KRW", //货币代码 | ||
93 | + * "sku": "android.test.purchased0",//商品ID | ||
94 | + * "title": "名称示例" | ||
95 | + * } | ||
96 | + * } | ||
97 | + */ | ||
98 | + break; | ||
99 | + } | ||
100 | + } | ||
101 | + }); | ||
102 | + | ||
103 | +``` | ||
104 | +#### 2.3、登录接口(必接) | ||
105 | + | ||
106 | +接口说明:游戏登录时调用 | ||
107 | + | ||
108 | +#### 2.3.1、方法定义 | ||
109 | + | ||
110 | +```java | ||
111 | +public static void login(final String paramCustom,final PoolLoginListener poolLoginListener) | ||
112 | +``` | ||
113 | + | ||
114 | +#### 2.3.2、参数说明 | ||
115 | + | ||
116 | +| 参数 | 说明 | | ||
117 | +| ----------------- | ---------------------------------------- | | ||
118 | +| paramCustom | 游戏自定义参数,可通过登录成功回调方法onLoginSuccess 中的参数PoolLoginInfo 对象的 getCustom()获取 | | ||
119 | +| poolLoginListener | 登录结果回调通知,需实现 onLoginSuccess 方法 | | ||
120 | + | ||
121 | + | ||
122 | +```java | ||
123 | + 2.3.3、代码示例 | ||
124 | + PoolSdkHelper.login("登录自定义字段", new PoolLoginListener() { | ||
125 | + @Override | ||
126 | + public void onLoginSuccess(PoolLoginInfo poolLoginInfo) { | ||
127 | + String userType = poolLoginInfo.getUserType(); | ||
128 | + String timestamp = poolLoginInfo.getTimestamp(); | ||
129 | + String serverSign = poolLoginInfo.getServerSign(); | ||
130 | + String openId = poolLoginInfo.getOpenID(); | ||
131 | + //把以上信息发送给游戏服务端做登录校验,需要其他信息请从poolLoginInfo对象中获取 | ||
132 | + System.out.println("登录成功 userType = " + userType | ||
133 | + + "; timestamp = " + timestamp + "; serverSign = " | ||
134 | + + serverSign + "; openId = " + openId); | ||
135 | + } | ||
136 | + @Override | ||
137 | + public void onLoginFailed(String errorMsg) { | ||
138 | + System.out.println("登录失败 = " + errorMsg); | ||
139 | + } | ||
140 | + }); | ||
141 | + | ||
142 | +``` | ||
143 | + | ||
144 | +#### 2.4、提交角色数据接口(必接) | ||
145 | +接口说明:游戏提交角色数据接口,该接口需要在以下9中情况下调用: | ||
146 | + | ||
147 | +进入游戏主场景、创建角色、角色更新(vip等级升级也由此类型上报)、选择服务器、退出服务器、改名、选角、关卡开始、关卡结束 | ||
148 | + | ||
149 | +**(如果游戏创建角色时没有角色名,需要在用户创建角色名时调用多一次进入游戏统计,否则用户名无法正常统计,投放测试无法通过)** | ||
150 | + | ||
151 | +#### 2.4.1、方法定义 | ||
152 | + | ||
153 | +```java | ||
154 | +public static void submitRoleData(final PoolRoleInfo poolRoleInfo,final PoolRoleListener poolRoleListener) | ||
155 | +``` | ||
156 | +#### 2.4.2、参数说明 | ||
157 | + | ||
158 | +| 参数 | 说明 | | ||
159 | +| ---------------- | ---------------- | | ||
160 | +| poolRoleInfo | 角色数据实体类 | | ||
161 | +| poolRoleListener | 角色数据提交结果回调通知,需实现 | | ||
162 | + | ||
163 | + PoolRoleInfo 实体类字段说明(以下参数都为必传参数,如游戏没有的传 "无" 或者 "0") | ||
164 | +| 字段名 | 说明 | | ||
165 | +| -------------- | ---------------------------------------- | | ||
166 | +| callType | 调用类型 Type_EnterGame 进入游戏(必接); Type_CreatRole 创建角色(必接); Type_RoleUpgrade 为角色更新(vip等级升级也由此类型上报)(必接); Type_SelectServer 为选择服务器(选接); Type_ExitServer 为退出服务器 (选接); Type_Change_RoleName 为改名(选接); Type_SelectRole 为选角(选接); Type_CheckPoint_Start 为关卡开始(选接); Type_CheckPoint_End 为关卡结束(选接);| | ||
167 | +| roleId | 角色 Id(请用数字) | | ||
168 | +| roleName | 角色名称 | | ||
169 | +| roleLevel | 角色等级 (请用数字) | | ||
170 | +| roleSex | 角色性别(1 男 0 女,如果角 色不分性别请填写 0) | | ||
171 | +| serverId | 服务器 id (请用数字) | | ||
172 | +| serverName | 服务器名称 | | ||
173 | +| custom | 自定义字段 | | ||
174 | +| roleCTime | 角色创建时的时间戳(以秒为单位) (请用数字) | | ||
175 | +| partyName | 公会名称 (没有的传 "无") | | ||
176 | +| roleType | 角色类型 (没有的传 "无") | | ||
177 | +| roleChangeTime | 角色等级变化时的时间戳(以秒为单位) (请用数字) | | ||
178 | +| vipLevel | VIP等级 (请用数字,如无请传"0") | | ||
179 | +| diamond | 余额 (请用数字,如无请传"0") | | ||
180 | +| moneyType | 商品单位 (如 "钻石"、"金币"、"水晶"等) | | ||
181 | +| power | 战力 (请用数字,如无请传"0") | | ||
182 | +| partyId | 工会id (请用数字,如无请传"0") | | ||
183 | +| professionId | 职业id (请用数字,如无请传"0") | | ||
184 | +| professionName | 职业名称 (没有的传 "无") | | ||
185 | +| reborn | 角色转生等级 (请用数字,如无请传"0") | | ||
186 | +| checkPointId | 关卡id (请用数字,如无请传"0") | | ||
187 | +| checkPointName | 关卡名 (没有的传 "无") | | ||
188 | + | ||
189 | + | ||
190 | +```java | ||
191 | + 2.4.3、代码示例 | ||
192 | + /******************************************** | ||
193 | + * 以下所有字段都是必填项 | ||
194 | + */ | ||
195 | + PoolRoleInfo poolRoleInfo = new PoolRoleInfo(); | ||
196 | + poolRoleInfo.setRoleID("123456"); | ||
197 | + poolRoleInfo.setRoleLevel("10"); | ||
198 | + poolRoleInfo.setRoleSex("0"); | ||
199 | + poolRoleInfo.setRoleName("我是角色名"); | ||
200 | + poolRoleInfo.setServerID("1"); | ||
201 | + poolRoleInfo.setServerName("我是服务器名"); | ||
202 | + poolRoleInfo.setCustom("角色创建时间"); | ||
203 | + poolRoleInfo.setRoleCTime(System.currentTimeMillis()/1000);//角色创建时(秒) | ||
204 | + poolRoleInfo.setPartyName("公会名称"); | ||
205 | + poolRoleInfo.setRoleType("狂战");//角色类型 | ||
206 | + poolRoleInfo.setRoleChangeTime(System.currentTimeMillis()/1000);//角色更新时间 | ||
207 | + poolRoleInfo.setVipLevel("10");//vip等级 | ||
208 | + poolRoleInfo.setDiamond("1000");//余额 | ||
209 | + poolRoleInfo.setMoneyType("金币");//商品单位 | ||
210 | + poolRoleInfo.setPower("10");//战力 | ||
211 | + poolRoleInfo.setPartyId("10");//工会id | ||
212 | + poolRoleInfo.setProfessionId("10");//职业id | ||
213 | + poolRoleInfo.setProfessionName("无");//职业名称 | ||
214 | + poolRoleInfo.setReborn("0");//角色转生等级 | ||
215 | + poolRoleInfo.setCheckPointId("1");//关卡id | ||
216 | + poolRoleInfo.setCheckPointName("关卡名");//关卡名 | ||
217 | + poolRoleInfo.setCallType(PoolRoleInfo.Type_EnterGame);//进入游戏(第一次创建角色后需再调用一次进入游戏) | ||
218 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);//创建角色(如果游戏创建角色时没有角色名,需要在用户创建角色名时调用多一次进入游戏统计,否则用户名无法正常统计,投放测试无法通过) | ||
219 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);//角色升级(vip等级升级也由此类型上报) | ||
220 | + | ||
221 | + // 以下类型选接 | ||
222 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_SelectServer);//选择服务器 | ||
223 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_ExitServer);//退出服务器 | ||
224 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_Change_RoleName);//改名 | ||
225 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_SelectRole);//选角 | ||
226 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_CheckPoint_Start);//关卡开始 | ||
227 | + // poolRoleInfo.setCallType(PoolRoleInfo.Type_CheckPoint_End);//关卡结束 | ||
228 | + | ||
229 | + PoolSdkHelper.submitRoleData(poolRoleInfo, new PoolRoleListener() { | ||
230 | + @Override | ||
231 | + public void onRoleDataSuccess(String paramCustom) { | ||
232 | + System.out.println("提交角色数据成功 = " + paramCustom); | ||
233 | + } | ||
234 | + }); | ||
235 | + | ||
236 | +``` | ||
237 | + | ||
238 | +#### 2.5、支付接口(必接) | ||
239 | + | ||
240 | +#### 2.5.1、方法定义 | ||
241 | +```java | ||
242 | +public static void pay(final PoolPayInfo poolPayInfo,final PoolPayListener poolPayListener) | ||
243 | +``` | ||
244 | + | ||
245 | +#### 2.5.2、参数说明 | ||
246 | + | ||
247 | +| 参数 | 说明 | | ||
248 | +| ---------------- | ---------------- | | ||
249 | +| poolRoleInfo | 角色数据实体类 | | ||
250 | +| poolRoleListener | 角色数据提交结果回调通知,需实现 | | ||
251 | + | ||
252 | + 支付信息实体类(PoolPayInfo)字段说明 | ||
253 | +| 参数 | 说明 | | ||
254 | +| ----------- | ------------------- | | ||
255 | +| amount | 金额(单位元,必须大于 0,需传入整型数据`传小数时兑换比例和金额相乘为整数(即金额传 "0.99" 兑换比例传 "100")`) | | ||
256 | +| productId | 商品 ID(如果没有可以传空字符串) | | ||
257 | +| productName | 商品描述 | | ||
258 | +| roleid | 角色 id | | ||
259 | +| rolelevel | 角色等级 | | ||
260 | +| roleName | 角色名称 | | ||
261 | +| serverId | 服务器 id | | ||
262 | +| serverName | 服务器名称 | | ||
263 | +| exchange | 游戏币与人民币(元)的兑换比例(一般填10) `单机游戏时直接传对应购买的道具数量或游戏币数量` | | ||
264 | +| custom | 自定义透传参数,通过回调函数原样返回 | | ||
265 | + | ||
266 | + | ||
267 | +```java | ||
268 | + 2.5.3、代码示例 | ||
269 | + /******************************************** | ||
270 | + * 以下所有字段都是必填项 | ||
271 | + */ | ||
272 | + // 设置充值金额,单位“元” | ||
273 | + poolPayInfo.setAmount("1"); | ||
274 | + // 服务器id | ||
275 | + poolPayInfo.setServerID("8"); | ||
276 | + // 服务器名 | ||
277 | + poolPayInfo.setServerName("我是服务器名"); | ||
278 | + // 角色id | ||
279 | + poolPayInfo.setRoleID("123456"); | ||
280 | + // 角色名 | ||
281 | + poolPayInfo.setRoleName("我是角色名"); | ||
282 | + // 角色等级 | ||
283 | + poolPayInfo.setRoleLevel("10"); | ||
284 | + // 商品ID | ||
285 | + poolPayInfo.setProductID("1"); | ||
286 | + // 商品名称 | ||
287 | + poolPayInfo.setProductName("金币"); | ||
288 | + // 商品描述 | ||
289 | + poolPayInfo.setProductDesc("购买金币"); | ||
290 | + // 兑换比例 | ||
291 | + poolPayInfo.setExchange("10"); | ||
292 | + // 自定义参数 | ||
293 | + poolPayInfo.setCustom("我是自定义参数"); | ||
294 | + // 充值回调以服务端回调为准,部分渠道客户端SDK无回调 | ||
295 | + PoolSdkHelper.pay(poolPayInfo, new PoolPayListener() { | ||
296 | + @Override | ||
297 | + public void onPaySuccess(String paramCustom) { | ||
298 | + System.out.println("支付成功 = " + paramCustom); | ||
299 | + } | ||
300 | + @Override | ||
301 | + public void onPayFailed(String paramCustom, String errorMsg) { | ||
302 | + System.out.println("支付失败 = " + paramCustom + "; errorMsg = " | ||
303 | + + errorMsg); | ||
304 | + } | ||
305 | + }); | ||
306 | +``` | ||
307 | + | ||
308 | +#### 2.6、检测 SDK 是否含有用户中心接口(必接) | ||
309 | + | ||
310 | +说明:如果接口返回为 true,表示需要游戏方在合适的界面中添加一个用户中心的按钮,点击按钮时调用文档中 2.7 的用户中心接口; | ||
311 | + | ||
312 | +如果返回 false,则不做处理 | ||
313 | + | ||
314 | +#### 2.6.1、方法定义 | ||
315 | +```java | ||
316 | +public static boolean hasChannelCenter() | ||
317 | +``` | ||
318 | + | ||
319 | +```java | ||
320 | + PoolSdkHelper.hasChannelCenter();//判断渠道SDK有无用户中心 | ||
321 | +``` | ||
322 | + | ||
323 | +#### 2.7、用户中心接口(必接) | ||
324 | + | ||
325 | +说明:打开渠道用户中心界面 | ||
326 | + | ||
327 | +#### 2.7.1、方法定义 | ||
328 | +```java | ||
329 | +public static void openChannelCenter() | ||
330 | +``` | ||
331 | + | ||
332 | +```java | ||
333 | + | ||
334 | + 2.7.2、代码示例 | ||
335 | + /** | ||
336 | + * 用户中心 | ||
337 | + * | ||
338 | + * 游戏方先调用PoolSdkHelper.hasChannelCenter()获取是否有用户中心, | ||
339 | + * 如果有的话,游戏中需要添加按钮,点击按钮调用PoolSdkHelper.openChannelCenter(); | ||
340 | + * 如果没有,则不需要显示按钮,也不用调用下面的接口 | ||
341 | + */ | ||
342 | + | ||
343 | + PoolSdkHelper.openChannelCenter(); | ||
344 | +``` | ||
345 | +#### 2.8、注销登录监听接口 | ||
346 | + | ||
347 | +说明:可在游戏启动时设置注销监听事件,渠道注销成功后 SDK 会回调 onLogoutSuccess 方法通知游戏,游戏可在此处理切换账号逻辑 | ||
348 | + | ||
349 | +#### 2.8.1、方法定义 | ||
350 | + | ||
351 | +```java | ||
352 | +public static void setLogoutCallback(final PoolLogoutListener poolLogoutListener) | ||
353 | +``` | ||
354 | + | ||
355 | +#### 2.8.2、参数说明 #### | ||
356 | + | ||
357 | +| 参数 | 说明 | | ||
358 | +| ------------------ | --------------------------------- | | ||
359 | +| poolLogoutListener | 账户注销成功回调监听,需实现 onLogoutSuccess 方法 | | ||
360 | + | ||
361 | + | ||
362 | +```java | ||
363 | + 2.8.3、代码示例 | ||
364 | + PoolSdkHelper.setLogoutCallback(new PoolLogoutListener() { | ||
365 | + @Override | ||
366 | + public void onLogoutSuccess() { | ||
367 | + //游戏收到该注销回调,需要退出当前账号,回到初始界面后,调用SDK的登录接口 | ||
368 | + PoolSdkLog.logInfo("游戏中logoutSuccess"); | ||
369 | + | ||
370 | + login(); | ||
371 | + } | ||
372 | + }); | ||
373 | +``` | ||
374 | + | ||
375 | +### 2.9、切换账号接口 | ||
376 | + | ||
377 | +说明: 该接口包含有注销和切换账号两种方式, 游戏需要根据同时根据两种接口的逻辑进行处理和调用 | ||
378 | + | ||
379 | +1、当渠道走的是注销逻辑则成功后会回调到注销监听中,游戏可在对应回调中进行注销逻辑处理 | ||
380 | + | ||
381 | +2、当渠道走的是切换账号逻辑时,在切换账号成功后会回调到登录成功的监听结果中 | ||
382 | + | ||
383 | + | ||
384 | +#### 2.9.1、方法定义 | ||
385 | +```java | ||
386 | +public static boolean hasLogout(); | ||
387 | +public static void logout(final Activity paramActivity) ; | ||
388 | +public static boolean hasSwitchAccount(); | ||
389 | +public static void switchAccount(final Activity paramActivity); | ||
390 | +``` | ||
391 | + | ||
392 | +#### 2.9.2、 代码示例 | ||
393 | + | ||
394 | +```java | ||
395 | + | ||
396 | + /** | ||
397 | + * 处理是否显示切换账号入口 | ||
398 | + */ | ||
399 | + if(PoolSdkHelper.hasLogout() || PoolSdkHelper.hasSwitchAccount()){ | ||
400 | + //满足此条件时游戏显示切换账号功能入口 | ||
401 | + }else{//不存在切换账号接口,游戏可自行处理对应逻辑 | ||
402 | + } | ||
403 | + | ||
404 | + /** | ||
405 | + * 切换账号功能实现 | ||
406 | + */ | ||
407 | + if(PoolSdkHelper.hasLogout()){ | ||
408 | + //结果在注销监听回调中处理(参考文档2.8、注销登录监听接口) | ||
409 | + PoolSdkHelper.logout(paramActivity); | ||
410 | + }else if(PoolSdkHelper.hasSwitchAccount()){ | ||
411 | + //切换账号结果在登陆回调中处理 | ||
412 | + PoolSdkHelper.switchAccount(paramActivity); | ||
413 | + } | ||
414 | +``` | ||
415 | + | ||
416 | + | ||
417 | +#### 2.10、退出游戏接口(必接) | ||
418 | + | ||
419 | + 说明:在游戏需要退出时调用,调用此接口时需先用 PoolSdkHelper.hasExitDialog() 判断 sdk 是否有退出界 | ||
420 | + 面,为 true表示有退出界面需调用 showExitDialog()显示退出界面,为 false 时表示没有退出界面,游戏需自己处 | ||
421 | + 理退出逻辑且在确认 游戏退出前调用 PoolSdkHelper.exitGame 通知 SDK 游戏要退出 (具体可参照 Demo 示例) | ||
422 | + | ||
423 | +#### 2.10.1、方法定义 | ||
424 | +```java | ||
425 | +public static void showExitDialog(final PoolExitDialogListener exitDialogListener) | ||
426 | +``` | ||
427 | + | ||
428 | +#### 2.10.2、参数说明 | ||
429 | + | ||
430 | +| 参数 | 说明 | | ||
431 | +| ------------------ | ------------------------------ | | ||
432 | +| exitDialogListener | 退出结果回调监听,需实现 onDialogResult 方法 | | ||
433 | + | ||
434 | +```java | ||
435 | + 2.9.3、代码示例 | ||
436 | + @Override | ||
437 | + public boolean dispatchKeyEvent(KeyEvent pKeyEvent) { | ||
438 | + if (pKeyEvent.getKeyCode() == KeyEvent.KEYCODE_BACK | ||
439 | + && pKeyEvent.getAction() == KeyEvent.ACTION_DOWN) { | ||
440 | + if (PoolSdkHelper.hasExitDialog()) { | ||
441 | + PoolSdkHelper.showExitDialog(new PoolExitDialogListener() { | ||
442 | + @Override | ||
443 | + public void onDialogResult(int code, String msg) { | ||
444 | + // TODO Auto-generated method stub | ||
445 | + switch (code) { | ||
446 | + case PoolSDKCode.EXIT_SUCCESS:// 退出成功游戏处理自己退出逻辑 | ||
447 | + finish(); | ||
448 | + // System.exit(0); | ||
449 | + break; | ||
450 | + case PoolSDKCode.EXIT_CANCEL:// 取消退出 | ||
451 | + break; | ||
452 | + default: | ||
453 | + break; | ||
454 | + } | ||
455 | + } | ||
456 | + }); | ||
457 | + } else { | ||
458 | + // TODO: 调用游戏的退出界面 | ||
459 | + showGameExitTips(); | ||
460 | + } | ||
461 | + return false; | ||
462 | + } | ||
463 | + return super.dispatchKeyEvent(pKeyEvent); | ||
464 | + } | ||
465 | +``` | ||
466 | + | ||
467 | +### 2.11、Android 生命周期接口(必接) ### | ||
468 | + | ||
469 | +`注意:权限返回接口为必接接口,接入代码 PoolSdkHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);` | ||
470 | + | ||
471 | + 说明:在游戏 Activity 的 onStart、onPause、onResume、 onStop、onDestroy、onRestart、onNewIntent、 onActivityResult、onConfigurationChanged、onSaveInstanceState、onRestoreInstanceState、onWindowFocusChanged、onWindowAttributesChanged、onRequestPermissionsResult中分别调用对应的接口 | ||
472 | + | ||
473 | + | ||
474 | +```java | ||
475 | + 2.10.1 代码示例 | ||
476 | + @Override | ||
477 | + public void onStart() { | ||
478 | + super.onStart(); | ||
479 | + PoolSdkHelper.onStart(); | ||
480 | + } | ||
481 | + | ||
482 | + @Override | ||
483 | + public void onStop() { | ||
484 | + super.onStop(); | ||
485 | + PoolSdkHelper.onStop(); | ||
486 | + } | ||
487 | + | ||
488 | + @Override | ||
489 | + public void onDestroy() { | ||
490 | + super.onDestroy(); | ||
491 | + PoolSdkHelper.onDestroy(); | ||
492 | + } | ||
493 | + | ||
494 | + @Override | ||
495 | + public void onResume() { | ||
496 | + super.onResume(); | ||
497 | + PoolSdkHelper.onResume(); | ||
498 | + } | ||
499 | + | ||
500 | + @Override | ||
501 | + public void onPause() { | ||
502 | + super.onPause(); | ||
503 | + PoolSdkHelper.onPause(); | ||
504 | + } | ||
505 | + | ||
506 | + @Override | ||
507 | + public void onRestart() { | ||
508 | + super.onRestart(); | ||
509 | + PoolSdkHelper.onRestart(); | ||
510 | + } | ||
511 | + | ||
512 | + @Override | ||
513 | + public void onNewIntent(Intent intent) { | ||
514 | + super.onNewIntent(intent); | ||
515 | + PoolSdkHelper.onNewIntent(intent); | ||
516 | + } | ||
517 | + | ||
518 | + @Override | ||
519 | + protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
520 | + PoolSdkHelper.onActivityResult(requestCode, resultCode, data); | ||
521 | + } | ||
522 | + | ||
523 | + @Override | ||
524 | + public void onConfigurationChanged(Configuration newConfig) { | ||
525 | + // TODO Auto-generated method stub | ||
526 | + super.onConfigurationChanged(newConfig); | ||
527 | + PoolSdkHelper.onConfigurationChanged(newConfig); | ||
528 | + } | ||
529 | + | ||
530 | + @Override | ||
531 | + protected void onSaveInstanceState(Bundle outState) { | ||
532 | + // TODO Auto-generated method stub | ||
533 | + super.onSaveInstanceState(outState); | ||
534 | + PoolSdkHelper.onSaveInstanceState(outState); | ||
535 | + } | ||
536 | + | ||
537 | + @Override | ||
538 | + protected void onRestoreInstanceState(Bundle savedInstanceState) { | ||
539 | + // TODO Auto-generated method stub | ||
540 | + super.onRestoreInstanceState(savedInstanceState); | ||
541 | + PoolSdkHelper.onRestoreInstanceState(savedInstanceState); | ||
542 | + } | ||
543 | + | ||
544 | + @Override | ||
545 | + public void onWindowFocusChanged(boolean hasFocus) { | ||
546 | + // TODO Auto-generated method stub | ||
547 | + super.onWindowFocusChanged(hasFocus); | ||
548 | + PoolSdkHelper.onWindowFocusChanged(hasFocus); | ||
549 | + } | ||
550 | + | ||
551 | + @Override | ||
552 | + public void onWindowAttributesChanged(LayoutParams params) { | ||
553 | + // TODO Auto-generated method stub | ||
554 | + super.onWindowAttributesChanged(params); | ||
555 | + PoolSdkHelper.onWindowAttributesChanged(params); | ||
556 | + } | ||
557 | + | ||
558 | + @Override | ||
559 | + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { | ||
560 | + // TODO Auto-generated method stub | ||
561 | + super.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||
562 | + PoolSdkHelper.onRequestPermissionsResult(requestCode, permissions, grantResults); | ||
563 | + } | ||
564 | +``` | ||
565 | + | ||
566 | +### 2.12、扩展接口(可选) ### | ||
567 | + 说明:该接口为扩展的万能接口,留作备用,目前游戏方可以不接入 | ||
568 | + 2.11.1、方法定义 | ||
569 | + public static void expansionInterface(final String paramCustom,final PoolExpansionListener poolExpansionListener) | ||
570 | + 2.11.2、参数说明 | ||
571 | +| 参数 | 说明 | | ||
572 | +| --------------------- | -------------------- | | ||
573 | +| paramCustom | 自定义参数 | | ||
574 | +| poolExpansionListener | 方法回调参数,实现onSuccess方法 | | ||
575 | + | ||
576 | +### 2.13、获取渠道包标识(可选) ### | ||
577 | +``` | ||
578 | + 对应打包工具的 渠道号 | ||
579 | + 接口名称:PoolSdkHelper.getGameChannelId() | ||
580 | + 接口说明:获取在企业平台配置的渠道标识,返回类型为 String | ||
581 | + | ||
582 | + 对应打包工具的 渠道标识1 | ||
583 | + 接口名称:PoolSdkHelper. getChannelParameter1 () | ||
584 | + 接口说明:获取在企业平台配置的渠道参数 1,返回类型为 String | ||
585 | + | ||
586 | + 对应打包工具的 渠道标识2 | ||
587 | + 接口名称:PoolSdkHelper. getChannelParameter2 () | ||
588 | + 接口说明:获取在企业平台配置的渠道参数 2,返回类型为 String | ||
589 | +``` | ||
590 | +### 2.14、获取渠道自定义参数(可选) ### | ||
591 | + 接口名称:PoolSdkHelper.getCustomValue() | ||
592 | + 接口说明:获取在企业平台配置的渠道自定义参数,返回类型为 String | ||
593 | +### 2.15、打开论坛、社区接口(选接) ### | ||
594 | + 接口名称:PoolSkHelper.openForum() | ||
595 | + 接口说明:打开渠道的论坛界面 | ||
596 | + | ||
597 | + | ||
598 | +### 2.16、聊天统计(选接) ### | ||
599 | + | ||
600 | +说明:在用户发送聊天信息时调用该接口 | ||
601 | + | ||
602 | +```java | ||
603 | +public static void reportChat(final String content,String type,final String accountId,final String accountName, final int level, final String serverId,final String serverName) | ||
604 | +``` | ||
605 | +参数说明: | ||
606 | + | ||
607 | +参数 |说明 | ||
608 | +------------ | ------------- | ||
609 | +content | 聊天内容 | ||
610 | +type | 聊天类型(世界,私聊等) | ||
611 | +accountId | 角色ID | ||
612 | +accountName | 角色名称 | ||
613 | +level | 角色等级 | ||
614 | +serverId | 服务器ID | ||
615 | +serverName | 服务器名称 | ||
616 | + | ||
617 | +### 2.18、事件上报接口(必接,需要跟运营确认需要接入的统计事件) | ||
618 | + | ||
619 | +``` | ||
620 | +/** | ||
621 | + * @param context 传getApplicationContext() | ||
622 | + * @param eventType 事件类型(PoolEventType类中获取对应事件类型) | ||
623 | + * @param eventValue 参数值(充值时传PoolEventParameterName属性变量键值对) | ||
624 | + */ | ||
625 | +public static void trackEvent(Context context, String eventType, Map<String, Object> eventValue); | ||
626 | +``` | ||
627 | + | ||
628 | +游戏许上报的事件类型有: | ||
629 | +``` | ||
630 | +PoolEventType类中对应的类型: | ||
631 | + POOL_RES_LOADED 资源加载完毕 | ||
632 | + POOL_TUTORIAL_COMPLETION 新手流程结束 | ||
633 | + POOL_FIRST_DAY_CHECKPOINT_TO_VALUE 副本关卡(创角首日达到的某个关卡)(具体关卡cp跟渠道沟通) | ||
634 | + POOL_ENTER_PARTY 加入公会/联盟等 | ||
635 | + POOL_FIRST_DAY_UPDATE_TO_LEVEL1 首日更新到某个等级(具体等级cp跟渠道沟通) | ||
636 | + POOL_UPDATE_TO_LEVEL 更新到某个等级 | ||
637 | + POOL_FIRST_RECHARGE 首冲 | ||
638 | + POOL_PAY_SUCCESS 充值成功 | ||
639 | + POOL_FIRST_DAY_RECHARGE_TO_VALUE 首日充值达到某个值时(具体数值cp跟渠道沟通) | ||
640 | + POOL_BUY_MOUTH_CARD 购买月卡 | ||
641 | + POOL_BIG_RECHARGE 累积充值达到某个数额(具体数值cp跟渠道沟通) | ||
642 | + POOL_RETAINED_2_DAY 领取七天礼包的第二天奖励时 | ||
643 | + POOL_RETAINED_3_DAY 领取七天礼包的第三天奖励时 | ||
644 | + POOL_RETAINED_7_DAY 领取七天礼包的第七天奖励时 | ||
645 | + POOL_FIRST_PURCHASE_FUND 首次成长基金充值 | ||
646 | + POOL_VIP_LEVEL_TO_TARGET_LEVEL vip达到某个等级 | ||
647 | + POOL_BUY_ANNUAL_CARD 购买年卡 | ||
648 | + POOL_FIRST_RECHARGE_9999 首次储值99.99美元 | ||
649 | +``` | ||
650 | + | ||
651 | + | ||
652 | +代码示例: | ||
653 | +``` | ||
654 | +充值成功类型例子: | ||
655 | +Map<String,Object> valueMap = new HashMap<>(); | ||
656 | +valueMap.put(PoolEventParameterName.POOL_ORDER_ID,System.currentTimeMillis()+"");//订单号 | ||
657 | +valueMap.put(PoolEventParameterName.POOL_CURRENCY,"USD");//货币类型 USD:美元 CNY:人民币 | ||
658 | +valueMap.put(PoolEventParameterName.POOL_PRICE,6);//充值金额 | ||
659 | +PoolSdkHelper.trackEvent(getApplicationContext(),PoolEventType.POOL_PAY_SUCCESS,valueMap); | ||
660 | + | ||
661 | +其他类型例子: | ||
662 | +PoolSdkHelper.trackEvent(getApplicationContext(), PoolEventType.POOL_RES_LOADED,null); | ||
663 | +``` | ||
664 | + | ||
665 | + | ||
666 | +### 2.19、商品查询接口(用于根据不同的谷歌商店地区显示当地货币价格)(查询结果返回在初始化回调中,具体可查看初始化接口或者Demo) | ||
667 | +```java | ||
668 | + /** | ||
669 | + * 拓展方法 | ||
670 | + * | ||
671 | + * @param funcName 方法名(查询商品接口传"queryWithProducts") | ||
672 | + * @param param 传递参数(此处Map传键为商品ID值为空) | ||
673 | + * @return | ||
674 | + */ | ||
675 | + public static String callFunc(String funcName, Map<Object, Object> param) { | ||
676 | +``` | ||
677 | + | ||
678 | +代码示例: | ||
679 | +```java | ||
680 | + Map productMap = new HashMap<Object, Object>(); | ||
681 | + productMap.put("商品ID", ""); | ||
682 | + productMap.put("商品ID", ""); | ||
683 | + PoolSdkHelper.callFunc("queryWithProducts", productMap); | ||
684 | +``` | ||
685 | + | ||
686 | +### 2.20、客服中心接口(选接) | ||
687 | + | ||
688 | + - 判断是否有客服接口 | ||
689 | + | ||
690 | + ```java | ||
691 | + /** * 是否存在接口 | ||
692 | + * @param functionName (客服中心传"hasAssistantCenter") | ||
693 | + * @return true:为存在 false:不存在 */ | ||
694 | + public static boolean hasFunction(String functionName){ | ||
695 | + } | ||
696 | + ``` | ||
697 | + | ||
698 | +- 客服接口 | ||
699 | + | ||
700 | + ```java | ||
701 | + /** * | ||
702 | + * @param funcName 方法名 (客服中心传"openAssistantCenter") | ||
703 | + * @param param 传空Map | ||
704 | + * @return | ||
705 | + */ | ||
706 | + public static String callFunc(String funcName, Map<Object, Object> param){} | ||
707 | + ``` | ||
708 | + | ||
709 | +- 例子: | ||
710 | + | ||
711 | + ```java | ||
712 | + if(PoolSdkHelper.hasFunction("hasAssistantCenter")) | ||
713 | + {//存在客服接口 | ||
714 | + Map<Object,Object> map = new HashMap<>(); PoolSdkHelper.callFunc("openAssistantCenter",map); | ||
715 | + } | ||
716 | + ``` | ||
717 | + | ||
718 | +# 3、游戏自测相关 # | ||
719 | + | ||
720 | +### 3.1、接入环境下调用登录sdk会有默认测试账号进行登录,游戏会直接收到登录回调数据 ### | ||
721 | + | ||
722 | +- 成功收到登录回调,与服务端校验成功进入游戏 | ||
723 | + | ||
724 | + | ||
725 | + | ||
726 | +### 3.2、游戏点击充值在接入环境下sdk会直接进行充值数据校验,点击充值后游戏可查看服务端是否收到充值结果通知 ### | ||
727 | + | ||
728 | +- 后台配置正确的 `游戏充值回调地址和白名单ip` 可以进行母包充值测试是否到账 | ||
729 | + | ||
730 | +# 4、母包 # | ||
731 | +``` | ||
732 | +4.1、接入公共 SDK 编译生成的 apk 即为打包工具使用的空白母包 | ||
733 | +``` | ||
734 | + | ||
735 | + | ||
736 | +# 6.游戏使用多dex打包需要注意的点 | ||
737 | +1、如果游戏接入公共SDK后使用了多dex打包,请确保公共SDK保持在第一个classes.dex文件 | ||
738 | +在defaultConfig中配置multiDexKeepProguard file('maindexlist.pro') | ||
739 | + | ||
740 | +```xml | ||
741 | +-keep class com.gzpublic.app.sdk.* | ||
742 | +-keep class com.gzpublic.app.sdk.framework.* | ||
743 | +-keep class com.gzpublic.app.sdk.wxapi.* | ||
744 | +-keep class com.gzpublic.app.application.* | ||
745 | +``` | ||
746 | + | ||
747 | +2、如果母包需要每次出包Manifest中的配置改成相应的包名字段(例如推送和Provider) | ||
748 | +则将包名写成 originPackageTag 打包工具会自动替换成目标包名 | ||
749 | + | ||
750 | +```xml | ||
751 | +android:authorities="com.xxx.provider" | ||
752 | +<!-- 写为下面这样既可 --> | ||
753 | +android:authorities="originPackageTag.provider" | ||
754 | +``` | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
No preview for this file type
libs/PoolSdk_V2_210301.jar
deleted
100644 → 0
No preview for this file type
libs/PoolSdk_V2_210913.jar
0 → 100644
No preview for this file type
libs/okio-1.13.0.jar
0 → 100644
No preview for this file type
libs/okio-1.6.0.jar
deleted
100644 → 0
No preview for this file type
-
Please register or login to post a comment