lizhihui

重新整理区分海内外文档

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 }
......
No preview for this file type
No preview for this file type
No preview for this file type
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>
......
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
No preview for this file type
1 -# cache for current jar dependency. DO NOT EDIT.
2 -# format is <lastModified> <length> <SHA-1> <path>
3 -# Encoding is UTF-8
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);//改名
......
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 typefinal 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 +![](http://i.imgur.com/tHxu8mx.png)
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
1 # 公共SDK扩展接口接入文档 # 1 # 公共SDK扩展接口接入文档 #
2 2
3 -## 接入必读 3 +## 接入必读(本文档接口都为选接,主要用于海外SDK)
4 1.公共获取状态接口(用于获取各种状态) 4 1.公共获取状态接口(用于获取各种状态)
5 `public static boolean hasFunction(String functionName)` 5 `public static boolean hasFunction(String functionName)`
6 6
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type