# PI base SDK集成文档_Android(v5.0.1)
# 1. 导入SDK资源
# 1.1 获取SDK
# 1.2 Android Studio集成(集成方式一)
# 1.2.1 添加SDK
a. 将aar文件拷贝到应用级app下的libs文件夹中
b. 打开应用级app下的build.gradle文件添加以下代码
//依赖aar需要添加下面代码
repositories {
flatDir {
dirs 'libs'
c. 在“dependencies”中添加下面的依赖, 'com.android.support:appcompat-v7:27.1.1'这个库是必须添加的
//添加云步zeus base sdk
implementation(name: 'zeus_base_api_v5.0.1', ext: 'aar')
//添加其他需要的依赖库,此依赖库必须添加,且不能低于此版本,如果有版本冲突的问题,请反馈我们
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
# 1.3 Eclipse集成(集成方式二)
# 1.3.1 添加SDK
a. 将"Eclipse/libs"文件夹下所有文件复制到工程的libs文件夹下
# 2. AndroidManifest.xml及其他配置
# 2.1 添加权限配置
a. 在AndroidManifest.xml文件中添加以下权限:
<!-- 需要的权限 start(直接复制即可) -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 需要的权限 end -->
# 2.2 配置Application(必须)
- Application必须配置,否则SDK无法正常工作。
a. 在AndroidManifest.xml文件中,把application节点的android:name属性设置为 com.zeus.core.api.base.ZeusApplication 。
<!-- 配置云步SDK的Application -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.zeus.core.api.base.ZeusApplication" >
</application>
b. 如果游戏需要配置自己的Application,则游戏的Application继承ZeusApplication,然后在AndroidManifest.xml文件中配置成游戏的Application即可:
<!-- 配置游戏的Application,游戏的Application继承ZeusApplication -->
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.zeus.core.demo.GameApplication" >
</application>
游戏的Application类需要覆写一下onCreate()方法:
public class GameApplication extends ZeusApplication {
@Override
public void onCreate() {
super.onCreate();
# 2.3 全面屏适配
a. 在AndroidManifest.xml文件中的application节点下配置meta-data:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="com.zeus.core.api.base.ZeusApplication" >
<!-- 全面屏适配(参考) -->
<meta-data
android:name="android.max_aspect"
android:value="2.2" />
</application>
# 2.4 如果开启了依赖包也迁移到androidx,配置关闭
修改项目根目录的gradle.properties文件:
android.enableJetifier=false
android.enableJetifier=false 表示依赖包不迁移到 androidx
# 2.5 适配Android 9.0 不支持HTTP明文传输数据的问题
方法1(推荐):
在AndroidManifest.xml文件下的application标签增加以下属性:android:usesCleartextTraffic="true"
<application
android:usesCleartextTraffic="true"
.... />
或者
方法2:
在AndroidManifest.xml文件下的application标签增加以下属性:android:networkSecurityConfig="@xml/network_security_config"
<application
android:networkSecurityConfig="@xml/network_security_config"
.... />
network_security_config.xml (opens new window) 文件放到res/xml目录下(可右键-->链接另存为下载network_security_config.xml)
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!--允许所有url使用http明文请求-->
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
# 2.6 Android SDK 版本要求
-
targetSdkVersion 设置为26或以上
-
minSdkVersion 建议设置为17
# 3. 接口调用
# 3.1 初始化相关接口
# 3.1.1 基础SDK初始化(必须)
-
初始化接口必须调用,否则SDK无法正常工作。
-
初始化SDK,必须在游戏启动Activity的onCreate()中调用该方法
ZeusPlatform.getInstance().init(Activity activity);
参数说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
activity | Activity | 必须 | 当前Activity对象 |
例示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 云步SDK初始化
ZeusPlatform.getInstance().init(this);
# 3.1.2 权限申请
- 如果游戏需要在启动时就动态申请权限,必须使用以下接口添加需要申请的权限,先判断是否需要申请权限,再在初始化接口调用前添加,SDK内部会统一在初始化时去申请权限
例示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 如果游戏需要在启动时就动态申请权限,可在初始化前调用此接口
// SDK会统一在调初始化时申请一次权限
// 权限的申请结果可通过调用初始化所在Activity的onRequestPermissionsResult知道,requestCode为ZeusCode.PERMISSION_REQUEST_CODE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//没有此权限
ZeusPlatform.getInstance().addPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
// 云步SDK初始化
ZeusPlatform.getInstance().init(this);
# 3.1.3 Activity生命周期函数接口(必须)
-
Activity生命周期接口必须调用,否则SDK无法正常工作。
-
以下生命周期接口为必接,在游戏主Activity(初始化SDK的Activity)的如下生命周期函数中,调用对应的方法。(重要!!!)
@Override
public void onStart() {
super.onStart();
ZeusPlatform.Lifecycle.onStart();
@Override
public void onRestart() {
super.onRestart();
ZeusPlatform.Lifecycle.onRestart();
@Override
public void onResume() {
super.onResume();
ZeusPlatform.Lifecycle.onResume();
@Override
public void onPause() {
super.onPause();
ZeusPlatform.Lifecycle.onPause();
@Override
public void onStop() {
super.onStop();
ZeusPlatform.Lifecycle.onStop();
@Override
public void onDestroy() {
super.onDestroy();
ZeusPlatform.Lifecycle.onDestroy();
@Override
public void onNewIntent(Intent newIntent) {
super.onNewIntent(newIntent);
ZeusPlatform.Lifecycle.onNewIntent(newIntent);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ZeusPlatform.Lifecycle.onActivityResult(requestCode, resultCode, data);
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
ZeusPlatform.Lifecycle.onConfigurationChanged(newConfig);
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
ZeusPlatform.Lifecycle.onRequestPermissionsResult(requestCode, permissions, grantResults);
# 3.2 退出游戏(必须)
-
退出弹窗接口必须调用,否则上线审核会被驳回。
-
当玩家点击手机上返回键或者游戏中 退出游戏 按钮时,调用此接口。
-
注意:当玩家触发退出游戏事件时,调用此接口,调用后会弹一个退出窗口给玩家选择是否退出游戏。
ZeusPlatform.getInstance().exitGame();
游戏退出监听:
ZeusPlatform.getInstance().exitGame(OnGameExitListener listener);
回调说明:
@Override
public void onGameExit() {
// 游戏退出弹窗中,玩家选择确定退出游戏时,会回调此方法
Log.d(TAG, "onGameExit");
# 3.3 支付相关接口
# 3.3.1 支付
ZeusPay.getInstance().pay(Activity activity, PayParams params, OnPayListener listener);
例示:
private void pay() {
PayParams params = new PayParams();
// 充值金额(默认单位:元)(必须)
params.setPrice(1);
// 金额单位,不设置默认为PayParams.UNIT.RMB_YUAN (可选)
params.setUnit(PayParams.UNIT.RMB_YUAN);
// 充值商品id,productId必须是数字(必须)
params.setProductId("1");
// 商品名称,比如:100元宝,不可包含特殊字符,只能包含中文、英文字母大小写、数字、下划线。(必须)
params.setProductName("100元宝");
// 商品描述,比如:充值100元宝,不可包含特殊字符,只能包含中文、英文字母大小写、数字、下划线。(必须)
params.setProductDesc("获得3000金币");
// 商品分类,如:破冰礼包(可选)
params.setProductCategory("break_ice");
// 透传参数,充值成功,回调通知游戏服务器的时候,会原封不动返回。(透传字段长度不超过64)(网游可选,单机不用传)
//params.setDeveloperPayload("developerPayload");
// 服务器发货模式的订单标识,订单ID要包含支付的信息,订单ID长度不能超过30个字符,订单号不可重复,必须唯一,且只能由英文字母大小写、数字和下划线组成,字母区分大小写(网游必须,单机不用传)
//params.setOrderId("test123");
ZeusPay.getInstance().pay(this, params, mOnPayListener);
PayParams说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
productId | String | 必须 | 充值商品id, productId必须是数字 |
productName | String | 必须 | 商品名称,比如:100元宝, 不可包含特殊字符,只能包含中文、英文字母大小写、数字、下划线。 |
productDesc | String | 必须 | 商品描述,比如:充值100元宝, 不可包含特殊字符,只能包含中文、英文字母大小写、数字、下划线。 |
productCategory | String | 可选 | 商品分类,用于统计 |
price | int | 必须 | 充值金额(默认单位:元) |
unit | PayParams.UNIT | 可选 | 充值金额的单位,PayParams.UNIT.RMB_YUAN:人民币元;PayParams.UNIT.RMB_FEN:人民币分;默认为PayParams.UNIT.RMB_YUAN |
orderId | String | 采用服务器发货模式必须传订单id | 订单id要包含支付的信息, 订单id长度不能超过30个字符,订单号不可重复,必须唯一,且只能由英文字母大小写、数字和下划线组成,字母区分大小写 |
developerPayload | String | 采用服务器发货模式可选 | 透传参数,充值成功,回调通知游戏服务器的时候,会原封不动返回。 (透传字段长度不超过64) |
商品分类:
礼包类型 | 类型 | 对应的值 |
---|---|---|
破冰类 | PayParams.ProductCategory.BREAK_ICE | break_ice |
存钱罐类 | PayParams.ProductCategory.BIGGY_BANK | biggy_bank |
技能类 | PayParams.ProductCategory.SKILLS | skills |
关卡内类 | PayParams.ProductCategory.IN_STAGE | in_stage |
连胜类 | PayParams.ProductCategory.CONTINUOUS_WIN | continuous_win |
去广告类 | PayParams.ProductCategory.NO_AD | no_ad |
限时类 | PayParams.ProductCategory.TIME_LIMIT | time_limit |
订阅类 | PayParams.ProductCategory.SUBSRIBE | subscribe |
商店道具类 | PayParams.ProductCategory.SHOP_PROPS | shop_props |
商店礼包类 | PayParams.ProductCategory.SHOP_PACK | shop_pack |
解锁类 | PayParams.ProductCategory.UNLOCK | unlock |
主页弹窗类 | PayParams.ProductCategory.HOME_POPUP | home_popup |
关卡弹窗类 | PayParams.ProductCategory.STAGE_POPUP | stage_popup |
回调说明:
- 接入时,未经过渠道打包,为了方便测试,每次调用默认返回支付成功。
@Override
public void onPaySuccess(PayOrderInfo payOrderInfo) {
Log.d(TAG, "onPaySuccess: " + payOrderInfo);
// 发货成功后,调用订单核销,此接口必须调用
ZeusPay.getInstance().reportOrderComplete(payOrderInfo, false);
@Override
public void onPayCancel() {
Log.d(TAG, "onPayCancel: ");
@Override
public void onPayFailed(int code, String msg) {
Log.e(TAG, "onPayFailed: code=" + code + ",msg=" + msg);
PayOrderInfo说明:
参数名称 | 参数类型 | 参数说明 |
---|---|---|
productId | String | 支付时传入的商品id |
productName | String | 支付时传入的商品名称 |
orderId | String | 支付时传入的订单id |
zeusOrderId | String | SDK内部生成的订单id |
developerPayload | String | 支付时传入的透传参数 |
# 3.3.2 订单核销接口
-
当游戏收到支付成功后或者补单成功后,且已经发货,调用此接口通知SDK核销订单
-
订单核销接口必须调用,否则有的渠道支付订单无法正常核销,导致重复发货!
// isReOrder表示是否补单,是补单传true,正常支付传false
ZeusPay.getInstance().reportOrderComplete(PayOrderInfo payOrderInfo,boolean isReOrder);
# 3.3.3 每次启动验证是否存在支付掉单
-
每次游戏启动时,在适当的时候,调用此接口验证是否存在支付后异常退出、网络原因导致未到账的订单.
-
在开始游戏进入到主游戏页面后调用,确保收到验证成功后可以正常发货.
-
注意:此接口不是在支付成功时调用,而是在用户进入游戏后调用.
-
服务器发货也需要调用,可以不处理此接口的回调
ZeusPay.getInstance().queryPayOrderInfo(OnQueryPayOrderListener listener);
回调说明:
@Override
public void onQuerySuccess(List<PayOrderInfo> list) {
//验证成功,根据PayOrderInfo中的商品id补发游戏道具
// 发货成功后,调用订单核销,此接口必须调用
ZeusPay.getInstance().reportOrderComplete(payOrderInfo, true);
@Override
public void onQueryFailed(int code, String msg) {
- 接入时,未经过渠道打包,为了方便测试,每次调用默认返回成功。
# 3.4 用户相关接口
# 3.4.1 登录接口(可选)
-
注意:网游必须接此接口,单机游戏可选接。
-
登录成功后会返回用户的唯一标识和用户昵称,网游根据信息登录游戏服务器。
ZeusUser.getInstance().login(Activity activity, OnLoginListener listener);
参数说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
activity | Activity | 必须 | 当前Activity对象 |
listener | OnLoginListener | 必须 | 登录回调listener |
回调函数:
@Override
public void onLoginSuccess(UserInfo userInfo) {
Log.d(TAG, "onLoginSuccess: " + userInfo);
@Override
public void onLoginFailed(int code, String msg) {
Log.e(TAG, "onLoginFailed: code=" + code + ",msg=" + msg);
UserInfo说明:
参数名称 | 参数类型 | 参数说明 |
---|---|---|
userId | String | 用户id |
userName | String | 用户昵称 |
token | String | Token |
dependableUserId | boolean | 判断用户id是否是可靠的,如果是以单机游戏上线,因为有的渠道不支持使用渠道的账号功能,或者玩家拒绝登录渠道的账号,则登录返回的是一个以设备标识生成的用户id,此id是不可靠的,为游客id;如果游戏用于资产相关绑定,可能存在风险,悉知!(网游忽略) |
# 3.4.2 账号绑定
# 3.4.2.1 判断是否支持渠道账号绑定的接口
- 单机游戏,当登录的是游客账号时,可以判断是否支持渠道账号绑定,如果支持,可以提供给玩家账号绑定的引导;
boolean b = ZeusUser.getInstance().isSupportBindAccount();
# 3.4.2.2 绑定渠道账号接口
-
单机游戏,当登录的是游客账号时,先判断是否支持绑定渠道账号,如果支持,可调此方法进行渠道账号绑定;
-
如果渠道账号登录成功,会返回新的用户信息,游戏自行处理账号绑定和游戏数据继承;
ZeusUser.getInstance().bindAccount(Activity activity, OnLoginListener listener);
参数说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
activity | Activity | 必须 | 当前Activity对象 |
listener | OnLoginListener | 必须 | 登录回调listener |
3.4.3 上传玩家信息(可选)
- 注意:网游必须接此接口,单机游戏不用接。
ZeusUser.getInstance().submitPlayerInfo(ExtraPlayerInfo playerInfo);
例示:
private void submitPlayerInfo(int type) {
ExtraPlayerInfo playerInfo = new ExtraPlayerInfo();
//在一下几个场景调用
//1.选择服务器:ExtraPlayerInfo.TYPE_SELECT_SERVER
//2.创建角色:ExtraPlayerInfo.TYPE_CREATE_ROLE
//3.进入游戏:ExtraPlayerInfo.TYPE_ENTER_GAME
//4.等级提升:ExtraPlayerInfo.TYPE_LEVEL_UP
//5.退出游戏:ExtraPlayerInfo.TYPE_EXIT_GAME
playerInfo.setType(type);
//当前角色身上拥有的游戏币数量
playerInfo.setCoinNum(100);
//单位是秒,此处是参考,请传真实的角色创建时间,并且每次传递的值固定,建议从游戏服务器获取真实的角色创建时间,不能传随机值或当前系统时间值
long roleCreateTime = System.currentTimeMillis() / 1000;
playerInfo.setRoleCreateTime(roleCreateTime);
//角色id
playerInfo.setRoleId("role_100");
//角色名称
playerInfo.setRoleName("test_112");
//角色等级
playerInfo.setRoleLevel("10");
//服务器id
playerInfo.setServerId("10");
//服务器名称
playerInfo.setServerName("server_10");
//VIP等级
playerInfo.setVip("vip1");
ZeusUser.getInstance().submitPlayerInfo(playerInfo);
调用场景:
- 需要在以下几种情况下调用:
- 选择服务器:ExtraPlayerInfo.TYPE_SELECT_SERVER
- 创建角色:ExtraPlayerInfo.TYPE_CREATE_ROLE
- 进入游戏:ExtraPlayerInfo.TYPE_ENTER_GAME
- 等级提升:ExtraPlayerInfo.TYPE_LEVEL_UP
- 退出游戏:ExtraPlayerInfo.TYPE_EXIT_GAME
选择服务器时,因为还没有进入游戏,无法知道角色数据,playerInfo只需要传入服务器信息即可
ExtraPlayerInfo说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
type | int | 必须 | 调用场景 |
serverId | String | 必须 | 玩家所在服务器的ID |
serverName | String | 必须 | 玩家所在服务器的名称 |
roleId | String | 必须 | 玩家角色ID |
roleName | String | 必须 | 玩家角色名称 |
roleLevel | String | 必须 | 玩家角色等级 |
coinNum | int | 必须 | 当前角色身上拥有的游戏币数量 |
roleCreateTime | long | 必须 | 角色创建时间,从1970年到现在的时间,单位:秒;必须传入真实的数据,否则UC审核不过 |
vip | String | 可选 | 玩家VIP等级 |
extraInfo | Map<String, Integer> | 可选 | 额外信息 |
# 3.4.4 打开游戏社区接口
- 跳转渠道应用商店的论坛接口,需要联系渠道人员开通权限,目前只有oppo、vivo支持
ZeusUser.getInstance().gameForum();
# 3.4.5 打开游戏互推界面接口
- 跳转渠道应用商店的互推界面,需要联系渠道人员开通权限,目前只有oppo支持
ZeusUser.getInstance().gameRecommend();
# 3.4.6 跳转休闲游戏专区接口
- 跳转渠道应用商店的超休闲专区接口,需要联系渠道人员开通权限,目前只有oppo支持
ZeusUser.getInstance().leisureGameSubject();
# 3.5 防沉迷与实名认证相关接口
-
非云步支付的渠道,需要在国家的 网络游戏防沉迷实名认证系统 (opens new window) 后台,进行渠道关系绑定
-
使用云步支付的渠道,需要“云步后台” --> “游戏防沉迷”中填写企业和游戏信息,企业和游戏信息在国家的 网络游戏防沉迷实名认证系统 (opens new window) 后台获取
# 3.5.1 判断当前渠道是否支持调起实名认证
-
不支持实名认证的渠道,由渠道SDK内部控制,无法知道用户是否实名
-
判断当前渠道是否支持调用实名认证弹窗,目前oppo、华为和使用云步支付的渠道支持,其他的渠道是渠道SDK自行处理
boolean isSupportRealName = ZeusRealNameCertification.getInstance().isSupportRealNameCertification();
# 3.5.2 判断当前用户是否实名
boolean isRealName = ZeusRealNameCertification.getInstance().isRealNameCertification();
# 3.5.3 调起实名认证弹窗
-
目前oppo、华为和使用云步支付的渠道支持调起实名认证弹窗,其他渠道是渠道SDK内部自行处理
-
一般不需要调用,SDK启动后,默认调用
ZeusRealNameCertification.getInstance().realNameCertification(OnRealNameCertificationListener listener);
例示:
ZeusRealNameCertification.getInstance().realNameCertification(new OnRealNameCertificationListener() {
@Override
public void onCertificationSuccess(int age) {
// 实名认证成功
Log.d(TAG, "onCertificationSuccess: " + age);
@Override
public void onCertificationFailed(int code) {
Log.d(TAG, "onCertificationFailed: " + code);
if(code == IZeusRealNameCertification.NOT_SUPPORT){
// 不支持主动调起实名认证
}else{
// 实名认证失败
# 3.5.4 关闭SDK内部默认在启动时调起实名认证弹窗
- 由于SDK内部会在启动后,默认调起实名认证弹窗,游戏可以关闭默认调起,然后根据游戏实际情况,在适当时机调用实名认证
ZeusRealNameCertification.getInstance().closeAutoShowRealNameCertification(true);
# 3.5.5 获取年龄
int age = ZeusRealNameCertification.getInstance().getAge();
-
如果已实名认证,则返回年龄,否则默认返回0
-
只在支持实名认证的渠道能获取到年龄
# 3.5.6 开启游戏时长和支付防沉迷限制
-
只能在支持实名认证的渠道生效,oppo、华为和云步支付的渠道,其他渠道是渠道SDK自行限制
-
可以选择调用此接口开启防沉迷的游戏时长和支付限制,不需要限制的可以不调用,游戏根据实际情况调用
// 传true,则开启限制,传false,则关闭限制
ZeusIndulgence.getInstance().openIndulgenceLimit(true);
# 3.6 兑换码相关接口
# 3.6.1 使用兑换码
- 使用兑换码兑换游戏道具
ZeusCdkey.getInstance().useCdKey("TestCode123", new OnUseCdKeyListener() {
@Override
public void onSuccess(String productId) {
resultView.setText("发货,兑换商品ID:" + productId);
@Override
public void onFailed(int code, String msg) {
Log.e(TAG, "Failed,code:" + code + " ,msg:" + msg);
增加透传参数:透传参数会在兑换码使用成功后回调给游戏服务器(有游戏服务器的可接)
ZeusCdkey.getInstance().useCdKey("TestCode123", "extra", new OnUseCdKeyListener() {
@Override
public void onSuccess(String productId) {
resultView.setText("发货,兑换商品ID:" + productId);
@Override
public void onFailed(int code, String msg) {
Log.e(TAG, "Failed,code:" + code + " ,msg:" + msg);
参数说明:
-
extra: 透传参数,会在兑换码使用成功后回调给游戏服务器
-
cdKey: 兑换码,开发阶段未经过打包可以使用 11111 , 22222 , 33333 , 44444 , 55555 进行调试,分别对应的发货商品ID为1,2,3,4,5 (注意:兑换码不要做字符限制,比如:长度,空格,下划线等)
-
callback: 结果回调,成功的则返回商品id(须跟运营一起协定),失败则返回失败原因。
回调说明:
-
onSuccess(String productId): 成功,返回商品ID
-
onFailed(int code, String msg): 失败
# 4. 其它
# 4.1 获取SDK版本号
int versionCode = ZeusPlatform.getInstance().getZeusSdkVersionCode();
# 4.2 获取SDK版本名
String versionName = ZeusPlatform.getInstance().getZeusSdkVersionName();
# 4.3 获取渠道号
-
获取当前渠道,用作友盟统计渠道标识等
-
注意:游戏自己集成友盟的话,友盟的渠道号标识必须通过此接口获取,然后初始化友盟的时候作为参数,否则渠道统计会不准确
String channel = ZeusPlatform.getInstance().getChannelName();
返回值:
- channel: 渠道号,如oppo、huawei等
# 4.4 是否测试环境
- SDK服务器区分测试环境和正式环境,为true时,表示连接的是SDK的测试服务器
boolean testMode = ZeusPlatform.getInstance().isTestEnv();
返回值:
- testMode: 返回true表示当前使用的是测试环境,false 正式环境
# 4.5 获取标准时间
- 获取世界标准时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 注意:此接口不要在Android主线程中调用
long time = ZeusPlatform.getInstance().getStandardTime();
返回值:
- time: 世界标准时间 (单位:毫秒)
# 4.6 获取自定义参数
- 获取开发者自定义参数,以字符串形式返回,此参数填写在打包工具中的自定义参数,打包后会把自定义参数打包到apk中。
String customParams = ZeusPlatform.getInstance().getCustomParam();
返回值:
- customParams: 开发者自定义参数
# 4.7 调起QQ聊天界面
- 跳转指定QQ的聊天界面
boolean b = ZeusPlatform.getInstance().skipQQChat(String number);
if (b) {
//调起成功
} else {
// 未安装手Q或安装的版本不支持
参数说明:
- number: QQ号码
# 4.8 调起添加QQ群界面
- 跳转添加指定QQ群的界面
boolean b = ZeusPlatform.getInstance().joinQQGroup(String key);
if (b) {
//调起成功
} else {
// 未安装手Q或安装的版本不支持
参数说明:
- key: QQ群的key,在腾讯qq群管理后台生成: http://qun.qq.com/join.html (opens new window)
# 4.9 调起手机拨号盘
- 调起手机拨号界面
ZeusPlatform.getInstance().callPhone(String phoneNumber);
参数说明:
- phoneNumber: 电话号码
# 4.10 调起微信
- 复制内容,并跳转微信
ZeusPlatform.getInstance().skipWeiChat(String text);
参数说明:
- text: 复制到粘贴板的内容
# 4.11 敏感词屏蔽
- 游戏中,涉及填写昵称、聊天、公会命名等,可以输入字符串的地方,需要调用此接口,验证是否包含敏感内容,如果包含,则会用*符号屏蔽敏感内容;
ZeusPlatform.getInstance().sensitiveWordsCheck(content, ContentType.CHAT, new OnSensitiveWordsCheckListener() {
@Override
public void onSuccess(String content) {
//验证通过,返回屏蔽敏感内容后的字符串
@Override
public void onFailed(int code, String msg) {
//验证不通过,不能使用此内容,可提示用户内容违规
参数说明:
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
content | String | 必须 | 需验证的字符串内容 |
contentType | ContentType | 必须 | 内容类型,聊天传ContentType.CHAT,玩家昵称、公会名字传ContentType.NICKNAME,其他的传ContentType.OTHER |
listener | OnSensitiveWordsCheckListener | 必须 | 验证的结果回调 |
回调说明:
回调方法 | 回调说明 |
---|---|
void onSuccess(String content) | 验证通过,返回屏蔽敏感内容后的字符串 |
void onFailed(int code, String msg) | 验证失败,code为状态码,msg为失败的原因描述 |
# 5. 注意事项
# 5.1 代码混淆
- 如果您的游戏使用了混淆,请添加
-dontwarn com.zeus.**
-keep class com.zeus.**{ *; }
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service
-dontwarn android.**
-keep class android.** { *; }
-dontwarn com.android.**
-keep class com.android.** { *; }
打包工具使用手册
PI ads SDK集成文档_Android(v5.0.0)