1.文档说明

1.1 功能描述

此文档主要是用于在游戏及应用开发商需要接入BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。

1.2 阅读对象

接入BASE SDK的游戏及应用的android客户端开发者。

2.接入准备

首次接入需要连续平台技术支持申请产品参数,获取sdkgameinfo.cfg 等参数,并将cfg文件放置到项目工程的assets目录下。

服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》

3.特别说明

3.1 游戏版本命名

是指androidmainfest.xml中的versionName。

3.2 渠道识别

serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口(11.2),并和技术支持的同学匹配各serviceId对应的渠道。

3.3 游戏中接入第三方SDK

如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术支持。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况和平台技术支持沟通操作。

3.3.1 AndroidManifest.xml 中配置包名替换

注意:AndroidManifest.xml 中有需要替换为包名的位置,需要配置为midbase_package_name
打包时打包工具会将midbase_package_name 替换为当前渠道包名。
此配置仅适用于研发输出base包,使用自动打包工具输出渠道包的情况。如果研发直接输出渠道包则忽略此项。
列如:包名为com.midbase.lib

  1. 配置为:
  2. <receiver android:name="com.android.PushServer.Alarm_BroadcastReceiver" >
  3. <intent-filter android:priority="1000" >
  4. <action android:name="android.intent.action.BOOT_COMPLETED" />
  5. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  6. <action android:name="pushserver.notice.midbase_package_name" />
  7. </intent-filter>
  8. </receiver>
  9. 处理过为:
  10. <receiver android:name="com.android.PushServer.Alarm_BroadcastReceiver" >
  11. <intent-filter android:priority="1000" >
  12. <action android:name="android.intent.action.BOOT_COMPLETED" />
  13. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  14. <action android:name="pushserver.notice.com.midbase.lib" />
  15. </intent-filter>
  16. </receiver>

3.4 SDK中普通闪屏说明

游戏使用sdk的闪屏功能时,可以按照下面的闪屏制作规范,添加相应图片资源即可, 最多支持配置5套游戏闪屏。(如果测试功能可以使用demo工程 sdk内置logo图片)
闪屏图片 制作规范:
横屏:
midbase_gamelogo_landscape1.png
midbase_gamelogo_landscape2.png
midbase_gamelogo_landscape3.png
midbase_gamelogo_landscape4.png
midbase_gamelogo_landscape5.png
注意:每套闪屏 都需要做三个尺寸的图片,一套闪屏 需要存放到3个目录中,以第一套为例:
res\drawable-xhdpi 存放 尺寸:1280x720 名称:midbase_gamelogo_landscape1.png 图片
res\drawable-xxhdpi 存放 尺寸:2340x1080 名称:midbase_gamelogo_landscape1.png 图片
res\drawable-xxxhdpi 存放 尺寸:2560x1440 名称:midbase_gamelogo_landscape1.png 图片

竖屏:
midbase_gamelogo_portrait1.png
midbase_gamelogo_portrait2.png
midbase_gamelogo_portrait3.png
midbase_gamelogo_portrait4.png
midbase_gamelogo_portrait5.png
注意:每套闪屏 都需要做三个尺寸的图片,一套闪屏 需要存放到3个目录中,以第一套为例:
res\drawable-xhdpi 存放 尺寸:720x1280 名称:midbase_gamelogo_portrait1.png 图片
res\drawable-xxhdpi 存放 尺寸:1080x2340 名称:midbase_gamelogo_portrait1.png 图片
res\drawable-xxxhdpi 存放 尺寸:1440x2560 名称:midbase_gamelogo_portrait1.png 图片

3.5 SDK中视频闪屏说明

目前仅支持播放一个视频闪屏,视频闪屏将在sdk图片闪屏之前显示,如果游戏需要使用sdk 视频闪屏功能,请按照下面视频的制作规范制作视频:
1.视频文件名称:
midbase_logovideo.mp4
2.视频长度;
最大不超过10秒。
3.视频帧宽高:
横屏:1280X720
竖屏:720X1280
4.视频存放目录:
制作好的视频存放到res\raw目录下。

4.接入BASE SDK注意事项

4.1 游戏res文件夹中资源文件命名注意事项

游戏res资源文件中,png及xml文件命名最好不要过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml。

4.2 游戏必须接入用户中心/切换账号/注销

需要根据调用SDK提供的接口的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示,因为根据渠道不同会用到其中之一或者所有或者都不用,具体接口调用详见接口说明(6.2.7)。

4.3 游戏必须接入BaseSDK与Activity生命周期的接口

  1. MIDBaseSDK.getInstance(this).onPause()
  2. MIDBaseSDK.getInstance(this).onRestart()
  3. MIDBaseSDK.getInstance(this).onResume()
  4. MIDBaseSDK.getInstance(this).onStart()
  5. MIDBaseSDK.getInstance(this).onStop()
  6. MIDBaseSDK.getInstance(this).onDestroy()
  7. MIDBaseSDK.getInstance(this).onActivityResult(requestCode, resultCode, data)
  8. MIDBaseSDK.getInstance(this).onConfigurationChanged(newConfig)
  9. MIDBaseSDK.getInstance(this).onNewIntent(intent)
  10. MIDBaseSDK.getInstance(this).onBackPressed();
  11. MIDBaseSDK.getInstance(this).attachBaseContext(newBase)
  12. MIDBaseSDK.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults)

5.导入BASE SDK

5.1 快速接入

5.1.1 项目 build.gradle 文件添加SDK仓库地址

  1. allprojects {
  2. repositories {
  3. // (必选)添加此行,引入代码代码仓库
  4. maven { url "http://nexus.acegames.cn/repository/maven-sdk-public/"}
  5. }
  6. }

示例:

  1. allprojects {
  2. repositories {
  3. google()
  4. maven {
  5. url "http://nexus.acegames.cn/repository/maven-sdk-public/"
  6. }
  7. jcenter()
  8. }
  9. }

5.1.2 项目build.gradle 文件添加SDK gradle插件

  1. dependencies {
  2. classpath 'com.wpmid.midbase:MIDSDKBasePlugin:1.0.7'
  3. }

示例:

  1. dependencies {
  2. classpath 'com.android.tools.build:gradle:4.1.0'
  3. classpath 'com.wpmid.midbase:MIDSDKBasePlugin:1.0.7'
  4. }

5.1.3 应用 build.gradle文件添加SDK依赖和插件

  1. apply plugin: 'com.wpmid.base.gradle'
  2. dependencies {
  3. // 海外base
  4. implementation "com.wpmid.midbase:MIDBaseSDKOversea:1.0.1"
  5. // 全球谷歌支付
  6. implementation "com.wpmid.midbase:MIDSDKOverseaGlobal:1.0.1"
  7. implementation "com.wpmid.midbase:MIDSDKOverseaGlobal_GooglePay:1.0.1"
  8. }

5.2.3 可选配置项

兼容android高版本 31以上版本增加了android:exported=”true”

  1. <!-- 闪屏配置,如使用此配置,请将游戏原启动activity的android.intent.category.LAUNCHER修改为android.intent.category.DEFAULT -->
  2. <activity
  3. android:name="com.wpmid.sdk.base.logo.MIDBaseLogoScreenActivity"
  4. android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
  5. android:screenOrientation="landscape"
  6. android:exported="true"
  7. android:theme="@android:style/Theme.NoTitleBar" >
  8. <intent-filter>
  9. <action android:name="android.intent.action.MAIN" />
  10. <category android:name="android.intent.category.LAUNCHER" />
  11. </intent-filter>
  12. </activity>
  13. <!-- 闪屏默认配置 -->
  14. <meta-data
  15. android:name="midbase_logo_flag"
  16. android:value="1" />
  17. <!-- 闪屏时间为 2S -->
  18. <meta-data
  19. android:name="midbase_logotime"
  20. android:value="2000" />
  21. <!-- 视频闪屏默认配置 -->
  22. <meta-data
  23. android:name="midbase_videologo_flag"
  24. android:value="1" />

5.2.4 其他注意事项

  1. <!-- 如游戏本身有Application类,则需要在代码中继承
  2. com.wpmid.android.channels.Info.MIDBase_Channels_Application;如游戏本身没有
  3. Application类,则需要在此添加配置,将AndroidManifest.xml中application内Android:name配置为"com.wpmid.android.channels.Info.MIDBase_Channels_Application" -->
  4. <application
  5. android:name="com.wpmid.android.channels.Info.MIDBase_Channels_Application"
  6. android:allowBackup="true"
  7. android:icon="@drawable/ic_launcher"
  8. android:label="@string/app_name"
  9. android:theme="@style/NoTitle_FullScreen" >
  10. </application>

注意:APK安装位置属性必须配置为android:installLocation=”auto”

6.注册/登录【必接】

6.1 流程介绍

注册登录流程图

1.手机游戏客户端会调用base sdk登录接口,发起登录/注册请求;
2.sdk客户端向 sdk用户服务器发起登录/注册的请求;
3.用户中心服务器向base sdk返回token、用户信息等等;
4.base sdk向游戏客户端返回登录结果,包含token和用户相关信息;
5.游戏客户端上传用户信息到游戏服务器;
6.游戏服务器根据token向 sdk用户中心服务器发起登录验证;
7.用户中心服务器向游戏服务器返回用户信息;
8.游戏服务器向游戏客户端返回登录结果;

6.2 sdk初始化接口【必接】

6.2.1 接口定义

  1. /**
  2. * 初始化SDK
  3. *
  4. * @param gameResVer 游戏资源版本号,无资源版本号可传""
  5. * @param listener 回调接口
  6. */
  7. public void MIDBaseSDKInit(String gameResVer, MIDBaseSDKListener listener)

6.2.2 参数说明

参数名称 是否必传 类型 说明
gameResVer 可选 String 游戏资源版本号,如游戏无此概念则可以传null。
listener 必须 MIDBaseSDKListener 游戏需实现此回调中的所有接口。

6.2.3 接口示例

  1. // 初始化SDK
  2. MIDBaseSDK.getInstance(this).MIDBaseSDKInit(gameResVer, new MIDBaseSDKListener() {
  3. @Override
  4. public void MIDBaseSDKExitgameCallBack(int arg0, String arg1) {
  5. // TODO Auto-generated method stub
  6. // 游戏使用SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
  7. MainActivity.this.finish();
  8. // 不建议在此回调中使用杀进程的方式,杀进程的方法可以放到生命周期的onDestroy中。
  9. }
  10. @Override
  11. public void MIDBaseSDKInitCallBack(int code, String arg1) {
  12. // TODO Auto-generated method stub
  13. if (MIDBaseCallbackCode.CODE_INIT_SUCCESS == code) {
  14. // 游戏实现 初始化成功
  15. } else {
  16. // 游戏实现 初始化失败
  17. }
  18. }
  19. @Override
  20. public void MIDBaseSDKLoginCallBack(int code, String msg, MIDGameUserData arg2) {
  21. // TODO Auto-generated method stub
  22. if (code == MIDBaseCallbackCode.CODE_LOGIN_SUCCESS) {
  23. //登陆成功
  24. } else {
  25. // 登录失败
  26. }
  27. }
  28. @Override
  29. public void MIDBaseSDKSwitchLoginCallBack(int code, String msg, MIDGameUserData userData) {
  30. // 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
  31. // 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
  32. // 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。
  33. if (code == MIDBaseCallbackCode.CODE_LOGIN_SUCCESS) {
  34. // 切换账号成功
  35. } else {
  36. // 切换账号失败
  37. }
  38. }
  39. @Override
  40. public void MIDBaseSDKLogoutCallBack(int arg0, String arg1) {
  41. // TODO Auto-generated method stub
  42. // 注销成功 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
  43. }
  44. @Override
  45. public void MIDBaseSDKPayCallBack(int code, String pbid, String orderID) {
  46. // TODO Auto-generated method stub
  47. if (code == MIDBaseCallbackCode.CODE_PAY_SUCCESS) {
  48. // 支付成功
  49. } else if (code == MIDBaseCallbackCode.CODE_PAY_FAIL) {
  50. // 支付失败
  51. } else if (code == MIDBaseCallbackCode.CODE_PAY_CANCEL) {
  52. // 支付取消
  53. } else if (code == MIDBaseCallbackCode.CODE_PAY_UNKNOWN){
  54. // 支付结果未知(下单成功)
  55. }
  56. }
  57. });

6.2.4 回调接口说明

  1. SDK初始化结果回调 void MIDBaseSDKInitCallBack(int code, String msg);
  2. SDK登录结果回调: void MIDBaseSDKLoginCallBack(int code, String msg, MIDGameUserData userdata);
  3. SDK切换账号登录结果回调: void MIDBaseSDKSwitchLoginCallBack(int code, String msg, MIDGameUserData userdata);
  4. SDK支付结果回调: void MIDBaseSDKPayCallBack(int code, String pbid, String orderID);
  5. SDK注销结果回调: void MIDBaseSDKLogoutCallBack(int code, String msg);
  6. SDK退出游戏回调: void MIDBaseSDKExitgameCallBack(int code, String msg);

以上接口中的code参数为状态码。

6.2.5 初始化结果回调

  1. /**
  2. * 初始化结果回调
  3. *
  4. * @param code 结果状态码
  5. * @param msg
  6. */
  7. void MIDBaseSDKInitCallBack(int code, String msg);

6.2.6 初始化回调接口参数说明

参数名称 重要性 类型 说明
code 必须 int MIDBaseCallbackCode.CODE_INIT_SUCCESS 为成功,其他为失败

6.3 SDK登录接口【必接】

6.3.1 功能说明

1.联运包调起联运SDK的登录界面;
2.官网包调起SDK官网登录界面;

6.3.2 接口定义

  1. /**
  2. * 登陆接口
  3. */
  4. public void MIDBaseSDKShowLoginView()

6.3.3 接口示例

  1. // 调用登录接口
  2. MIDBaseSDK.getInstance(MainActivity.this).MIDBaseSDKShowLoginView();

6.3.4 登录成功回调接口

  1. /**
  2. * 登录结果回调
  3. *
  4. * @param code
  5. * @param msg
  6. * @param userdata
  7. */
  8. void MIDBaseSDKLoginCallBack(int code, String msg, MIDGameUserData userdata);

此接口为初始化中回调接口之一。

6.3.5 登录成功回调接口参数说明

参数名称 重要性 类型 说明
code 必须 int MIDBaseCallbackCode.CODE_LOGIN_SUCCESS 为成功,其他为失败
msg 必须 String 描述
userdata 必须 MIDGameUserData 当前登录用户的用户信息数据。

6.3.6 登录成功返回数据(MIDGameUserData)说明

参数名称 类型 说明
getUid String 用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识
getToken String 用户中心生成的用户token,游戏需要用来向用户中心服务器做登录验证
getLogintype String 登录类型
getUsername String 用户中心生成的用户名称
getUserServiceCode String 设备当前serviceCode数据,用于服务端打点使用
getReturnJson String Json格式的字符串。第三方用户系统返回给用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

getLogintype: 登录类型,具体值的含义请见下表

loginType 含义
speedyLogin 快速登录
speedyRegister 快速注册
commonLogin 普通登录
commonRegister 普通注册
thirdHiddenLogin 第三方用户登录
thirdHiddenRegister 第三方用户注册
phoneVerifyCodeLogin 手机验证码登录
phoneVerifyCodeRegister 手机验证码注册
phoneLogin 手机登录
phoneRegister 手机注册

6.3.7 登录失败回调

code为状态码,

code 含义
MIDBaseCallbackCode.CODE_LOGIN_FAIL 登录失败
MIDBaseCallbackCode.CODE_LOGIN_FAIL 登录失败,用户取消
MIDBaseCallbackCode.CODE_LOGIN_TIMEOUT 登录失败,连接超时

6.4 SDK登录注销接口【必接】

6.4.1 功能说明

注销当前登录账号,注销成功后会调用游戏实现功能后的注销回调接口。

6.4.2 接口定义

  1. /**
  2. * 登陆注销
  3. */
  4. public void MIDBaseSDKLogout()

6.4.3 接口示例

  1. MIDBaseSDK.getInstance(MainActivity.this).MIDBaseSDKLogout();

6.4.4 注销成功回调接口

  1. @Override
  2. public void MIDBaseSDKLogoutCallBack(int code, String msg)

此接口为初始化中回调接口之一,具体逻辑请游戏客户端实现。
暂时此接口只有成功的情况,游戏不需要处理code和msg。

6.5 SDK切换账号接口【必接】

6.5.1 功能说明

某些渠道SDK当登录过一次后下次登录会变成自动登录,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。

6.5.2 接口定义

  1. /**
  2. * 账号切换
  3. */
  4. public void MIDBaseSDKSwitchAccount()

6.5.3 接口示例

  1. MIDBaseSDK.getInstance(MainActivity.this).MIDBaseSDKSwitchAccount();

6.5.4 切换账号登录成功回调接口

  1. /**
  2. * 切换账号登录结果回调(返回值和登录相同)
  3. *
  4. * @param code
  5. * @param msg
  6. * @param userdata
  7. */
  8. void MIDBaseSDKSwitchLoginCallBack(int code, String msg, MIDGameUserData userdata);

此接口为初始化中回调接口之一。

6.5.5 切换账号登录成功回调接口参数说明

参数名称 重要性 类型 说明
code 必须 int MIDBaseCallbackCode.CODE_LOGIN_SUCCESS 为成功,其他为失败
msg 必须 String 描述
userdata 必须 MIDGameUserData 当前登录用户的用户信息数据。

6.5.6 切换账号登录成功返回数据(MIDGameUserData)说明

参数名称 类型 说明
getUid String 用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识
getToken String 用户中心生成的用户token,游戏需要用来向用户中心服务器做登录验证
getLogintype String 登录类型
getUsername String 用户中心生成的用户名称
getUserServiceCode String 设备当前serviceCode数据,用于服务端打点使用
getReturnJson String Json格式的字符串。第三方用户系统返回给用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。

getLogintype: 登录类型,具体值的含义请见下表

loginType 含义
speedyLogin 快速登录
speedyRegister 快速注册
commonLogin 普通登录
commonRegister 普通注册
thirdHiddenLogin 第三方用户登录
thirdHiddenRegister 第三方用户注册
phoneVerifyCodeLogin 手机验证码登录
phoneVerifyCodeRegister 手机验证码注册
phoneLogin 手机登录
phoneRegister 手机注册

6.5.7 切换账号登录失败回调

code为状态码。

code 含义
MIDBaseCallbackCode.CODE_LOGIN_FAIL 登录失败
MIDBaseCallbackCode.CODE_LOGIN_FAIL 登录失败,用户取消
MIDBaseCallbackCode.CODE_LOGIN_TIMEOUT 登录失败,连接超时

6.6 角色信息设置接口【必接】

6.6.1 功能说明

成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置和一次登录设置;用户使用老角色登录,则只需要调用一次登录设置。

MIDROLE_SENDTYPE_LOGOUT 角色注销功能, 主要用于游戏内处理了角色登出,但是SDK没有办法拿到消息,在平台的统计数据上,角色在线数据不准的问题。

注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置,再调用登录设置。
3.研发需要在本地做基础判断,一些特殊符号不允许出现在角色名、公会名、队伍名、联盟名等名称中,具体符号_(, | { } “ ‘ \ / @ $ # & ! - + ( ) . ? ~ )^*

6.6.2 接口定义

  1. /**
  2. * 游戏在创建角色、登录、角色数据发生变化时调用
  3. *
  4. * @param roleinfo
  5. */
  6. public void MIDBaseSDKRoleInfo(final MIDRoleInfo roleinfo)

6.6.3 MIDRoleInfo 参数说明

参数名称 重要性 类型 说明
setSendtype 必须 Int MIDRoleInfo.MIDROLE_SENDTYPE_REGISTER:角色注册, MIDRoleInfo.MIDROLE_SENDTYPE_LOGIN:角色登陆 , MIDRoleInfo.MIDROLE_SENDTYPE_CHANGE : 角色信息变更 MIDRoleInfo.MIDROLE_SENDTYPE_LOGOUT 角色注销
setServername 必须 String 当前角色所在游戏服务器名称
setServerid 必须 String 当前角色所在游戏服务器ID
setRoleName 必须 String 角色名称
setPlayerid 必须 String 角色ID
setRolelevel 必须 String 角色等级
setViplevel 必须 String 角色VIP等级,没有等级可以传”0”
setLaborunion 非必须 String 角色所在公会
setRoleCreateTime 必须 String 角色创建时间(服务器采集)参数类型:String时间类型:long 精度:秒 (即10位数)
setRoleLevelMTime 必须 String 角色等级变化时间(服务器采集)参数类型:String 时间类型:long 精度:秒 (即10位数)

6.6.4 接口示例

  1. MIDRoleInfo roleInfo = new MIDRoleInfo();
  2. roleInfo.setSendtype(MIDRoleInfo.MIDROLE_SENDTYPE_REGISTER);
  3. roleInfo.setRoleName(rolename);
  4. roleInfo.setPlayerid(roleid);
  5. roleInfo.setServerid(ServerId);
  6. roleInfo.setServername(ServerName);
  7. roleInfo.setRolelevel(RoleLv);
  8. roleInfo.setViplevel(RoleVipLv);
  9. // 角色注册成功需调用此接口设置角色信息,接口第一个参数为MIDRoleInfo.MIDROLE_SENDTYPE_REGISTE表示注册,正常情况下,注册只在新角色注册成功后调用一次
  10. MIDBaseSDK.getInstance(MIDBase_Demo_MainActivity.mMainActivity).MIDBaseSDKRoleInfo(roleInfo);
  11. MIDRoleInfo roleInfo = new MIDRoleInfo();
  12. roleInfo.setSendtype(MIDRoleInfo.MIDROLE_SENDTYPE_LOGIN);
  13. roleInfo.setRoleName(rolename);
  14. roleInfo.setPlayerid(roleid);
  15. roleInfo.setServerid(ServerId);
  16. roleInfo.setServername(ServerName);
  17. roleInfo.setRolelevel(RoleLv);
  18. roleInfo.setViplevel(RoleVipLv);
  19. // 角色登陆成功并成功进入游戏后需调用此接口设置角色信息,接口第一个参数为MIDRoleInfo.MIDROLE_SENDTYPE_LOGIN表示登陆,在每次角色登陆成功后都要调用
  20. MIDBaseSDK.getInstance(MIDBase_Demo_MainActivity.mMainActivity).MIDBaseSDKRoleInfo(roleInfo);

6.7 进入用户中心【必接】

6.7.1 功能说明

进入第三方渠道SDK的用户中心或者论坛界面,或者进入官网SDK的用户中心界面。

6.7.2 接口定义

  1. /**
  2. * 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心
  3. */
  4. public void MIDBaseSDKShowUserCenter()

6.7.3 接口示例

  1. MIDBaseSDK.getInstance(MainActivity.this).MIDBaseSDKShowUserCenter();

6.8 判断是否使用“登录注销”,“切换账号”,“用户中心”接口【必接】

6.8.1 功能说明

“用户中心”,“切换账号”,“登录注销”等接口必须接入。提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。

6.8.2 接口定义

  1. /**
  2. * 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
  3. */
  4. public boolean isUserCenterEnable()
  5. public boolean isSwitchAccountEnable()
  6. public boolean isLogoutEnable()

6.8.3 接口示例

  1. MIDBaseSDK.getInstance(this).isLogoutEnable();
  2. MIDBaseSDK.getInstance(this).isSwitchAccountEnable();
  3. MIDBaseSDK.getInstance(this).isUserCenterEnable();

返回数据如下,boolean格式:
true: 表示需要调用
false: 表示不需要调用

7.充值/发货流程【必接】

7.1 流程介绍

计费流程图

1.游戏调用base sdk计费接口;
2.base sdk向计费中心发起支付请求;
3.计费中心生成订单号,sdk发起计费,服务器收到支付结果并向base sdk返回支付结果;
4.sdk回调游戏客户端支付完成
5.计费中心通知游戏服务器发货;
6.游戏服务器发送虚拟物品至玩家手机游戏客户端;
7.游戏服务器向计费中心返回发货结果;

7.2 接口介绍

7.2.1 支付接口

7.2.1.1 功能说明

调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:
如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”
如游戏中所卖商品在游戏界面显示为“月卡“,当调用支付接口时,商品名称请传“月卡”,商品数量请传“1”
如游戏中所卖“月卡”有多个,当调用支付接口时,商品名称建议传入月卡的金额。例如“30元月卡”、“50元月卡”等等,商品数量请传“1”
礼包类与月卡同理,请在商品名称尽量传入礼包对应的价格,例如:“30元礼包”,“50元礼包,商品数量请传“1”。
注意:官网包中支付宝等sdk支付方式,需要进行打包处理才可以支持。

7.2.1.2 接口定义

  1. /**
  2. * 游戏进行支付时调用
  3. *
  4. * @param product 支付商品信息
  5. */
  6. public void MIDBaseSDKPay(final MIDProduct product)

7.2.1.3 MIDProduct 参数说明

参数名称 重要性 类型 说明
setProductId 必须 String 游戏自定义的商品ID,必传。
setPrice 必须 String 商品价格,单位为分。
setCurrencyType 必须 String 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
setProductName 必须 String 商品名称
setBuyNum 必须 String 商品数量
setProductDesc 必须 String 商品描述
setCurrency 可选 String 购买的虚拟货币名称,比如 钻石,金币,宝石 等
setGamedDeliverUrl 可选 String 游戏发放道具服务器地址,用户支付成功后计费中心会回调此地址告知游戏进行道具发放。 可以配置到SDK后台。
setExtension 可选 String 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。
setRolelevel 可选 String 角色等级,请传数字。
setViplevel 可选 String 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传0。

currencyType说明:

货币类型值 货币名称 货币单位
1 人民币
2 美元 美分
3 日元
4 港币
5 英镑 便士
6 新加坡币
7 越南盾
8 台币
9 韩元
10 泰铢 萨当

7.2.1.4 接口示例

  1. MIDProduct product = new MIDProduct();
  2. product.setBuyNum("100");
  3. product.setCurrency("钻石");
  4. product.setCurrencyType("1");
  5. product.setExtension("我是扩展字段");
  6. product.setGamedDeliverUrl("http://www.acegames.cn");
  7. product.setPrice("1");
  8. product.setProductDesc("100测试商品");
  9. product.setProductId("1000");
  10. product.setProductName("测试商品");
  11. MIDBaseSDK.getInstance(MIDBase_Demo_MainActivity.mMainActivity).MIDBaseSDKPay(product);

7.2.1.5 回调接口说明

  1. /**
  2. * 支付结果回调
  3. *
  4. * @param code 结果类型
  5. * @param pbid 游戏支付的商品id
  6. * @param orderID SDK计费中心产生的订单号。
  7. */
  8. void MIDBaseSDKPayCallBack(int code, String pbid, String orderID);

此接口为初始化中回调接口之一。

7.2.1.6 回调接口参数说明

参数名称 重要性 类型 说明
code 必须 Int 结果状态码。
pbid 必须 String 游戏自定义商品ID。
orderID 必须 String 计费中心生成的订单号,支付失败或者用户取消支付时可能返回为空。

code 标识码说明

参数名称 说明
MIDBaseCallbackCode.CODE_PAY_SUCCESS 支付成功
MIDBaseCallbackCode.CODE_PAY_FAIL 支付失败
MIDBaseCallbackCode.CODE_PAY_CANCEL 用户取消支付
MIDBaseCallbackCode.CODE_PAY_UNKNOWN 支付结果未知(下单成功)

注:”CODE_PAY_UNKNOWN”表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 “CODE_PAY_UNKNOWN”代表支付流程结束。”CODE_PAY_UNKNOWN”回调触发以后不会在有支付成功和支付失败的回调了,游戏需要根据服务器通知为准。

8.礼包码兑换【选接】

8.1 功能说明

通过礼包码来兑换游戏中对应的礼包,游戏内入口需要可以通过服务端控制显示或者隐藏。

8.2 接口介绍

8.2.1 礼包码兑换接口

8.2.1.1 接口定义

  1. /**
  2. * 礼包码兑换接口
  3. *
  4. * @param giftCode 礼包码
  5. * @param url 发货地址
  6. * @param extendParams 扩展参数
  7. * @param listener 回调
  8. */
  9. public void MIDBaseSDKGiftCodeExchange(final String giftCode, final String url,
  10. final String extendParams,
  11. final MIDBaseGiftCodeListener listener)

8.2.1.2 参数说明

参数名称 重要性 类型 说明
giftCode 必须 String 需要兑换的礼包码
url 必须 String 兑换成功后,计费中心会通知此地址发货。(游戏服发货地址)
extendParams 可选 String 游戏透传参数,通知发货时会原样返回。
listener 必须 MIDBaseGiftCodeListener 客户端回调接口。

8.2.1.3 接口示例

  1. MIDBaseSDK.getInstance(mActivity).MIDBaseSDKGiftCodeExchange("礼包码",
  2. "http://xxxxxxxxx/xxxxxxxx","透传参数",
  3. new MIDBaseGiftCodeListener() {
  4. @Override
  5. public void GiftCodeSuccess(String giftcode, String extendParams) {
  6. // TODO Auto-generated
  7. // method stub
  8. Toast.makeText(MainActivity.mMainActivity, "兑换成功", Toast.LENGTH_SHORT).show();
  9. }
  10. @Override
  11. public void GiftCodeFail(int code, String msg) {
  12. // TODO Auto-generated
  13. // method stub
  14. Logs.i("info", " 礼包码 兑换失败 code = " + code);
  15. }
  16. });

8.2.1.4 回调接口说明

兑换成功:

  1. @Override
  2. public void GiftCodeSuccess(String giftid, String extendParams)

giftid:礼包码归属的礼包ID。
extendParams:透传参数。

兑换失败:

  1. @Override
  2. public void GiftCodeFail(int code)

code:错误码。

9. Activity生命周期相关接口的调用【必接】

9.1 功能说明

因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中必须调用SDK中定义的生命周期方法,否则可能会出现不可预估的问题。

9.2 接口介绍

9.2.1 onStart调用示例

  1. @Override
  2. protected void onStart() {
  3. // TODO Auto-generated method stub
  4. super.onStart();
  5. MIDBaseSDK.getInstance(this).onStart();
  6. }

9.2.2 onRestart调用示例

  1. @Override
  2. protected void onRestart() {
  3. // TODO Auto-generated method stub
  4. super.onRestart();
  5. MIDBaseSDK.getInstance(this).onRestart();
  6. }

9.2.3 onResume调用示例

  1. @Override
  2. protected void onResume() {
  3. // TODO Auto-generated method stub
  4. super.onResume();
  5. MIDBaseSDK.getInstance(this).onResume();
  6. }

9.2.4 onPause调用示例

  1. @Override
  2. protected void onPause() {
  3. // TODO Auto-generated method stub
  4. super.onPause();
  5. MIDBaseSDK.getInstance(this).onPause();
  6. }

9.2.5 onStop调用示例

  1. @Override
  2. protected void onStop() {
  3. // TODO Auto-generated method stub
  4. super.onStop();
  5. MIDBaseSDK.getInstance(this).onStop();
  6. }

9.2.6 onDestroy调用示例

  1. @Override
  2. protected void onDestroy() {
  3. // TODO Auto-generated method stub
  4. super.onDestroy();
  5. MIDBaseSDK.getInstance(this).onDestroy();
  6. }

9.2.7 onActivityResult调用示例

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. // TODO Auto-generated method stub
  4. super.onActivityResult(requestCode, resultCode, data);
  5. MIDBaseSDK.getInstance(this).onActivityResult(requestCode, resultCode, data);
  6. }

9.2.8 onConfigurationChanged调用示例

  1. @Override
  2. public void onConfigurationChanged(Configuration newConfig) {
  3. // TODO Auto-generated method stub
  4. super.onConfigurationChanged(newConfig);
  5. MIDBaseSDK.getInstance(this).onConfigurationChanged(newConfig);
  6. }

9.2.9 onNewIntent调用示例

  1. @Override
  2. protected void onNewIntent(Intent intent) {
  3. super.onNewIntent(intent);
  4. MIDBaseSDK.getInstance(this).onNewIntent(intent);
  5. }

9.2.10 onSaveInstanceState调用示例

  1. @Override
  2. protected void onSaveInstanceState(Bundle outState) {
  3. // TODO Auto-generated method stub
  4. super.onSaveInstanceState(outState);
  5. // 必须调用
  6. MIDBaseSDK.getInstance(this).onSaveInstanceState(outState);
  7. }

9.2.11 onRequestPermissionsResult 调用实例

  1. @Override
  2. public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  3. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  4. MIDBaseSDK.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults);
  5. }

10.退出游戏【必接】

10.1 功能说明

调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用SDK的退出提示界面或者直接退出游戏。

10.2 接口定义

  1. /**
  2. * 调用第三方SDK退出提示页面,
  3. * 如果第三方SDK无退出提示页面则调用SDK提示页面
  4. */
  5. public void MIDBaseSDKExitGame()

10.3 接口示例

  1. @Override
  2. public boolean onKeyDown(int keyCode, KeyEvent event) {
  3. // TODO Auto-generated method stub
  4. if (keyCode == KeyEvent.KEYCODE_BACK) {
  5. MIDBaseSDK.getInstance(this).MIDBaseSDKExitGame();
  6. return true;
  7. }
  8. return super.onKeyDown(keyCode, event);
  9. }

10.4 退出回调

  1. /**
  2. * SDK退出回调
  3. *
  4. * @param code
  5. * @param msg
  6. */
  7. void MIDBaseSDKExitgameCallBack(int code, String msg);

游戏需要在此回调内处理游戏退出逻辑。
此接口为初始化中回调接口之一。

11.其他接口

11.1 开启SDK日志输出【出正式包时需要关闭】

11.1.1 功能说明

打开后能在logcat看到SDK的日志输出,TAG为“MIDBaseSDKLog”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。

11.1.2 接口示例

  1. // 设置打开日志输出
  2. MIDBaseSDK.getInstance(this).setLogs(true);

true为打开,false为关闭。
研发不调用此接口,默认为关闭状态

11.2 获取平台ID【必接】

11.2.1 功能说明

获取当前游戏包中的ServiceId,(游戏联运渠道ID,游戏可根据此ID区分各发行渠道)。

11.2.2 接口示例

  1. MIDBaseSDK.getInstance(this).getServiceId();

11.3 获取发行区域ID【选接】

11.3.1 功能说明

获取当前游戏包中的LocaleId, (游戏发行区域ID)。

11.3.2 接口示例

  1. MIDBaseSDK.getInstance(this).getLocaleId();

11.4 获取机型组ID【选接】

11.4.1 功能说明

获取当前游戏包中的deviceGroupId, (机型组ID)。

11.4.2 接口示例

  1. MIDBaseSDK.getInstance(this).getDeviceGroupId();

11.5 获取游戏内公告内容【选接】

11.5.1 功能说明

获取当前游戏配置在平台的公告内容,获取到的内容游戏需要自己做UI框展示内容,展示时机由游戏控制。公告分为 选服前公告,用于展示在选服之前或者选服时展示。活动公告列表,用于角色登录以后展示。

11.5.2 接口示例

  1. /**
  2. * 获取 是否有游戏内公告数据。
  3. *
  4. * @param noticeType 公告类型
  5. * @param listener 数据回调
  6. */
  7. MIDBaseSDK.getInstance(this).MIDBaseSDKGetGameNotice(MIDBaseParam.GAME_NOTICE_TYPE_LOGIN,
  8. MIDBaseGameNoticeListener);

11.5.3 参数说明

公告类型说明

公告类型说明 参数名称 重要性 类型 说明
MIDBaseParam.GAME_NOTICE_TYPE_LOGIN 必须 int 选服前公告
MIDBaseParam.GAME_NOTICE_TYPE_ACTIVITY 必须 int 游戏内公告
参数名称 重要性 类型 说明
noticeType 必须 int 公告类型 (详见 公告类型说明)
listener 必须 MIDBaseGameNoticeListener 公告数据回调 (详见 11.6.4 回调说明)

11.5.4 回调说明

回调接口区分成功和失败,失败时为未获取到公告,主要原因是连接服务器失败导致的。
获取成功时会返回 公告条数,如果条目为0 则为未配置。

  1. /**
  2. * 游戏内公告数据解析
  3. *
  4. */
  5. private MIDBaseGameNoticeListener mBaseGameNoticeListener = new MIDBaseGameNoticeListener() {
  6. @Override
  7. public void getNoticeSuccess(int code, int dataSize, String data) {
  8. Log.i("midbase_demo", " getNoticeSuccess code = " + code + " dataSize = " + dataSize + " data = " + data);
  9. if (dataSize == 0) {
  10. Toast.makeText(MIDBase_Demo_MainActivity.mMainActivity, "未配置公告信息", Toast.LENGTH_SHORT).show();
  11. } else {
  12. try {
  13. JSONArray dataJson = new JSONArray(data);
  14. for (int i = 0; i < dataJson.length(); i++) {
  15. JSONObject noticeJson = dataJson.getJSONObject(i);
  16. String noticeId = noticeJson.getString("noticeId");
  17. String noticeType = noticeJson.getString("noticeType");
  18. String noticeTitle = noticeJson.getString("noticeTitle");
  19. String noticeContent = noticeJson.getString("noticeContent");
  20. String contentType = noticeJson.getString("contentType");
  21. }
  22. } catch (JSONException e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }
  27. @Override
  28. public void getNoticeFail(int code) {
  29. Log.i("midbase_demo", " getNoticeFail code = " + code);
  30. }
  31. };

获取成功参数说明

参数名称 重要性 类型 说明
dataSize 必须 int 本次获取到的公告条数,数量为0 则为未配置公告,需要联系运营配置需要的公告
data 必须 JSONArray json数组的公告内容,为获取到的公告数据
data.noticeId 必须 String 公告在平台的编号
data.noticeType 必须 String 公告类型;GAME_NOTICE_TYPE_LOGIN标识登录公告;GAME_NOTICE_TYPE_ACTIVITY标识活动公告; 登录公告是在进入游戏服之前展示,支持按渠道以及版本进行配置; 活动公告是进服后展示,支持按游戏服以及版本进行配置
data.noticeTitle 必须 String 公告标题
data.contentType 必须 String 公告内容的类型;text:文本;html:富文本
data.noticeContent 必须 String 公告内容

11.6 打开活动公告和登录公告接口【选接】

11.6.1 功能说明

调用打开活动公告接口,一般用于游戏内公告展示。回调里返回公告打开和关闭事件,回调接口目录:11.5

11.6.2 活动公告接口示例

  1. /**
  2. * 研发主动调用 打开游戏内活动公告,
  3. *
  4. */
  5. MIDBaseSDK.getInstance(this).MIDBaseOpenActivityNotice();

11.6.3 登录公告接口示例

  1. /**
  2. *研发主动调用 打开登录公告,
  3. *
  4. */
  5. MIDBaseSDK.getInstance(this).MIDBaseOpenLoginNotice();

11.6.4 指定服务器公告接口示例 【选接】

产品根据需求调用,调用接口立即展示公告。

  1. /**
  2. *研发主动调用 打开指定服务器公告,
  3. * @param roleServerId 需要打开那个服务器公告
  4. */
  5. MIDBaseSDK.getInstance(this).MIDBaseOpenLoginNotice("0001");

11.7 设置公告页面开启关闭事件回调【选接】

11.7.1 功能说明

回调里返回公告打开和关闭事件

11.7.2 接口示例

  1. /**
  2. * 研发主动调用 打开游戏内活动公告,
  3. *
  4. */
  5. MIDBaseSDK.getInstance(this).MIDBaseSetSDKNoticeListener(MIDBaseSDKNoticeListener listener);

11.7.3 回调说明

回调给研发公告的事件,包含用户通过SDK悬浮层公告按钮点击以后的公告事件,研发主动调用活动公告打开关闭事件,公告不存在的回调。

  1. /**
  2. * 登录公告和游戏内活动公告打开关闭事件
  3. */
  4. private MIDBaseSDKNoticeListener mBaseSDKNoticeListener = new MIDBaseSDKNoticeListener() {
  5. /**
  6. * 登录公告打开事件,只有页面存在的时候,才会有打开的效果
  7. */
  8. @Override
  9. public void MIDBaseSDKLoginNoticeStart() {
  10. Toast.makeText(MIDBase_Demo_MainActivity.this, " 登录公告打开事件 ", Toast.LENGTH_SHORT).show();
  11. }
  12. /**
  13. * 登录公告关闭事件
  14. */
  15. @Override
  16. public void MIDBaseSDKLoginNoticeClose() {
  17. Toast.makeText(MIDBase_Demo_MainActivity.this, " 登录公告关闭事件 ", Toast.LENGTH_SHORT).show();
  18. }
  19. /**
  20. * 登录公告不存在,
  21. * 调用打开公告接口的时候,发现公告不存在的时候被调用
  22. */
  23. @Override
  24. public void MIDBaseSDKNoLoginNotice() {
  25. Toast.makeText(MIDBase_Demo_MainActivity.this, " 登录公告不存在 ", Toast.LENGTH_SHORT).show();
  26. }
  27. /**
  28. * 活动公告打开事件,只有页面存在的时候,才会有打开的效果
  29. */
  30. @Override
  31. public void MIDBaseSDKActivityNoticeStart() {
  32. Toast.makeText(MIDBase_Demo_MainActivity.this, " 活动公告打开事件 ", Toast.LENGTH_SHORT).show();
  33. }
  34. /**
  35. * 活动公告关闭事件
  36. */
  37. @Override
  38. public void MIDBaseSDKNoActivityNotice() {
  39. Toast.makeText(MIDBase_Demo_MainActivity.this, " 活动公告不存在 ", Toast.LENGTH_SHORT).show();
  40. }
  41. /**
  42. * 活动公告不存在,
  43. * 调用打开公告接口的时候,发现公告不存在的时候被调用
  44. */
  45. @Override
  46. public void MIDBaseSDKActivityNoticeClose(String data) {
  47. Toast.makeText(MIDBase_Demo_MainActivity.this, " 活动公告关闭事件 ", Toast.LENGTH_SHORT).show();
  48. }
  49. };

11.8 游戏进度上报【必接】

11.8.1 功能说明

研发上报游戏现在的进度,用于SDK标记游戏现在所处进度,并进行相关操作。
以悬浮层按钮开关为例:
SDK会在进入服务器列表时打开SDK悬浮功能条,
SDK会在离开服务器选择时关闭SDK悬浮功能条,
请研发上报事件时尽量准确。

11.8.2 上报进度参数说明

参数名称 说明
MIDBaseParam.GAME_PROCESS_EVENT_TYPE_IN_SELECT_SERVERLIST 进入选择服务器列表页面的事件。
MIDBaseParam.GAME_PROCESS_EVENT_TYPE_OUT_SELECT_SERVERLIST 离开选择服务器列表页面的事件。

11.8.3 接口示例

  1. /**
  2. * 研发主动调用,传入不同的事件用于标记游戏现在所处进度
  3. *
  4. */
  5. MIDBaseSDK.getInstance(this).MIDBaseSendGameProcess(int event);

11.9 打开游戏内外链(活动详情)页面【选接】

11.9.1 功能说明

打开游戏内活动详情页面,通过后台配置的活动id打开指定活动页面。

11.9.2 接口示例

  1. /**
  2. * 根据活动ID打开活动页面
  3. * @param activityId 活动id
  4. * @param roleLevel 当前角色等级
  5. * @param roleVipLevel 当前角色VIP等级
  6. * @param listener 活动公告回调
  7. */
  8. MIDBaseSDK.getInstance(MIDBase_Demo_MainActivity.mMainActivity).MIDBaseOpenAvtivtyDetils("19",
  9. "10", "10", mBaseSDKActivityDetilsListener);

11.9.3 回调接口示例

  1. private MIDBaseSDKActivityDetilsListener mBaseSDKActivityDetilsListener = new MIDBaseSDKActivityDetilsListener() {
  2. /**
  3. * 登录公告弹出,适用于主动弹出。
  4. * @param activityId 研发打开的活动id
  5. */
  6. @Override
  7. public void MIDBaseSDKActivityDetilsStart(String activityId) {
  8. Logs.i(LOGTAG, " mBaseSDKActivityDetilsListener 活动详情打开 活动ID activityId = "
  9. + activityId);
  10. }
  11. /**
  12. * 登录公告关闭返回
  13. * @param activityId 研发打开的活动id
  14. * @param data 暂时没用,为以后回传数据预约字段
  15. */
  16. @Override
  17. public void MIDBaseSDKActivityDetilsClose(String activityId, String data) {
  18. Logs.i(LOGTAG, " mBaseSDKActivityDetilsListener 活动详情关闭 活动ID activityId = "
  19. + activityId);
  20. }
  21. /**
  22. * 没有登录公告
  23. * @param activityId 研发打开的活动id
  24. */
  25. @Override
  26. public void MIDBaseSDKNoActivityDetils(String activityId) {
  27. Logs.i(LOGTAG, " mBaseSDKActivityDetilsListener 活动不存在 活动ID activityId = "
  28. + activityId);
  29. }
  30. };

11.10 客服反馈功能【弃用】

客服反馈功能弃用,请使用aihelp客服功能。

11.11 获取资源更新CDN地址功能【必接】

11.11.1 功能说明

初始化成功以后可以通过SDK获取配置到GSC后台的CDN数据。可以配置多个CDN

11.11.2 接口示例

  1. /**
  2. * 获取游戏更新资源使用的CDN地址,
  3. *
  4. * @param listener 获取结果回调
  5. */
  6. MIDBaseSDK.getInstance(this).MIDBaseSDKgetUpdateCDNPath(mBaseUpdatePCDNPathListener);

11.11.3 回调接口示例

获取成功后的 json格式说明

参数名 格式 说明
domainList String cdn地址集合,逗号分隔,研发可以按照顺序尝试使用
  1. /**
  2. * 获取CDN地址回调
  3. */
  4. private MIDBaseUpdatePCDNPathListener mBaseUpdatePCDNPathListener = new MIDBaseUpdatePCDNPathListener() {
  5. @Override
  6. public void getPathSuccess(JSONObject cdnPath) {
  7. Logs.i(LOGTAG, " mBaseUpdatePCDNPathListener getPathSuccess cdnPath = "
  8. + cdnPath.toString());
  9. // cdn地址集合,逗号分隔,研发可以按照顺序尝试使用
  10. try {
  11. String domainList = cdnPath.getString("domainList");
  12. } catch (JSONException e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. @Override
  17. public void getPathFail(int code) {
  18. Logs.i(LOGTAG, " mBaseUpdatePCDNPathListener getPathFail code = "
  19. + code);
  20. }
  21. };

11.12 获取Servicecode【必接】

登录完成或者切换账号完成以后在登录数据内返回serviceCode。
MIDGameUserData 对象内调用getUserServiceCode。

11.13 SDK语言切换【选接】

11.13.1 功能说明

适用于有切换语言需求的产品。
如果没有多语言需求可以忽略。
可以在初始化前调用。
暂时支持 英文,中文,繁体,印尼语,泰语,德语,韩语,俄罗斯语,法语,西班牙语,意大利,葡萄牙语,日文,荷兰,挪威,波兰,瑞典语言.
如果研发有多语言需求,需要在启动后先设置语言,避免SDK展示语言和游戏展示语言不一致情况。

11.13.2 接口说明

  1. /**
  2. * 切换换语言
  3. *
  4. * @param pNewUserLocale New User Locale
  5. */
  6. MIDBaseSDK.getInstance(this).MIDBaseUpdateLocale(Locale pNewUserLocale);

11.13.3 参数示例

语言 参数
英文 MIDBaseParam.LOCALE_English
中文 MIDBaseParam.LOCALE_CHINESE
繁体 MIDBaseParam.LOCALE_TRADITIONAL_CHINESE
印尼语 MIDBaseParam.LOCALE_ID
泰语 MIDBaseParam.LOCALE_TH
德语 MIDBaseParam.LOCALE_DE
韩语 MIDBaseParam.LOCALE_KO
俄罗斯语 MIDBaseParam.LOCALE_RU
法语 MIDBaseParam.LOCALE_FR
西班牙语 MIDBaseParam.LOCALE_ES
意大利 MIDBaseParam.LOCALE_IT
葡萄牙 MIDBaseParam.LOCALE_PT
土耳其语 MIDBaseParam.LOCALE_TR
越南语 MIDBaseParam.LOCALE_VI
日文 MIDBaseParam.LOCALE_JA
荷兰 MIDBaseParam.LOCALE_NL
挪威 MIDBaseParam.LOCALE_NO
波兰 MIDBaseParam.LOCALE_PL
瑞典 MIDBaseParam.LOCALE_SV

11.13.4 接口示例

  1. /**
  2. * 切换换语言
  3. *
  4. * @param pNewUserLocale 用户选择的语言
  5. */
  6. MIDBaseSDK.getInstance(this).MIDBaseUpdateLocale(MIDBaseParam.LOCALE_English);

11.14 第三方广告平台打点接口【必接】

11.14.1 功能说明

游戏端发送第三方的日志
比如给AppsFlyer、Facebook之类的第三方统计SDK发送。
需要运营和技术支持确定参数和日志key以后调用。
使用此接口需要联系技术支持获取详细点位文档。
这里只是说明和用完成新手引导作为举例说明。

11.14.2 接口说明

  1. /**
  2. * 游戏端发送第三方的日志
  3. * 比如给AppsFlyer、Facebook之类的第三方统计SDK发送
  4. *
  5. * @param logKey 日志KEY
  6. * @param logValue 日志内容 HashMap key-val格式
  7. */
  8. public void MIDBaseSDKSendAnalyticsInfoLog(String logKey,
  9. HashMap<String, Object> logValue) {

11.14.3 接口示例

  1. // 完成新手引导打点举例
  2. HashMap<String, Object> logValue = new HashMap<String, Object>();
  3. MIDBaseSDK.getInstance(MainActivity)
  4. .MIDBaseSDKSendAnalyticsInfoLog("tutorial_complete",
  5. logValue);

11.15 设置接口隐私协议回调【选接】

11.16.1 功能说明

SDK通过此回调返回给研发隐私协议选择状态。
在初始化的时候同时设置隐私协议回调。

11.15.2 接口说明

  1. /**
  2. * 设置用户协议相关接口
  3. *
  4. * @param listener 用户协议回调
  5. */
  6. public void MIDBaseSetAgreementListener(MIDBaseUserAgreementListener listener);

11.15.3 接口示例

  1. // 用户协议回调注册
  2. MIDBaseSDK.getInstance(MainActivity).MIDBaseSetAgreementListener(mBaseUserAgreementListener);

11.16.4 回调说明

MIDBaseUserAgreementListener 回调说明。

  1. /**
  2. * 用户协议。
  3. *
  4. */
  5. private MIDBaseUserAgreementListener mBaseUserAgreementListener = new MIDBaseUserAgreementListener() {
  6. @Override
  7. public void UserAgreementOpen() {
  8. Logs.i("middemo", " UserAgreementOpen, 隐私协议打开接口,不需要可以不关心");
  9. }
  10. @Override
  11. public void UserAgreementResult(boolean isAgree, JSONObject jsonObject) {
  12. Log.i("middemo", "UserAgreementResult: isAgree = " + isAgree + " jsonObject = " + jsonObject);
  13. }
  14. };

11.15.5 回调参数说明

针对全球GDPR,协议,参数解释。其他地区只需要关心是否同意即可。

参数 参数说明
isAgree 是否同意了协议 ,对GDPR,默认是同意
jsonObject 同意详情。具体选择了那种模式 ,JSON格式,欧美专用,其他地区不需要关心
jsonObject.personalizedDiscounts 同意了第一选项,
jsonObject.marketingPurposes 同意了第二选项

11.16 打开隐私页面【必接】

11.16.1 功能说明

SDK通过此接口在游戏内打开隐私协议,
具体打开实际按照运营需求。
隐私协议选择结果,通过11.16回调通知。

11.16.2 接口说明

  1. /**
  2. * 打开隐私协议。
  3. */
  4. public void MIDBaseOpenUserAgreement()

11.16.3 接口示例

  1. /**
  2. * 打开隐私协议。
  3. */
  4. MIDBaseSDK.getInstance(mMainActivity).MIDBaseOpenUserAgreement();

11.17 获取客户端IP。【选接】

11.17.1 功能说明

返回客户端当前IP,请在登录成功后获取。

11.17.2 接口示例

  1. /**
  2. * @return 客户端IP
  3. */
  4. MIDBaseSDK.getInstance(mMainActivity).MIDBaseGetClientIP();

11.18 获取华为&谷歌支付列表功能【选接】

游戏调用此接口后,可以从获取全部商品的列表,列表内包括商品id 商品价格和货币符号。
此接口有可能会失败。 所以游戏需要在失败的时候,有默认展示项。
此功能需要经过SDK工具打包后实现, 母包默认返回空字符串,望知悉。
仅使用华为&谷歌支付的包可以使用此接口。
同时需要游戏研发和运营确定好计费点,并通知技术支持配置后才能获取。

11.18.1 接口使用说明

  1. /**
  2. * 获取华为&谷歌支付列表功能
  3. *
  4. * @param id
  5. * getPayCurrency 获取华为&谷歌支付当前货币信息固定值
  6. */
  7. MIDBaseSDK.getInstance(mMainActivity)
  8. .MIDBaseSDKChannelExtend("SkuDetails");

11.18.2 功能回调说明

功能回调通过 MIDBaseSDK.getInstance(this).MIDBaseSDKSetExtendListener 注册的回调接口接收。
接收到的数据为道具列表。(JSONArray)
列表内每一项说明:

key 类型 说明
gscProductId String 商品编码
price String 商品价格,带有货币符号和货币编码的。 列如:港币8块钱 此项为: HK$8.00
title String 商品名
productId String 商品在华为&谷歌后台的商品id
currency String 当前货币符号,列如: 港币 此项为:HKD
price_amount String 当前价格。分为单位。列如:港币8块钱 此项为 800
  1. /**
  2. * 扩展功能回调
  3. */
  4. private MIDBaseExtendListener mBaseExtendListener = new MIDBaseExtendListener() {
  5. @Override
  6. public void extendListener(String id, String... data) {
  7. if (id.equals("SkuDetails")) {
  8. if (data[0] != null || !data[0].equals("")) {
  9. Log.i(LOGTAG,
  10. " SkuDetails 当前华为&谷歌需要支付的货币列表 = " + data[0]);
  11. try {
  12. JSONArray propList = new JSONArray(data[0]);
  13. for (int i = 0; i < propList.length(); i++) {
  14. JSONObject prop = propList.getJSONObject(i);
  15. String productId = prop.getString("productId");
  16. String price = prop.getString("price");
  17. String title = prop.getString("title");
  18. String gscProductId = prop.getString("gscProductId");
  19. String currency = prop.getString("currency");
  20. }
  21. } catch (JSONException e) {
  22. e.printStackTrace();
  23. }
  24. Toast.makeText(MIDBase_Demo_MainActivity.this, data[0], Toast.LENGTH_SHORT).show();
  25. } else {
  26. Log.i(LOGTAG, "SkuDetails 获取道具信息 失败,拿不到实际支付获取货币 ");
  27. }
  28. }
  29. }
  30. };

11.19 跳转到谷歌应用商店接口【选接】

调转到谷歌应用商店接口。让用户可以去评分。
仅谷歌商店的包可以使用此功能。

11.19.1 接口使用说明

  1. /**
  2. * 跳转到谷歌应用商店接口
  3. */
  4. MIDBaseSDK.getInstance(MIDBase_Demo_MainActivity.mMainActivity)
  5. .MIDBaseSDKChannelExtend("transferToGooglePlay");

11.20 打开webview【选接】

打开一个webview,并跳转到指定链接

11.20.1 接口使用说明

  1. /**
  2. * 打开内置webview
  3. *
  4. * @param url 需要打开的url
  5. */
  6. MIDBaseSDK.getInstance(mMainActivity)
  7. .MIDBaseSDKOpenWebview("需要打开的url");

11.21 获取客户端IP 所在国家。【选接】

11.21.1 功能说明

返回客户端当前IP 所在地域,请在登录成功后获取。
参数值来源于国际公认的国家和地区ISO 3166-1代码表

11.21.2 接口示例

  1. /**
  2. * @return 客户端IP地域
  3. */
  4. MIDBaseSDK.getInstance(mMainActivity).MIDBaseGetClientIPCountry();

11.22 获取客户端IP 所在省份。【选接】

11.22.1 功能说明

返回客户端当前IP 所在地域,请在登录成功后获取。

11.22.2 接口示例

  1. /**
  2. * @return 客户端IP地域
  3. */
  4. MIDBaseSDK.getInstance(this).MIDBaseGetClientIPProvince();

11.23 问卷调查打开【选接】

11.23.1 功能说明

打开问卷调查页面。
需要和技术支持协商使用,
问卷调查ID需要在平台配置。
此功能需要和服务端配合接入。
问卷网后台配置的所有外部参数,除request_id由平台生成外,其他参数都需要通过“透传参数”传过来才能显示在答卷数据中。

11.23.2 接口说明

  1. /**
  2. * 打开问卷调查
  3. *
  4. * @param QuestionId 问卷id
  5. * @param roleLv 角色等级
  6. * @param roleVipLv 角色vip等级
  7. * @param value 透传参数 研发自定义 可以为null
  8. */
  9. public void MIDBaseOpenQuestionnaire(final String QuestionId, final String roleLv, final String roleVipLv, final HashMap<String, String> value)

11.23.3 接口举例

  1. // 举例打开 问卷ID为:1 的问卷,
  2. // 角色等级:11 ,角色VIP等级:12, 透传参数 key1 value1, key2,value2.
  3. HashMap<String, String> mapValue = new HashMap<>();
  4. mapValue.put("key1", "value1");
  5. mapValue.put("key2", "value2");
  6. MIDBaseSDK.getInstance(mMainActivity).MIDBaseOpenQuestionnaire("1", "11", "12", mapValue);

11.24 检测权限是否允许 【选接】

11.24.1 功能说明

用于检测权限是否被允许

11.24.2 接口说明

  1. /**
  2. * 检测权限是否允许
  3. * @param permiss 需要检测的权限
  4. * @return true 允许 false不允许
  5. */
  6. public boolean MIDBaseCheckPermission(String permiss) ;

11.24.3 接口举例

  1. // 举例 检测是否允许通知
  2. // return true 允许 false不允许
  3. Boolean isPer = MIDBaseSDK.getInstance(mMainActivity)
  4. .MIDBaseCheckPermission("android.permission.POST_NOTIFICATIONS")

11.25 申请权限 【选接】

11.25.1 功能说明

用于申请权限

11.25.2 接口说明

  1. /**
  2. * 申请单个权限
  3. *
  4. * @param permissions 需要申请的权限
  5. */
  6. public void MIDBaseRequestPermission(String permissions, OnPermissionCallback callback);
  7. /**
  8. * 申请多个权限
  9. *
  10. * @param permissions 需要申请的权限数组
  11. */
  12. public void MIDBaseRequestPermissions(String[] permissions, OnPermissionCallback callback);

11.25.3 接口举例

  1. // 举例 申请通知栏权限
  2. MIDBaseSDK.getInstance(mMainActivity)
  3. .MIDBaseRequestPermission("android.permission.POST_NOTIFICATIONS",
  4. new MIDPermission.OnPermissionCallback() {
  5. @Override
  6. public void onGranted(List<String> list, boolean b) {
  7. Toast.makeText(mMainActivity,
  8. " 通知栏权限开启", Toast.LENGTH_SHORT).show();
  9. }
  10. @Override
  11. public void onDenied(List<String> permissions, boolean doNotAskAgain) {
  12. Toast.makeText(mMainActivity,
  13. " 通知栏权限被拒绝开启", Toast.LENGTH_SHORT).show();
  14. }
  15. });

11.25.4 回调说明

  1. /**
  2. * 有权限被同意授予时回调
  3. *
  4. * @param permissions 请求成功的权限组
  5. * @param allGranted 是否全部授予了
  6. */
  7. void onGranted( List<String> permissions, boolean allGranted);
  8. /**
  9. * 有权限被拒绝授予时回调
  10. *
  11. * @param permissions 请求失败的权限组
  12. * @param doNotAskAgain 是否勾选了不再询问选项
  13. */
  14. default void onDenied( List<String> permissions, boolean doNotAskAgain) {
  15. }

11.26 打开论坛 【选接】

打开论坛功能。

11.26.1 接口使用说明

  1. /**
  2. * 打开论坛
  3. */
  4. MIDBaseSDK.getInstance(mMainActivity).MIDBaseOpenForum();

11.27 打开论坛 - 带透传参数 【选接】

打开论坛功能,并且带透传参数,
参数内容需要和平台提前约定好,可以用于规定指定打开某些页面的情况。
参数内容各个产品按需求和平台约定后透传,否则传的参数不会有任何效用。

如果需要得到论坛的打开关闭状态可以接入(11.28 设置论坛开启关闭事件回调)

11.27.1 接口使用说明

  1. /**
  2. * 打开论坛
  3. @param customparas 透传参数
  4. */
  5. MIDBaseSDK.getInstance(mMainActivity)
  6. .MIDBaseOpenForum(String customparas);

11.27.2 customparas 说明

该接口由SDK通过服务端接口platform-app-activity提供,负责按照论坛的要求整理跳转参数,并自动跳转到论坛地址
customparas 介绍

字段 类型 介绍
function string 功能标识; topicId:标识打开指定帖子,此时data中应该传帖子ID; subjectId:标识打开话题主页,此时data 中应该传话题id; encyclopedia:标识打开百科页面; gift-bag:标识打开礼包中心; userCenter:标识打开个人中心; 如果不填写该值,默认跳转到论坛首页
data string 根据不同的function传递不同的数据

11.28 设置论坛开启关闭事件回调【选接】

11.28.1 功能说明

回调里返回论坛打开和关闭事件, 需要得到论坛打开和关闭状态的产品可以使用

11.28.2 接口示例

  1. /**
  2. * 自有论坛 打开关闭回调配置
  3. *
  4. */
  5. MIDBaseSDK.getInstance(mMainActivity).MIDBaseSetForumListener(mBaseForumListener);

11.28.3 回调说明

回调给研发论坛的事件,包含用户通过SDK悬浮层论坛按钮点击以后的打开关闭事件,研发主动调用论坛打开关闭事件。

  1. /**
  2. * 论坛打开关闭事件
  3. */
  4. private MIDBaseForumListener mBaseForumListener = new MIDBaseForumListener() {
  5. @Override
  6. public void onOpenForumListener() {
  7. Toast.makeText(mMainActivity, " 论坛打开事件 ", Toast.LENGTH_SHORT).show();
  8. }
  9. @Override
  10. public void onCloseForumListener() {
  11. Toast.makeText(mMainActivity, " 论坛关闭事件 ", Toast.LENGTH_SHORT).show();
  12. }
  13. };

12.分享功能【选接】

SDK分享功能目前整合了微信、QQ、新浪微博、Facebook、Twitter等SDK,包含文本分享、图片分享、链接分享等功能。点击链接查看详情
http://sdk.acegames.cn/t3/241/4775/1500007595.html

13.推送功能【选接】

提供获取推送Token、本地推送、移除消息等功能。点击链接查看详情
http://sdk.acegames.cn/t3/241/4775/1500008916.html

14.全球版本扩展功能【选接】

包含设置账号绑定回调等接口。详情点击链接查看
http://sdk.acegames.cn/t3/241/4775/1500010378.html

15.谷歌游戏相关功能【选接】

包含谷歌游戏解锁成就、打开成就弹窗、打开排行榜弹窗、增加排行榜积分功能。详情点击链接查看
http://sdk.acegames.cn/t3/241/4775/1500010374.html

状态码表

1 SDK客户端状态码表

状态码 状态描述
0 初始化失败
1 初始化成功
0 登录错误,其他错误
1 登录成功
2 登录取消
0 注销失败
1 注销成功
0 支付失败
1 支付成功
2 支付取消
3 支付结果未知,支付流程结束,详细结果需要以SDK服务端通知游戏服务端结果为准
1 退出游戏成功
0 退出游戏取消
1 获取游戏内公告成功
0 获取游戏内公告失败