Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zw_game_sdk
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
CI / CD
CI / CD
流水线
日程表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
提交
问题看板
Open sidebar
zwwl
zw_game_sdk
Commits
f2c1b867
提交
f2c1b867
authored
5月 29, 2026
作者:
刘添
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新 接入文档.md
上级
dc9ce066
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
531 行增加
和
244 行删除
+531
-244
接入文档.md
聚合SDK/接入文档.md
+531
-244
没有找到文件。
聚合SDK/接入文档.md
浏览文件 @
f2c1b867
# Game Center SDK 接入说明V1.0.0.0
# Game Center SDK 接入说明
# Game Center SDK 接入说明V1.0.0.0
# Game Center SDK 接入说明
本文档面向
**准备接入本聚合 SDK 的 Android 客户端开发人员**
,说明
如何在工程中引入依赖、配置渠道、调用
**`ZySdk`**
(初始化、登录、角色上报、支付、
**退出引导**
等),以及回调处理要点
。
本文档面向
**准备接入本聚合 SDK 的 Android 客户端开发人员**
,说明
当前 SDK 的对外接口、传参字段和回调方法
。
## 目录
## 目录
...
@@ -11,17 +11,19 @@
...
@@ -11,17 +11,19 @@
-
[
二、快速接入
](
#quickstart
)
-
[
二、快速接入
](
#quickstart
)
-
[
1. 添加 Maven 仓库
](
#quickstart-maven
)
-
[
1. 添加 Maven 仓库
](
#quickstart-maven
)
-
[
2. 添加 Gradle 依赖
](
#quickstart-deps
)
-
[
2. 添加 Gradle 依赖
](
#quickstart-deps
)
-
[
3. SDK 初始化
](
#quickstart-init
)
-
[
3. 接入要求
](
#quickstart-resources
)
-
[
4. SDK 登录
](
#quickstart-login
)
-
[
4. SDK 初始化
](
#quickstart-init
)
-
[
5. 角色信息上报
](
#quickstart-role
)
-
[
5. SDK 登录
](
#quickstart-login
)
-
[
6. SDK 支付
](
#quickstart-pay
)
-
[
6. 角色信息上报
](
#quickstart-role
)
-
[
7. 退出引导
](
#quickstart-exit
)
-
[
7. 行为上报
](
#quickstart-behavior
)
-
[
8. 检查升级
](
#quickstart-update
)
-
[
8. SDK 支付
](
#quickstart-pay
)
-
[
9. 显示/隐藏浮窗
](
#quickstart-float
)
-
[
9. 激励广告
](
#quickstart-ad
)
-
[
三、其他方法
](
#others
)
-
[
10. 退出引导
](
#quickstart-exit
)
-
[
1. 设置 SDK 全局事件回调监听器
](
#others-listener
)
-
[
11. 检查升级
](
#quickstart-update
)
-
[
2. 获取玩家是否已经同意过 SDK 隐私政策
](
#others-privacy
)
-
[
12. 显示/隐藏浮窗
](
#quickstart-float
)
-
[
四、示例代码位置
](
#samples
)
-
[
13. 对外回调接口
](
#quickstart-listener
)
-
[
14. Unity 接入
](
#quickstart-unity
)
-
[
三、示例代码位置
](
#samples
)
---
---
...
@@ -34,30 +36,40 @@
...
@@ -34,30 +36,40 @@
*
SDK初始化
*
SDK初始化
*
SDK登录
*
SDK登录
*
SDK角色信息上报
*
SDK角色信息上报
*
SDK行为上报
*
SDK支付
*
SDK支付
*
SDK
订单上报
*
SDK
激励广告
*
SDK退出引导
*
SDK退出引导
*
Unity 统一反射接入
---
---
<a
name=
"overview-changelog"
></a>
<a
name=
"overview-changelog"
></a>
### 2. 更新内容
### 2. 更新内容
*
无
*
版本更新至
`1.1.1.2`
*
新增
`sdkBehaviorReport(...)`
*
新增
`showAd(activity, sceneId, callback)`
*
新增
`ZyAdCallback`
广告单次事件回调
*
新增
`ISdkEventListener`
广告相关全局回调
*
新增
`ZyUnitySupport`
统一 Unity 反射入口
*
新增
`ZyUnitySupport.setSdkEventListener(...)`
*
新增
`ZyUnitySupport.clearSdkEventListener()`
*
悬浮球优化状态栏、导航栏、刘海区域避让,避免被系统栏遮挡
*
新增广告上报埋点
---
---
<a
name=
"overview-prereq"
></a>
<a
name=
"overview-prereq"
></a>
### 3. 接入准备
### 3. 接入准备
正式接入前请务必阅读掌玩SDK接入流程的介绍
,并且在掌玩SDK平台获取game_id与game_secret,此参数将由掌玩游戏对接技术或产品对接,对接时由平台方提供app_id、app_status、app_name、game_id、PackName、游戏appName等字段信息,请严格阅读对接时平台对接人员提供参数文档
正式接入前请务必阅读掌玩SDK接入流程的介绍
。对接时由平台方提供当前 SDK 所需参数,请严格以平台对接人员提供的参数文档为准。
| 名称 | 说明 |
| 名称 | 说明 |
|-------------|-----------------|
|-------------|---------------------------|
| game_secret | 平台方提供,游戏签名秘钥。 |
| zyou_app_secret | 游戏在平台的唯一标识(原 game_id 加密)。 |
| app_id | 游戏在平台/渠道侧的应用标识。 |
| app_status | 用户在平台登录的投放媒体标识。 |
| app_status | 用户在平台登录的投放媒体标识。 |
| app_name | 游戏在三方平台标识。 |
| PackName | 游戏在用户设备安装唯一标识 |
---
---
...
@@ -72,40 +84,75 @@
...
@@ -72,40 +84,75 @@
在
**`settings.gradle.kts`**
(Kotlin项目)或
**`settings.gradle`**
(Java项目)中添加如下代码:
在
**`settings.gradle.kts`**
(Kotlin项目)或
**`settings.gradle`**
(Java项目)中添加如下代码:
```
kotlin
```
kotlin
pluginManagement
{
repositories
{
google
()
mavenCentral
()
gradlePluginPortal
()
maven
(
"https://developer.huawei.com/repo/"
)
}
}
dependencyResolutionManagement
{
dependencyResolutionManagement
{
repositoriesMode
.
set
(
RepositoriesMode
.
FAIL_ON_PROJECT_REPOS
)
repositories
{
repositories
{
google
()
mavenCentral
()
maven
(
"https://jitpack.io"
)
maven
(
"https://developer.huawei.com/repo/"
)
// sdk仓库
maven
{
maven
{
url
=
uri
(
"http://nexus.zwwlkj01.top/repository/android-advertisement"
)
url
=
uri
(
"http://nexus.zwwlkj01.top/repository/android-advertisement"
)
isAllowInsecureProtocol
=
true
isAllowInsecureProtocol
=
true
credentials
{
credentials
{
username
=
""
username
=
"
admin
"
password
=
""
password
=
"
zwwl2021
"
}
}
}
}
// 巨量媒体
maven
{
maven
{
url
=
uri
(
"https://artifact.bytedance.com/repository/Volcengine/"
)
url
=
uri
(
"http://nexus.zwwlkj01.top/repository/TencentAdq"
)
isAllowInsecureProtocol
=
true
credentials
{
username
=
"admin"
password
=
"zwwl2021"
}
}
}
// 建议保留
maven
{
google
()
url
=
uri
(
"http://nexus.zwwlkj01.top/repository/AdGameSdk"
)
mavenCentral
()
isAllowInsecureProtocol
=
true
credentials
{
username
=
"admin"
password
=
"zwwl2021"
}
}
// 打华为包时保留
maven
{
maven
{
url
=
uri
(
"https://developer.huawei.com/repo/"
)
url
=
uri
(
"https://repos.xiaomi.com/maven"
)
credentials
{
username
=
"mi-gamesdk"
password
=
"AKCp8mYeLuhuaGj6bK1XK7t2w4CsPuGwg6GpQdZ9cat7K59y5sD7Tx3dHjJcFrBGj3TQ4vi7g"
}
}
}
maven
(
"https://artifact.bytedance.com/repository/Volcengine/"
)
maven
(
"https://jfrog.takuad.com/artifactory/china_sdk"
)
}
}
}
}
```
```
>
同时建议保留 **Google / Maven Central** 等,以便传递依赖解析
。
>
以上为当前 SDK 工程使用的主要仓库;若只接广告能力,也请至少保留上面的广告相关仓库与公司私服配置
。
>
>
>若打 **华为** 包,则需加入华为maven库,以便下载华为插件。
> 若打 **华为** 包,则需加入华为 Maven 库,以便下载华为插件。
同时请在工程根目录
**`gradle.properties`**
中确认已开启:
```
properties
android.useAndroidX
=
true
android.enableJetifier
=
true
```
---
---
...
@@ -115,14 +162,14 @@ dependencyResolutionManagement {
...
@@ -115,14 +162,14 @@ dependencyResolutionManagement {
在
**app 模块**
`build.gradle.kts`
或
`build.gradle`
的
`dependencies`
中增加:
在
**app 模块**
`build.gradle.kts`
或
`build.gradle`
的
`dependencies`
中增加:
```
kotlin
```
kotlin
implementation
(
"com.zw.game.center:gameCenter:
1.0.0.0
"
)
implementation
(
"com.zw.game.center:gameCenter:
版本号
"
)
```
```
> 版本号
`1.0.0.0` 请以后续交付为准;升级 SDK 时同步修改此处
。
> 版本号
请以后续交付为准
。
#### 华为渠道(可选)
#### 华为渠道(可选)
若打
**华为**
包体并需 HMS/AGC 能力,可参考下面代码添加
`com.huawei.agconnect`
插件
并按
**华为应用联运 / 游戏服务**
文档配置
`agconnect-services.json`
等。
若打
**华为**
包体并需 HMS/AGC 能力,可参考下面代码添加
`com.huawei.agconnect`
插件
,并按
**华为应用联运 / 游戏服务**
文档配置
`agconnect-services.json`
等。
工程级
**`build.gradle.kts`**
中,加入
工程级
**`build.gradle.kts`**
中,加入
```
kotlin
```
kotlin
...
@@ -134,135 +181,152 @@ buildscript {
...
@@ -134,135 +181,152 @@ buildscript {
}
}
```
```
app
模块下添加agc
插件
app
模块下添加 agc
插件
```
kotlin
```
kotlin
plugins
{
plugins
{
id
(
"com.huawei.agconnect"
)
id
(
"com.huawei.agconnect"
)
}
}
```
```
>非华为包可不启用。
> 非华为包可不启用。
---
<a
name=
"quickstart-resources"
></a>
### 3. 接入要求
当前 SDK 接入时,宿主只需要关注以下要求:
-
所有正式 API 调用都要传入当前前台
`Activity`
-
`sdkInit()`
必须在用户同意隐私协议后调用
-
当前 SDK 不要求宿主额外做资源代理
-
登录、支付、广告、退出等能力统一通过
`ZySdk`
调用
若宿主应用的
**`AndroidManifest.xml`**
中已显式声明
`android:allowBackup`
,Manifest 合并时如与 SDK 配置冲突,可在宿主
`application`
节点补充:
```
xml
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
>
<application
android:allowBackup=
"true"
tools:replace=
"android:allowBackup"
...
>
</application>
</manifest>
```
---
---
<a
name=
"quickstart-init"
></a>
<a
name=
"quickstart-init"
></a>
###
3
. SDK初始化
###
4
. SDK初始化
在
Activity进行初始化,且只初始化一次。
在
Activity 进行初始化,且只初始化一次。
**必须在用户同意隐私协议后调用。**
```
kotlin
```
kotlin
ZySdk
.
sdkInit
(
activity
,
true
,
object
:
ZySdkCallback
{
ZySdk
.
sdkInit
(
activity
=
this
,
showLoginBackgroundImage
=
false
,
callback
=
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
// 初始化结果:成功/失败信息与错误码等
Log
.
i
(
TAG
,
"init result=$result"
)
val
obj
=
JSONObject
(
result
)
val
success
=
obj
.
optBoolean
(
"success"
)
if
(
success
)
{
val
channelCode
=
obj
.
optString
(
"channelCode"
)
Log
.
i
(
TAG
,
"init 成功,当前渠道:$channelCode"
)
}
else
{
val
errorMsg
=
obj
.
optString
(
"errorMsg"
)
val
errorCode
=
obj
.
optInt
(
"errorCode"
)
Log
.
w
(
TAG
,
"init 失败 errorMsg=${errorMsg} errorCode=${errorCode}"
)
}
}
}
}
}
)
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------
----------------:|:-------------:|:----------
----------------------:|
|:----------
:|:--------:|:
----------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`showLoginBackgroundImage`
|
Boolean | 为 true 时,登录等界面会套用在 SDK 中配置的
登录背景图 |
|
`showLoginBackgroundImage`
|
Boolean | 是否展示 SDK
登录背景图 |
|
`callback`
| ZySdkCallback | 初始化结果回调(JsonObject字符串)
|
|
`result`
| String | 初始化结果回调(JsonObject字符串)
|
**回参**
**
通用
回参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:-----------
--:|:-------:|:----------------------------
--------:|
|:-----------
:|:-------:|:
--------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`errorMsg`
| String | 失败时的提示文案
|
|
`msg`
| String | 返回说明
|
|
`errorCode`
| Int | 错误码 |
|
`errorCode`
| Int | 错误码 |
|
`msg`
| String | 提示文案
|
|
`channelCode`
| String | 当前渠道编码
|
|
`
channelCode`
| String | 渠道编码(oppo、vivo、xiaomi、huawei、honor等)
|
|
`
ext`
| JsonObject | 扩展字段
|
**华为渠道错误码如下:**
**华为渠道错误码如下:**
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:---------:|:-------------:|:------------------------------------------:|
|:---------:|:-------------:|:------------------------------------------:|
| 7401 | 用户未同意华为联运隐私协议 | 禁止玩家进入游戏 |
| 7401 | 用户未同意华为联运隐私协议 | 禁止玩家进入游戏 |
|
7002 | 网络异常 | 可提示玩家检查网络,请不要重复调用init
接口,否则断网情况下可能会造成手机高耗电。 |
|
7002 | 网络异常 | 可提示玩家检查网络,请不要重复调用 init
接口,否则断网情况下可能会造成手机高耗电。 |
| 907135003 |
| 907135003表示玩家取消HMS Core升级或组件升级
|
| 907135003 |
组件升级取消 | 玩家取消 HMS Core 升级或组件升级
|
| -1 | 防沉迷提示:游戏时间已结束 | 可在此处实现游戏防沉迷功能 |
| -1 | 防沉迷提示:游戏时间已结束 | 可在此处实现游戏防沉迷功能 |
---
---
<a
name=
"quickstart-login"
></a>
<a
name=
"quickstart-login"
></a>
###
4
. SDK登录
###
5
. SDK登录
用于拉起渠道账号体系或聚合登录流程,成功返回参数请传给游戏服完成鉴权与建号。
用于拉起渠道账号体系或聚合登录流程,成功返回参数请传给游戏服完成鉴权与建号。
```
kotlin
```
kotlin
ZySdk
.
sdkLogin
(
activity
,
object
:
ZySdkCallback
{
ZySdk
.
sdkLogin
(
this
,
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
// id、token等
Log
.
i
(
TAG
,
"login result=$result"
)
val
obj
=
JSONObject
(
result
)
val
success
=
obj
.
optBoolean
(
"success"
)
if
(
success
)
{
//val member_id = obj.optString("member_id")
Log
.
i
(
TAG
,
"成功"
)
}
else
{
val
errorMsg
=
obj
.
optString
(
"errorMsg"
)
val
errorCode
=
obj
.
optInt
(
"errorCode"
)
Log
.
w
(
TAG
,
"init 失败 errorMsg=${errorMsg} errorCode=${errorCode}"
)
}
}
}
}
}
)
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:---------------------:|
|:----------:|:--------:|:---------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`
callback`
| ZySdkCallback
| 登录结果回调(JsonObject字符串) |
|
`
result`
| String
| 登录结果回调(JsonObject字符串) |
**回参**
**
通用
回参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|-----------------------------------|:----------:|:----------------------:|
|-----------------------------------|:----------:|:----------------------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`errorMsg`
| String | 失败时的提示文案 |
|
`errorCode`
| Int | 错误码 |
|
`msg`
| String | 状态信息 |
|
`msg`
| String | 状态信息 |
|
`data`
| JsonObject | 数据 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
|
`ext`
| JsonObject | 扩展字段 |
|
`data`
| JsonObject | 登录数据,各渠道字段可能不同 |
|
  
`member_id`
| String | 用户Id |
|
  
`member_id`
| String | 用户Id |
|
  
`player_id`
| String | 玩家Id |
|
  
`player_id`
| String | 玩家Id |
|
  
`username`
| String | 用户名 |
|
  
`username`
| String | 用户名 |
|
  
`user_token`
| String | token(#后为游戏ID)
|
|
  
`user_token`
| String | token(
`#`
后为游戏ID)
|
|
  
`avatar`
| String | 头像 |
|
  
`avatar`
| String | 头像 |
|
  
`mobile`
| String | 手机号 |
|
  
`mobile`
| String | 手机号 |
|
  
`has_identify`
| boolean | 是否实名 |
|
  
`has_identify`
| boolean | 是否实名 |
|
  
`need_identification`
|
int | 1强制实名,2需要实名但不强制,3
不需要实名 |
|
  
`need_identification`
|
int |
`1`
强制实名,
`2`
需要实名但不强制,
`3`
不需要实名 |
|
  
`has_mobile`
| boolean | 是否绑定手机号 |
|
  
`has_mobile`
| boolean | 是否绑定手机号 |
|
  
`sdk_open_id`
| String | 抖音sdk_open_id
|
|
  
`sdk_open_id`
| String | 抖音
`sdk_open_id`
|
**OPPO错误码如下:**
**OPPO
错误码如下:**
登录错误码
登录错误码
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:--------:|:--------:|:------------------------------------------:|
|:--------:|:--------:|:------------------------------------------:|
|
1004 | 登录失败 | 登录环节, 触发OPPO账号登录流程被用户取消.建议根据用户交互,再次调用登录接口.
|
|
1004 | 登录失败 | 登录环节触发 OPPO 账号登录流程被用户取消,建议根据用户交互再次调用登录接口。
|
|
1010 | 登录失败 | 联运账号登录流程异常建议提示用户重新登录或尝试重启游戏.
|
|
1010 | 登录失败 | 联运账号登录流程异常,建议提示用户重新登录或尝试重启游戏。
|
| 3000xxxx |
登录失败 | 游戏联运服务繁忙. 建议提示用户稍后重试
|
| 3000xxxx |
登录失败 | 游戏联运服务繁忙,建议提示用户稍后重试。
|
| -1 | SDK 未初始化 | SDK 未初始化 |
| -1 | SDK 未初始化 | SDK 未初始化 |
获取用户信息错误码
获取用户信息错误码
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:----:|:--------:|:---------------------:|
|:----:|:--------:|:---------------------:|
| 1010 |
用户还未登录 | 确认在 doLogin成功后再调用该接口.
|
| 1010 |
用户还未登录 | 确认在登录成功后再调用该接口。
|
| -1 | 解析登录信息失败 | 解析登录信息失败 |
| -1 | 解析登录信息失败 | 解析登录信息失败 |
| -1 | SDK 未初始化 | SDK 未初始化 |
| -1 | SDK 未初始化 | SDK 未初始化 |
...
@@ -282,52 +346,50 @@ ZySdk.sdkLogin(activity, object : ZySdkCallback {
...
@@ -282,52 +346,50 @@ ZySdk.sdkLogin(activity, object : ZySdkCallback {
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:----:|:---------:|:----------:|
|:----:|:---------:|:----------:|
| 7400 | 用户未签署联运协议 | 继续调用
init
接口 |
| 7400 | 用户未签署联运协议 | 继续调用
init
接口 |
| 7018 |
初始化失败 | 继续调用init
接口 |
| 7018 |
初始化失败 | 继续调用 init
接口 |
| -1 | SDK 未初始化 | SDK 未初始化 |
| -1 | SDK 未初始化 | SDK 未初始化 |
> 华为登录阶段已补兜底 `msg`,失败时不再只有裸 `errorCode`。
---
---
<a
name=
"quickstart-role"
></a>
<a
name=
"quickstart-role"
></a>
###
5
. 角色信息上报
###
6
. 角色信息上报
在登录成功、切换角色等操作后需进行角色信息上报。
在登录成功、切换角色等操作后需进行角色信息上报。
```
kotlin
```
kotlin
ZySdk
.
sdkReportRole
(
activity
,
roleJson
,
object
:
ZySdkCallback
{
ZySdk
.
sdkReportRole
(
activity
=
this
,
roleJson
=
roleJson
,
callback
=
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
val
obj
=
JSONObject
(
result
)
Log
.
i
(
TAG
,
"role result=$result"
)
val
success
=
obj
.
optBoolean
(
"success"
)
if
(
success
)
{
Log
.
i
(
TAG
,
"成功"
)
}
else
{
val
errorMsg
=
obj
.
optString
(
"errorMsg"
)
val
errorCode
=
obj
.
optInt
(
"errorCode"
)
Log
.
w
(
TAG
,
"init 失败 errorMsg=${errorMsg} errorCode=${errorCode}"
)
}
}
}
}
}
)
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:-------------------:|
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`roleJson`
|
String | 角色信息Json字符串
|
|
`roleJson`
|
String | 角色信息 Json 字符串
|
|
`
callback`
| ZySdkCallback
| 结果回调(JsonObject字符串) |
|
`
result`
| String
| 结果回调(JsonObject字符串) |
**roleJson参数如下:**
**roleJson
参数如下:**
| 字段名 | 类型 | 是否必填 | 字段说明 |
| 字段名 | 类型 | 是否必填 | 字段说明 |
|-----------------|:-------------------:|:----:|:-----------------------------------------------------------------------------------:|
|-----------------|:-------------------:|:----:|:-----------------------------------------------------------------------------------:|
|
`event`
| String | 是 | 事件类型,online: 角色登录, create: 创建角色,level_up: 提升等级,offline: 角色退出,other: 其他,delete: 删除角色
|
|
`event`
| String | 是 | 事件类型,
`online/create/level_up/offline/other/delete`
|
|
`server_id`
| String | 是 | 服务器 ID |
|
`server_id`
| String | 是 | 服务器 ID |
|
`server_name`
| String | 是 | 服务器名称 |
|
`server_name`
| String | 是 | 服务器名称 |
|
`cp_role_id`
| String | 是 | 角色 id |
|
`cp_role_id`
| String | 是 | 角色 id |
|
`role_name`
| String | 是 | 角色昵称 |
|
`role_name`
| String | 是 | 角色昵称 |
|
`role_level`
| int | 是 | 角色等级 |
|
`role_level`
| int | 是 | 角色等级 |
|
`role_vip`
| int | 是 | 角色VIP等级
|
|
`role_vip`
| int | 是 | 角色 VIP 等级
|
|
`combat_num`
| String | 否 | 角色战力 |
|
`combat_num`
| String | 否 | 角色战力 |
|
`online_time`
| String | 否 | 本次在线时长 |
|
`online_time`
| String | 否 | 本次在线时长 |
|
`attack`
| String | 否 | 攻击力 |
|
`attack`
| String | 否 | 攻击力 |
...
@@ -337,105 +399,150 @@ ZySdk.sdkReportRole(activity, roleJson, object : ZySdkCallback {
...
@@ -337,105 +399,150 @@ ZySdk.sdkReportRole(activity, roleJson, object : ZySdkCallback {
|
`sponsor_level`
| String | 否 | 赞助等级/会员等级 |
|
`sponsor_level`
| String | 否 | 赞助等级/会员等级 |
|
`reiki_num`
| String | 否 | 灵符值 默认0 |
|
`reiki_num`
| String | 否 | 灵符值 默认0 |
|
`chapter_index`
| String | 否 | 关卡章节 |
|
`chapter_index`
| String | 否 | 关卡章节 |
|
`ext`
| Map
<String
,
Number
>
| 否 | 扩展字段,字段个数不超过 10 个,名称长度不超过 18 个字节,字段值必须是数字类型 |
|
`playerId`
| String | 否 | 华为玩家
`playerId`
|
**回参**
**回参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:-----------:|:-------:|:--------:|
|:-----------:|:-------:|:--------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`
errorMsg`
| String | 失败时的提示文案
|
|
`
msg`
| String | 返回说明
|
|
`errorCode`
| Int | 错误码 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
**错误码如下:**
**错误码如下:**
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:----:|:-----------:|:-----------------------------:|
|:----:|:-----------:|:-----------------------------:|
| 1010 |
您还未登入 | 校验账号未登录,确认在 doLogin成功后再调用该接口.
|
| 1010 |
您还未登入 | 校验账号未登录,确认在登录成功后再调用该接口。
|
| 1010 | 账号已过期,请重新登录 |
账号校验失败,请确保登录成功后尽快上传游戏角色信息.
|
| 1010 | 账号已过期,请重新登录 |
账号校验失败,请确保登录成功后尽快上传游戏角色信息。
|
| 1010 | 参数不合规范,上传失败 |
传参有缺失, 按照接口定义文档定义,修改接口传参.
|
| 1010 | 参数不合规范,上传失败 |
传参有缺失,按接口定义文档修改接口传参。
|
| 1010 |
参数异常 | 调用接口时未传入参数,按照接口定义文档定义,修改接口传参.
|
| 1010 |
参数异常 | 调用接口时未传入参数,按接口定义文档修改接口传参。
|
| -1 | SDK 未初始化 | SDK 未初始化 |
| -1 | SDK 未初始化 | SDK 未初始化 |
---
---
<a
name=
"quickstart-behavior"
></a>
### 7. 行为上报
`sdkBehaviorReport(...)`
用于角色行为埋点或道具行为上报。
```
kotlin
ZySdk
.
sdkBehaviorReport
(
activity
=
this
,
behaviorJson
=
behaviorJson
,
callback
=
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
Log
.
i
(
TAG
,
"behavior result=$result"
)
}
}
)
```
**入参**
| 字段 | 类型 | 含义 |
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`behaviorJson`
| String | 行为上报 Json 字符串 |
|
`result`
| String | 结果回调(JsonObject字符串) |
**behaviorJson 常用参数如下:**
| 字段名 | 类型 | 是否必填 | 字段说明 |
|-----------------|:-------------------:|:----:|:------------------------------------------:|
|
`event`
| String | 是 | 行为事件类型,例如
`item_cost`
、
`item_gain`
|
|
`cp_role_id`
| String | 是 | 游戏角色 ID |
|
`role_name`
| String | 否 | 角色名 |
|
`querys`
| JSONArray | 否 | 行为扩展字段数组 |
**回参**
| 字段 | 类型 | 含义 |
|:-----------:|:-------:|:--------:|
|
`success`
| Boolean | 是否成功 |
|
`msg`
| String | 返回说明 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
---
<a
name=
"quickstart-pay"
></a>
<a
name=
"quickstart-pay"
></a>
###
6
. SDK支付
###
8
. SDK支付
```
kotlin
```
kotlin
ZySdk
.
sdkPay
(
activity
,
payJson
,
object
:
ZySdkCallback
{
ZySdk
.
sdkPay
(
activity
=
this
,
payJson
=
payJson
,
isSingle
=
false
,
callback
=
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
// 购买数据、签名等
Log
.
i
(
TAG
,
"pay result=$result"
)
val
obj
=
JSONObject
(
result
)
val
success
=
obj
.
optBoolean
(
"success"
)
if
(
success
)
{
//val purchaseData = obj.optString("purchaseData")
//val purchaseDataSignature = obj.optString("purchaseDataSignature")
Log
.
i
(
TAG
,
"成功"
)
}
else
{
val
errorMsg
=
obj
.
optString
(
"errorMsg"
)
val
errorCode
=
obj
.
optInt
(
"errorCode"
)
Log
.
w
(
TAG
,
"init 失败 errorMsg=${errorMsg} errorCode=${errorCode}"
)
}
}
}
}
}
)
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:-------------------:|
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`payJson`
| String | 支付信息Json字符串 |
|
`payJson`
| String | 支付信息 Json 字符串 |
|
`callback`
| ZySdkCallback | 结果回调(JsonObject字符串) |
|
`isSingle`
| Boolean | 是否单机支付,仅 OPPO 支持 |
|
`result`
| String | 结果回调(JsonObject字符串) |
**payJson参数如下:**
**payJson
参数如下:**
| 字段名 | 类型 | 是否必填 | 字段说明 |
| 字段名 | 类型 | 是否必填 | 字段说明 |
|-----------------------------|:------:|:----:|:-----------------------
-------------------
:|
|-----------------------------|:------:|:----:|:-----------------------:|
|
`order`
| String | 是 | 订单信息Json
|
|
`order`
| String | 是 | 订单信息 Json
|
|
  
`cp_order_id`
| String | 是 | 游戏订单号,务必保证唯一 |
|
  
`cp_order_id`
| String | 是 | 游戏订单号,务必保证唯一 |
|
  
`amount`
| int | 是 | 消费总金额,单位为分(1元->100) |
|
  
`amount`
| int | 是 | 消费总金额,单位为分(1元->100) |
|
  
`product_price`
| int | 是 | 商品价格(单价,单位:分) |
|
  
`product_price`
| int | 是 | 商品价格(单价,单位:分) |
|
  
`product_id`
| String | 是 | 商品Id |
|
  
`product_id`
| String | 是 | 商品Id |
|
  
`product_cnt`
| int | 是 | 商品数量 |
|
  
`product_cnt`
| int | 是 | 商品数量 |
|
  
`product_name`
| String | 是 | 商品名(不能含有+号等特殊符号)
|
|
  
`product_name`
| String | 是 | 商品名(不能含有
`+`
号等特殊符号)
|
|
  
`product_desc`
| String | 是 | 商品描述(不能含有+号等特殊符号)
|
|
  
`product_desc`
| String | 是 | 商品描述(不能含有
`+`
号等特殊符号)
|
|
  
`ext`
| String | 否 | 订单额外信息用(json) |
|
  
`ext`
| String | 否 | 订单额外信息用(json) |
|
`role`
| String | 是 | 角色信息Json
|
|
`role`
| String | 是 | 角色信息 Json
|
|
  
`event`
| String | 是 | 支付事件类型 |
|
  
`event`
| String | 是 | 支付事件类型 |
|
  
`server_id`
| String | 是 | 服务器 ID |
|
  
`server_id`
| String | 是 | 服务器 ID |
|
  
`server_name`
| String | 是 | 服务器名称 |
|
  
`server_name`
| String | 是 | 服务器名称 |
|
  
`cp_role_id`
| String | 是 | 角色 id |
|
  
`cp_role_id`
| String | 是 | 角色 id |
|
  
`role_name`
| String | 是 | 角色昵称 |
|
  
`role_name`
| String | 是 | 角色昵称 |
|
  
`role_level`
| String | 是 | 角色等级 |
|
  
`role_level`
| String | 是 | 角色等级 |
|
  
`role_vip`
| String | 是 | 角色VIP等级
|
|
  
`role_vip`
| String | 是 | 角色 VIP 等级
|
|
`role_id`
| String | 是 | 角色 id |
|
`role_id`
| String | 是 | 角色 id |
|
`
priceType`
| Int | 否 | 华为支付参数,商品类型:0 消耗型;1 非消耗型;2 订阅型
|
|
`
attach`
| String | 否 | 自定义回调字段
|
|
`
pay_type`
| String | 否 | 小米支付参数:xiaomimibipay:按金额付费;xiaomipay:按计费代码
|
|
`
callbackUrl`
| String | 否 | 游戏服务端回调地址
|
|
`priceType`
| Int | 否 | 商品类型:
`0`
消耗型;
`1`
非消耗型;
`2`
订阅型 |
**回参**
**回参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:-----------:|:-------:|:--------:|
|:-----------:|:-------:|:--------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`
errorMsg`
| String | 失败时的提示文案
|
|
`
msg`
| String | 返回说明
|
|
`errorCode`
| Int | 错误码 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
|
`ext`
| JsonObject | 扩展字段 |
| - | - | 各渠道返回参数 |
| - | - | 各渠道返回参数 |
**OPPO渠道错误码如下:**
**OPPO
渠道错误码如下:**
| 错误码 | 错误信息 | 原因与处理建议 |
| 错误码 | 错误信息 | 原因与处理建议 |
|:----:|:--------------------:|:------------------------------------------:|
|:----:|:--------------------:|:------------------------------------------:|
| 1004 |
支付取消 | 用户取消支付.
|
| 1004 |
支付取消 | 用户取消支付。
|
| 1010 |
支付失败 | OPPO支付处理异常,可能导致发货延迟,建议提示用户发货延迟,稍后查看商品到账情况.
|
| 1010 |
支付失败 | OPPO 支付处理异常,可能导致发货延迟,建议提示用户稍后查看到账情况。
|
| 1010 |
您还未登录,请先登录 | 校验用户账号失败,用户还未登录.
|
| 1010 |
您还未登录,请先登录 | 校验用户账号失败,用户还未登录。
|
| 1010 |
未实名无法支付 | 用户完成实名认证时,无法成功支付.
|
| 1010 |
未实名无法支付 | 用户未完成实名认证,无法成功支付。
|
| 1010 |
共享游戏 ID 充值限制 | 登录被分享的游戏账号,不能进行支付.
|
| 1010 |
共享游戏 ID 充值限制 | 登录被分享的游戏账号,不能进行支付。
|
| -1 | SDK 未初始化 | SDK 未初始化 |
| -1 | SDK 未初始化 | SDK 未初始化 |
|
-1 | 单机支付请调用doSinglePay接口 | 支付和单机支付方法选择错误
|
|
-1 | 单机支付请调用 doSinglePay 接口 | 支付和单机支付方法选择错误
|
**vivo渠道返回参数如下:**
**vivo
渠道返回参数如下:**
| 字段名 | 类型 | 字段说明 |
| 字段名 | 类型 | 字段说明 |
|:-----------:|:-------:|:------------------------------:|
|:-----------:|:-------:|:------------------------------:|
...
@@ -446,193 +553,373 @@ ZySdk.sdkPay(activity, payJson, object : ZySdkCallback {
...
@@ -446,193 +553,373 @@ ZySdk.sdkPay(activity, payJson, object : ZySdkCallback {
| 字段名 | 类型 | 字段说明 |
| 字段名 | 类型 | 字段说明 |
|:-----------------------:|:-------:|:--------------------------:|
|:-----------------------:|:-------:|:--------------------------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`purchaseData`
| String | 订单中的 inAppPurchaseData
字符串 |
|
`purchaseData`
| String | 订单中的
`inAppPurchaseData`
字符串 |
|
`purchaseDataSignature`
| String | 用于验签的签名数据 |
|
`purchaseDataSignature`
| String | 用于验签的签名数据 |
|
`errorMsg`
| String | 错误提示(如订单取消、支付失败)
|
|
`msg`
| String | 错误提示或状态说明
|
|
`errorCode`
| Int | 华为订单状态码 |
|
`errorCode`
| Int | 华为订单状态码 |
---
---
<a
name=
"quickstart-
exit
"
></a>
<a
name=
"quickstart-
ad
"
></a>
###
7. 退出引导
###
9. 激励广告
在用户点击「退出游戏」等入口时调用,在回调中可实现保存进度、退出游戏等操作。
当前对外广告接口统一为:
```
kotlin
```
kotlin
ZySdk
.
sdkExit
(
activity
,
object
:
ZySdkCallback
{
ZySdk
.
showAd
(
activity
,
sceneId
,
callback
)
override
fun
onResult
(
result
:
String
)
{
if
(
result
.
optBoolean
(
"success"
))
{
save
()
//保存进度
exitProcess
(
0
)
// 结束进程
}
else
{
// 用户取消,或失败时查看 errorMsg / errorCode
}
}
})
```
```
说明:
-
SDK 内部会在初始化后处理广告配置拉取、广告 SDK 初始化和预加载
-
接入方只需要传入要播放的
`sceneId`
-
单次广告回调走
`ZyAdCallback`
-
全局广告事件也会同步分发给
`ISdkEventListener`
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:-------------------:|
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`callback`
| ZySdkCallback | 结果回调(JsonObject字符串) |
|
`sceneId`
| String | 广告场景 ID |
|
`callback`
| ZyAdCallback | 单次广告事件回调 |
**回参**
**示例**
```
kotlin
ZySdk
.
showAd
(
activity
=
this
,
sceneId
=
"b1s8"
,
callback
=
object
:
ZyAdCallback
{
override
fun
onAdOpen
(
resultJson
:
String
)
{
Log
.
d
(
"Ad"
,
"onAdOpen=$resultJson"
)
}
override
fun
onAdPlayReward
(
resultJson
:
String
)
{
Log
.
d
(
"Ad"
,
"onAdPlayReward=$resultJson"
)
}
override
fun
onAdClose
(
resultJson
:
String
)
{
Log
.
d
(
"Ad"
,
"onAdClose=$resultJson"
)
}
override
fun
onAdPlayFailed
(
resultJson
:
String
)
{
Log
.
d
(
"Ad"
,
"onAdPlayFailed=$resultJson"
)
}
}
)
```
**`ZyAdCallback` 支持的方法**
| 方法名 | 说明 |
|---|---|
|
`onAdSubscribeFail(resultJson)`
| 广告订阅/请求/初始化失败 |
|
`onAdPlayFailed(resultJson)`
| 广告播放失败 |
|
`onAdPlayReward(resultJson)`
| 广告激励发放成功 |
|
`onAdOpen(resultJson)`
| 广告打开 |
|
`onAdClick(resultJson)`
| 广告点击 |
|
`onAdClose(resultJson)`
| 广告关闭 |
|
`onAdPlayBegin(resultJson)`
| 广告播放开始 |
|
`onAdPlayEnd(resultJson)`
| 广告播放结束 |
|
`onAdDataEmpty(resultJson)`
| 广告数据为空 |
|
`onAdPreloadReady(resultJson)`
| 广告预加载成功 |
|
`onAdReportFail(resultJson)`
| 广告收益上报失败 |
广告回调
`resultJson`
中常见字段:
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|
:-----------:|:-------:|:--------:
|
|
---|---|---
|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`
errorMsg`
| String | 失败时的提示文案
|
|
`
msg`
| String | 返回说明
|
|
`errorCode`
| Int | 错误码 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
|
`ext.eventType`
| String | 广告事件类型 |
|
`ext.sceneId`
| String | 广告场景 ID |
|
`ext.placementId`
| String | 广告位 ID |
---
<a
name=
"quickstart-exit"
></a>
### 10. 退出引导
在用户点击「退出游戏」等入口时调用:
```
kotlin
ZySdk
.
sdkExit
(
this
)
```
当前接口签名仍为:
```
kotlin
ZySdk
.
sdkExit
(
activity
,
callback
)
```
当前逻辑中:
-
回调签名仅为兼容保留
-
实际退出结果
**不再回调宿主**
-
SDK 内部会统一处理退出弹窗、渠道退出与广告资源释放
---
---
<a
name=
"quickstart-update"
></a>
<a
name=
"quickstart-update"
></a>
###
8
. 检查更新
###
11
. 检查更新
只需调用,若有更新,会弹出各渠道
sdk
自带的更新弹窗。
只需调用,若有更新,会弹出各渠道
SDK
自带的更新弹窗。
```
kotlin
```
kotlin
ZySdk
.
sdkUpdate
(
this
,
object
:
ZySdkCallback
{
ZySdk
.
sdkUpdate
(
this
,
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
Log
.
d
(
TAG
,
"sdkUpdate: $result"
)
}
}
})
}
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:-------------------:|
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`
callback`
| ZySdkCallback
| 结果回调(JsonObject字符串) |
|
`
result`
| String
| 结果回调(JsonObject字符串) |
**回参**
**回参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:-----------:|:-------:|:--------:|
|:-----------:|:-------:|:--------:|
|
`success`
| Boolean | 是否成功 |
|
`success`
| Boolean | 是否成功 |
|
`
errorMsg`
| String | 失败时的提示文案
|
|
`
msg`
| String | 返回说明
|
|
`errorCode`
| Int | 错误码 |
|
`errorCode`
| Int | 错误码 |
|
`channelCode`
| String | 当前渠道编码 |
---
---
<a
name=
"quickstart-float"
></a>
<a
name=
"quickstart-float"
></a>
###
9
. 显示/隐藏浮窗
###
12
. 显示/隐藏浮窗
显示浮窗
#### 显示主悬浮球
```
kotlin
```
kotlin
ZySdk
.
showHuaweiFloat
(
this
,
object
:
ZySdkCallback
{
ZySdk
.
showFloatingBall
(
this
,
object
:
ZySdkCallback
{
override
fun
onResult
(
result
:
String
)
{
override
fun
onResult
(
result
:
String
)
{
Log
.
d
(
TAG
,
"showFloatingBall: $result"
)
}
}
})
}
)
```
```
隐藏浮窗
#### 隐藏主悬浮球
```
kotlin
```
kotlin
ZySdk
.
hide
HuaweiFloat
(
this
,
object
:
ZySdkCallback
{
ZySdk
.
hide
FloatingBall
()
override
fun
onResult
(
result
:
String
)
{
```
}
#### 华为渠道浮标
})
```
kotlin
ZySdk
.
showHuaweiFloat
(
this
)
ZySdk
.
hideHuaweiFloat
(
this
)
```
```
**入参**
**入参**
| 字段 | 类型 | 含义 |
| 字段 | 类型 | 含义 |
|:----------:|:--------
-----
:|:-------------------:|
|:----------:|:--------:|:-------------------:|
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`activity`
| Activity | 当前 Activity 上下文 |
|
`callback`
| ZySdkCallback | 结果回调(JsonObject字符串) |
|
`result`
| String | 结果回调(JsonObject字符串) |
>该功能由各渠道sdk控制,并不一定能生效,如华为sdk调用就不会弹出浮窗。
---
---
<a
name=
"others"
></a>
<a
name=
"quickstart-listener"
></a>
## 三、其他方法
### 13. 对外回调接口
#### 13.1 `ZySdkCallback`
<a
name=
"others-listener"
></a>
通用业务回调接口,初始化、登录、支付、角色上报、行为上报、更新等接口统一使用。
### 1. 设置 SDK 全局事件回调监听器
```
kotlin
interface
ZySdkCallback
{
fun
onResult
(
result
:
String
)
}
```
目前支持监听的事件如下:
| 方法名 | 说明 |
|---|---|
|
`onResult(result)`
| 通用字符串回调,
`result`
为 JSON 字符串 |
| 回调名 | 参数 | 说明 |
#### 13.2 `ZyAdCallback`
|:--------------------------:|:--------------------:|:--------------------:|
|
`onInitGameInfoReady`
| success: Boolean | 游戏详情请求成功并写入内存 |
|
`onLogin`
| userInfoJson: String | 登录成功回调,返回用户信息json字符串 |
|
`onLogout`
| 无 | 账号登出/Token失效 回调 |
|
`onPrivacyConsentAccepted`
| 无 | 隐私弹窗中点击同意按钮后回调 |
|
`onPrivacyConsentRejected`
| 无 | 隐私弹窗中点击拒绝按钮后回调 |
调用如下:
广告单次回调接口,
`showAd(...)`
调用时使用。
```
kotlin
```
kotlin
ZySdk
.
setSdkEventListener
(
object
:
ISdkEventListener
{
interface
ZyAdCallback
:
IAdEventCallback
```
**支持的方法**
/**
| 方法名 | 说明 |
* [ZySdk.sdkInit] 在非动态 gameId 模式下会请求游戏信息,完成后回调一次。
|---|---|
*
|
`onAdSubscribeFail(resultJson)`
| 广告订阅/请求/初始化失败 |
* @param success `true` 表示游戏详情业务成功(`status_code == 1`)且已写入登录/开关等内存状态。
|
`onAdPlayFailed(resultJson)`
| 广告播放失败 |
*/
|
`onAdPlayReward(resultJson)`
| 广告激励发放成功 |
override
fun
onInitGameInfoReady
(
success
:
Boolean
)
{
|
`onAdOpen(resultJson)`
| 广告打开 |
super
.
onInitGameInfoReady
(
success
)
|
`onAdClick(resultJson)`
| 广告点击 |
}
|
`onAdClose(resultJson)`
| 广告关闭 |
|
`onAdPlayBegin(resultJson)`
| 广告播放开始 |
/**
|
`onAdPlayEnd(resultJson)`
| 广告播放结束 |
* 登录成功回调。
|
`onAdDataEmpty(resultJson)`
| 广告数据为空 |
*
|
`onAdPreloadReady(resultJson)`
| 广告预加载成功 |
* 渠道登录/账号登录/复用本地缓存登录态 回调
|
`onAdReportFail(resultJson)`
| 广告收益上报失败 |
* 都会触发一次该回调。
*/
#### 13.3 `ISdkEventListener`
全局 SDK 事件监听接口。
SDK 提供监听设置接口:
```
kotlin
ZySdk
.
setSdkEventListener
(
listener
)
ZySdk
.
clearSdkEventListener
()
```
**示例**
```
kotlin
ZySdk
.
setSdkEventListener
(
object
:
ISdkEventListener
{
override
fun
onLogin
(
userInfoJson
:
String
)
{
override
fun
onLogin
(
userInfoJson
:
String
)
{
super
.
onLogin
(
userInfoJson
)
Log
.
d
(
"SdkEvent"
,
"onLogin=$userInfoJson"
)
//登录后操作
}
}
/**
* 账号登出/Token失效 回调
*/
override
fun
onLogout
()
{
override
fun
onLogout
()
{
super
.
onLogout
()
Log
.
d
(
"SdkEvent"
,
"onLogout"
)
//登出后操作
}
}
/**
* SDK隐私弹窗中点击同意按钮后回调。
*/
override
fun
onPrivacyConsentAccepted
()
{
override
fun
onPrivacyConsentAccepted
()
{
super
.
onPrivacyConsentAccepted
()
Log
.
d
(
"SdkEvent"
,
"onPrivacyConsentAccepted"
)
//同意隐私后操作
}
}
/**
override
fun
onAdPlayReward
(
resultJson
:
String
)
{
* SDK隐私弹窗中点击拒绝按钮后回调。
Log
.
d
(
"SdkEvent"
,
"onAdPlayReward=$resultJson"
)
*/
override
fun
onPrivacyConsentRejected
()
{
super
.
onPrivacyConsentRejected
()
//拒绝隐私后操作
}
}
})
})
```
```
`ISdkEventListener`
继承
`IAdEventCallback`
,因此除全局登录/隐私事件外,也包含完整广告事件回调。
**支持的方法**
| 方法名 | 说明 |
|---|---|
|
`onLogin(userInfoJson)`
| 登录成功回调 |
|
`onLogout()`
| 登出/Token 失效回调 |
|
`onSwitchAccount(userInfoJson)`
| 切换账号成功回调 |
|
`onPasswordChanged()`
| 修改密码成功回调 |
|
`onInitGameInfoReady(success)`
| 游戏详情初始化完成回调 |
|
`onPrivacyConsentAccepted()`
| 隐私弹窗点击同意 |
|
`onPrivacyConsentRejected()`
| 隐私弹窗点击拒绝 |
|
`onAdSubscribeFail(resultJson)`
| 广告订阅失败 |
|
`onAdPlayFailed(resultJson)`
| 广告播放失败 |
|
`onAdPlayReward(resultJson)`
| 广告奖励发放 |
|
`onAdOpen(resultJson)`
| 广告打开 |
|
`onAdClick(resultJson)`
| 广告点击 |
|
`onAdClose(resultJson)`
| 广告关闭 |
|
`onAdPlayBegin(resultJson)`
| 广告播放开始 |
|
`onAdPlayEnd(resultJson)`
| 广告播放结束 |
|
`onAdDataEmpty(resultJson)`
| 广告数据为空 |
|
`onAdPreloadReady(resultJson)`
| 广告预加载成功 |
|
`onAdReportFail(resultJson)`
| 广告收益上报失败 |
#### 13.4 `ZyReflectCallback`
Unity/反射接入专用回调接口。
```
kotlin
interface
ZyReflectCallback
{
fun
onResult
(
methodName
:
String
,
result
:
String
)
}
```
| 方法名 | 说明 |
|---|---|
|
`onResult(methodName, result)`
| 反射调用结果回调,
`methodName`
为调用的方法名,
`result`
为 JSON 字符串 |
---
---
<a
name=
"others-privacy"
></a>
<a
name=
"quickstart-unity"
></a>
### 2. 获取玩家是否已经同意过 SDK 隐私政策
### 14. Unity 接入
当接入方是 Unity 宿主时,推荐统一通过
`ZyUnitySupport`
反射调用 SDK。
#### 统一反射入口
```
kotlin
```
kotlin
val
privacyStatus
=
ZySdk
.
hasPrivacyConsentAccepted
(
)
ZyUnitySupport
.
invokeMethod
(
activity
,
methodName
,
paramJson
,
callback
)
```
```
#### 回调接口
```
kotlin
interface
ZyReflectCallback
{
fun
onResult
(
methodName
:
String
,
result
:
String
)
}
```
#### 当前支持的 `methodName`
| methodName | 说明 |
|---|---|
|
`sdkInit`
| SDK 初始化 |
|
`sdkLogin`
| SDK 登录 |
|
`sdkPay`
| 常规支付 |
|
`sdkSinglePay`
| OPPO 单机支付 |
|
`sdkReportRole`
| 角色上报 |
|
`sdkBehaviorReport`
| 行为上报 |
|
`showAd`
| 激励广告 |
|
`sdkExit`
| 退出游戏 |
|
`sdkUpdate`
| 检查更新 |
|
`showFloatingBall`
| 显示主悬浮球 |
|
`hideFloatingBall`
| 隐藏主悬浮球 |
|
`showHuaweiFloat`
| 显示华为浮标 |
|
`hideHuaweiFloat`
| 隐藏华为浮标 |
|
`setDebug`
| 设置调试开关 |
|
`clearCache`
| 清空本地缓存 |
|
`getSdkUserInfo`
| 获取当前用户信息 |
|
`hasPrivacyConsentAccepted`
| 查询隐私同意状态 |
#### 常用 `paramJson` 示例
| methodName | paramJson 示例 |
|---|---|
|
`sdkInit`
|
`{"showLoginBackgroundImage":true}`
|
|
`sdkPay`
/
`sdkSinglePay`
| 直接传支付 Json 字符串 |
|
`sdkReportRole`
| 直接传角色上报 Json 字符串 |
|
`sdkBehaviorReport`
| 直接传行为上报 Json 字符串 |
|
`showAd`
|
`{"sceneId":"b1s8"}`
|
|
`setDebug`
|
`{"enabled":true}`
|
#### Unity 全局监听
Unity 中全局监听统一走:
```
kotlin
ZyUnitySupport
.
setSdkEventListener
(
activity
,
listener
)
ZyUnitySupport
.
clearSdkEventListener
()
```
其中
`listener`
为
`ISdkEventListener`
实现。
---
<a
name=
"samples"
></a>
<a
name=
"samples"
></a>
##
四
、示例代码位置
##
三
、示例代码位置
| 能力 | 代码位置 |
| 能力 | 代码位置 |
|----------------------------------|--------------------------------------------------------------------|
|----------------------------------|--------------------------------------------------------------------|
| 初始化 / 登录 / 支付 / 角色上报 / 退出 / 资源代理 |
`app/src/main/java/com/zwgame/test/gamecenterdemo/MainActivity.kt`
|
| 初始化 / 登录 / 支付 / 角色上报 / 行为上报 / 广告 / 退出 / 悬浮球 |
`appbase/src/main/java/com/zwwl/appbase/MainActivity.kt`
|
| Unity 反射验证 |
`appbase/src/main/java/com/zwwl/appbase/UnityDemoActivity.kt`
|
| 华为 Unity 验证 |
`basehuawei/src/main/java/com/xmdzzandroid/huawei/UnityDemoActivity.kt`
|
| 依赖与签名 |
`app/build.gradle.kts`
|
| 依赖与签名 |
`app/build.gradle.kts`
|
| 仓库 |
`settings.gradle.kts`
|
| 仓库 |
`settings.gradle.kts`
|
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论