Skip to content

插件接口

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:

插件名称插件模块插件说明
Appsflyerug-analytics-appsflyerAppsflyer买量上报
Adjustug-analytics-adjustAdjust买量上报
Firebaseug-firebaseFirebase统计上报
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.keyDev KeyAppsflyer后台该应用的dev key参数
dev.purchase.log.typeGoogle购买事件是否自动上报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应用IDAdjust后台,创建应用后拿到的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应用IDAdmob后台创建应用后生成的application id
splash.pos.id开屏广告位ID开屏广告对应的广告位ID
banner.pos.idBanner广告位ID横幅广告对应的广告位ID
interstitial.pos.id插屏广告位ID插屏广告对应的广告位ID
reward.pos.id激励视频广告位ID激励视频广告对应的广告位ID

版权所有© 2021-2030 上海丞诺网络科技有限公司