Appearance
插件接口
IMPORTANT
本文档中所述的插件SDK,均为可选功能。 游戏可以根据自己的运营需求进行处理。
对于支付SDK、广告SDK、统计插件SDK等,都做了可插拔设计, 需要则用,不需要则不用, 不会对核心业务逻辑产生影响。
插件配置说明
为了实现插件的可插拔, 我们在assets下面,定义了一个插件配置文件:ug_plugins.json文件。 在该文件中,配置当前需要的插件信息和参数:
点击查看插件配置样例
json
[
{
"type": "pay",
"name": "google",
"class": "com.ug.sdk.pay.google.GooglePay",
"params": {}
},
{
"type": "analytics",
"name": "appsflyer",
"class": "com.ug.sdk.plugin.appsflyer.UGAppsflyer",
"params": {
"dev.key": "Gc6bE8V9CcgP8wsjGZUMAX",
"dev.purchase.log.type": "normal",
"dev.purchase.env": "production"
}
},
{
"type": "analytics",
"name": "adjust",
"class": "com.ug.sdk.plugin.adjust.UGAdjust",
"params": {
"app.token": "Gc6bE8V9CcgP8wsjGZUMAX",
"app.environment": "sandbox"
}
},
{
"type": "analytics",
"name": "firebase",
"class": "com.ug.sdk.plugin.firebase.UGFirebase",
"params": {}
},
{
"type": "analytics",
"name": "facebook",
"class": "com.ug.sdk.service.login.facebook.FacebookANS",
"params": {}
},
{
"type": "ad",
"name": "admob",
"class": "com.ug.sdk.ad.admob.AdmobAd",
"params": {
"application.id": "ca-app-pub-2382347120869101~2642437601"
},
"children": [
{
"type": "splash",
"name": "splash",
"class": "com.ug.sdk.ad.admob.AdmobSplashAd",
"params": {
"splash.pos.id": "ca-app-pub-2382347120869101/8724614312"
}
},
{
"type": "banner",
"name": "banner",
"class": "com.ug.sdk.ad.admob.AdmobBannerAd",
"params": {
"banner.pos.id": "ca-app-pub-2382347120869101/1444890093"
}
},
{
"type": "interstitial",
"name": "interstitial",
"class": "com.ug.sdk.ad.admob.AdmobInterstitialAd",
"params": {
"interstitial.pos.id": "ca-app-pub-2382347120869101/4630096608"
}
},
{
"type": "reward",
"name": "reward",
"class": "com.ug.sdk.ad.admob.AdmobRewardAd",
"params": {
"reward.pos.id": "ca-app-pub-2382347120869101/2134606498"
}
}
]
}
]插件配置节点参数说明:
| 参数名称 | 参数定义 | 参数说明 |
|---|---|---|
| type | 插件类型 | 每一类插件, 比如统计插件固定为analytics,广告插件固定为ad,支付插件固定为pay;广告子插件实现的type为广告类型 |
| name | 插件名称 | 插件名称,推荐用英文或拼音 |
| class | 插件实现类 | 当前插件的实现类全名,在SDK源码工程中,比如sdk-analytics-xxx对应一个统计插件模块,里面定义了该类 |
| params | 插件参数 | 第三方插件需要的参数,每个插件不同,具体请参考下面插件部分的说明 |
| children | 子插件 | 对于广告插件,可以有开屏、插屏、Banner和激励视频等子插件实现 |
支付插件
SDK中通过插件抽象的形式, 定义了支付插件:UGPay, 并接入了Google支付、PayPal支付等,游戏可以根据需求选用。
1、Google支付插件配置
如果要使用Google支付插件,我们需要在assets/ug_plugins.json中,配置该插件:
json
{
"type": "pay",
"name": "google",
"class": "com.ug.sdk.pay.google.GooglePay",
"params": {}
}之后在游戏工程的build.gradle中,增加Google支付的依赖库:
//implementation file('libs/ug-pay-google-v7.jar') //这里直接将ug-pay-google-v7.jar放到libs下即可
implementation 'com.android.billingclient:billing:7.0.0'最后记得在SDK后台->游戏控制台->支付配置中,添加一个Google支付通道,并配置好参数即可。
2、PayPal支付插件配置
json
{
"type": "pay",
"name": "paypal",
"class": "com.ug.sdk.pay.paypal.PayPalPay",
"params": {}
}之后在游戏工程的build.gradle中,增加PayPal支付的依赖库:
//implementation file('libs/ug-pay-paypal.jar') //这里直接将ug-pay-paypal.jar放到libs下即可最后在SDK后台->游戏控制台->支付配置中,添加一个PayPay支付通道,并配置好参数即可。
统计埋点插件
SDK中通过插件抽象的形式, 定义了统计埋点插件:UGAnalytics, 并接入了多个第三方买量投放埋点上报SDK,基本不需要游戏层调用,即可实现数据的自动上报。
1、内置埋点
SDK内部已经预制了一些数据埋点的时机,参考如下:
| 事件名称 | 事件接口 | 事件说明 |
|---|---|---|
| SDK初始化开始 | ug_sdk_init_begin | 在SDK初始化接口开始调用时触发 |
| SDK初始化成功 | ug_sdk_init_success | 在SDK初始化接口成功后触发 |
| SDK登录开始 | ug_sdk_login_begin | 在SDK登录接口开始调用时触发 |
| SDK登录成功 | ug_sdk_login_suc | 在SDK登录成功后触发 |
| SDK账号注册成功 | ug_sdk_register_suc | 在玩家首次登录/注册成功时触发 |
| SDK支付开始 | ug_sdk_pay_begin | 在SDK支付接口开始调用时触发 |
| SDK支付成功 | ug_sdk_pay_suc | 在SDK支付成功后触发 |
| 创建角色成功 | ug_sdk_role_create | 在游戏层调用角色上报接口并且dataType是1时触发 |
| 进入游戏成功 | ug_sdk_game_enter | 在游戏层调用角色上报接口并且dataType是2时触发 |
| 角色升级成功 | ug_sdk_level_up | 在游戏层调用角色上报接口并且dataType是3时触发 |
2、自定义上报
如果游戏层有自己其他的事件需要上报到第三方统计平台, 可以调用如下接口:
java
UGAnalytics.getInstance().onCustomEvent("eventName", params); //eventName:事件名称(英文);prams: 事件参数3、已接入的插件
针对统计埋点插件, 当前SDK中已经接入了Appsflyer、Adjust和Firebase:
| 插件名称 | 插件模块 | 插件说明 |
|---|---|---|
| Appsflyer | ug-analytics-appsflyer | Appsflyer买量上报 |
| Adjust | ug-analytics-adjust | Adjust买量上报 |
| Firebase | ug-firebase | Firebase统计上报 |
3.1 点击查看【Appsflyer】插件SDK的配置
3.1.1 依赖库配置
在游戏工程的build.gradle中,增加Appsflyer的依赖库:
//implementation file('libs/ug-analytics-appsflyer.jar') //这里直接将ug-analytics-appsflyer.jar放到libs下即可
implementation 'com.appsflyer:af-android-sdk:6.9.4'
implementation 'com.appsflyer:purchase-connector:1.0.0'正常提供SDK接入文件时,就已经将相关的依赖库放在SDKDemo/libs中了。 如果你发现里面没有Appsflyer相关插件的库(ug-analytics-appsflyer.jar等),可以让SDK同学,做如下处理:
WARNING
检查SDK工程/build.gradle文件中,是否添加了该module的导出依赖:
gradle
exportSDK.dependsOn(":ug-analytics-appsflyer:export")添加后,重新执行 ./gradlew :exportSDK, 即可在SDKDemo/libs下,导出该module相关的依赖库和该module本身。
3.1.2 参数配置
如果要使用Appsflyer插件, 需要去Appsflyer平台, 创建应用,拿到devKey等参数。 之后,我们需要在assets/ug_plugins.json中,配置该插件:
json
{
"type": "analytics",
"name": "appsflyer",
"class": "com.ug.sdk.plugin.appsflyer.UGAppsflyer",
"params": {
"dev.key": "Gc6bE8V9CcgP8wsjGZUMAX",
"dev.purchase.log.type": "normal",
"dev.purchase.env": "production"
}
}插件自定义参数说明:
| 参数名称 | 参数定义 | 参数说明 |
|---|---|---|
| dev.key | Dev Key | Appsflyer后台该应用的dev key参数 |
| dev.purchase.log.type | Google购买事件是否自动上报 | Google购买事件上报方式。 normal/auto |
| dev.purchase.env | 支付环境 | 当前环境,sandbox/production |
3.2 点击查看【Adjust】插件SDK的配置
3.2.1 依赖库配置
在游戏工程的build.gradle中,增加Adjust的依赖库:
//implementation file('libs/ug-analytics-adjust.jar') //这里直接将ug-analytics-adjust.jar放到libs下即可
implementation 'com.adjust.sdk:adjust-android:4.31.0'
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'正常提供SDK接入文件时,就已经将相关的依赖库放在SDKDemo/libs中了。 如果你发现里面没有Adjust相关的库(ug-analytics-adjust.jar等),可以让SDK同学,做如下处理:
WARNING
检查SDK工程/build.gradle文件中,是否添加了该module的导出依赖:
gradle
exportSDK.dependsOn(":ug-analytics-adjust:export")添加后,重新执行 ./gradlew :exportSDK, 即可在SDKDemo/libs下,导出该module相关的依赖库和该module本身。
3.2.2 参数配置
如果要使用Adjust插件, 需要去Adjust平台, 创建应用,拿到appID等参数。 之后,我们需要在assets/ug_plugins.json中,配置该插件:
json
{
"type": "analytics",
"name": "adjust",
"class": "com.ug.sdk.plugin.adjust.UGAdjust",
"params": {
"app.token": "Gc6bE8V9CcgP8wsjGZUMAX",
"app.environment": "sandbox"
}
}插件自定义参数说明:
| 参数名称 | 参数定义 | 参数说明 |
|---|---|---|
| app.token | 应用ID | Adjust后台,创建应用后拿到的token参数 |
| app.environment | 是否正式环境 | 当前环境,sandbox/production |
3.2.3 事件映射配置
Adjust后台自定义事件标识是自动生成的,我们需要将SDK内置的事件映射到Adjust后台的自定义事件标识。 在assets/ug_adjust_events.json中配置:
json
{
"ug_sdk_init_begin": "tlou7h",
"ug_sdk_init_success": "tlou7h1",
"ug_sdk_login_begin": "tlou7h2",
"ug_sdk_login_suc": "tlou7h3",
"ug_sdk_register_suc": "tlou7h4",
"ug_sdk_role_create": "tlou7h5",
"ug_sdk_game_enter": "tlou7h6",
"ug_sdk_level_up": "tlou7h7",
"ug_sdk_pay_begin": "tlou7h8",
"ug_sdk_pay_suc": "tlou7h9",
"custom_event": "tlou7hc"
}3.3 点击查看【Firebase】插件SDK的配置
3.3.1 依赖库配置
在游戏工程的build.gradle中,增加Adjust的依赖库:
//implementation file('libs/ug-firebase.jar') //这里直接将ug-firebase.jar放到libs下即可
implementation 'com.google.firebase:firebase-analytics:21.3.0'
implementation 'com.google.firebase:firebase-crashlytics:18.4.3'
implementation 'com.google.firebase:firebase-crashlytics-ndk:18.4.3'正常提供SDK接入文件时,就已经将相关的依赖库放在SDKDemo/libs中了。 如果你发现里面没有Firebase插件相关的库(ug-analytics.jar等),可以让SDK同学,做如下处理:
WARNING
检查SDK工程/build.gradle文件中,是否添加了该module的导出依赖:
gradle
exportSDK.dependsOn(":ug-firebase:export")添加后,重新执行 ./gradlew :exportSDK, 即可在SDKDemo/libs下,导出该module相关的依赖库和该module本身。
3.3.2 参数配置
如果要使用该插件,我们需要在assets/ug_plugins.json中,配置该插件:
json
{
"type": "analytics",
"name": "firebase",
"class": "com.ug.sdk.plugin.firebase.UGFirebase",
"params": {}
}还需要去Firebase平台, 创建应用,下载google-services.json参数文件,放到游戏工程app模块下。 之后在游戏工程级别build.gradle中,在dependencies中添加如下配置:
dependencies {
...
//firebase need
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
}然后在游戏工程app模块的build.gradle中,添加如下插件:
// firebase need
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'广告插件
SDK中通过插件抽象的形式, 定义了支付插件:UGAd, 并接入了Admob等广告,游戏可以根据需求选用。
依赖库配置
在游戏工程的build.gradle中,增加Admob的依赖库:
//implementation file('libs/ug-ad-admob.jar') //这里直接将ug-ad-admob.jar放到libs下即可
implementation 'com.google.android.gms:play-services-ads:24.7.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-runtime:2.2.0"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.2.0"正常提供SDK接入文件时,就已经将相关的依赖库放在SDKDemo/libs中了。 如果你发现里面没有Admob插件相关的库(ug-ad-admob.jar等),可以让SDK同学,做如下处理:
WARNING
检查SDK工程/build.gradle文件中,是否添加了该module的导出依赖:
gradle
exportSDK.dependsOn(":ug-ad-admob:export")添加后,重新执行 ./gradlew :exportSDK, 即可在SDKDemo/libs下,导出该module相关的依赖库和该module本身。
插件参数配置
为了使用Admob广告插件,我们需要在assets/ug_plugins.json中,配置该插件以及其参数:
json
{
"type": "ad",
"name": "admob",
"class": "com.ug.sdk.ad.admob.AdmobAd",
"params": {
"application.id": "ca-app-pub-2382347120869101~2642437601"
},
"children": [
{
"type": "splash",
"name": "splash",
"class": "com.ug.sdk.ad.admob.AdmobSplashAd",
"params": {
"splash.pos.id": "ca-app-pub-2382347120869101/8724614312"
}
},
{
"type": "banner",
"name": "banner",
"class": "com.ug.sdk.ad.admob.AdmobBannerAd",
"params": {
"banner.pos.id": "ca-app-pub-2382347120869101/1444890093"
}
},
{
"type": "interstitial",
"name": "interstitial",
"class": "com.ug.sdk.ad.admob.AdmobInterstitialAd",
"params": {
"interstitial.pos.id": "ca-app-pub-2382347120869101/4630096608"
}
},
{
"type": "reward",
"name": "reward",
"class": "com.ug.sdk.ad.admob.AdmobRewardAd",
"params": {
"reward.pos.id": "ca-app-pub-2382347120869101/2134606498"
}
}
]
}插件自定义参数说明:
| 参数名称 | 参数定义 | 参数说明 |
|---|---|---|
| application.id | 应用ID | Admob后台创建应用后生成的application id |
| splash.pos.id | 开屏广告位ID | 开屏广告对应的广告位ID |
| banner.pos.id | Banner广告位ID | 横幅广告对应的广告位ID |
| interstitial.pos.id | 插屏广告位ID | 插屏广告对应的广告位ID |
| reward.pos.id | 激励视频广告位ID | 激励视频广告对应的广告位ID |