简体 EN 繁体

你正在使用老旧的 TGSDK 广告 SDK 版本!!!

目录

1、导入 TGSDK 到工程

首先从 Yomob 官方下载页 下载最新的 TGSDK 稳定版本。将下载好的 TGSDK.unity.x.x.x.unitypackage 文件导入到你的 Unity 项目中。

目前我们的 TGSDK 只支持 Unity 5.x 以上版本,如果你使用的是 Unity 4.x 或之前更老的版本,请联系我们

Android 设置启动 Activity

【注意】Assets/Plugins/Android/AndroidManifest.xml 文件中设置默认的启动类 Activity 为:

com.soulgame.sgsdk.tgsdklib.unity.TGSDKUnityActivity

请保证你的项目使用的启动 Activity 是该类或者该类的子类。如果你已经使用了自己的自定义 Activity 作为启动 Activity,那么你也可以手动添加方法到你的自定义 Activity 类中。

不要忘记在 Activity 的生命周期回调方法中调用 TGSDK 的同名方法

class YourCustomActivity extends UnityPlayerActivity {

    @Override
    protected void onStart() {
        TGSDK.onStart(this);
        super.onStart();
    }

    @Override
    protected void onStop() {
        TGSDK.onStop(this);
        super.onStop();
    }

    @Override
    protected void onPause() {
        TGSDK.onPause(this);
        super.onPause();
    }

    @Override
    protected void onResume() {
        TGSDK.onResume(this);
        super.onResume();
    }

    @Override
    protected void onDestroy() {
        TGSDK.onDestroy(this);
        super.onDestroy();
    }

    @Override
    protected void onActivityResult(int reqCode, int resCode, Intent data) {
        TGSDK.onActivityResult(this, reqCode, resCode, data);
        super.onActivityResult(reqCode, resCode, data);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

        TGSDK.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

加入 Google Play Services 支持

如果你的产品最终要发布到 Google Play 应用商店,那么你需要在你的项目中加入 Google Play Services 支持,因为我们的广告会依赖这个服务。

具体如何将 Google Play Services 引入你的项目,请参看 Google 的官方开发文档。需要注意的是:

不需要将全部 Google Play Services 的库导入你的项目中,我们只依赖

com.google.android.gms:play-services-ads-15.0.1

com.google.android.gms:play-services-ads-base-15.0.1

com.google.android.gms:play-services-ads-identifier-15.0.1
com.google.android.gms:play-services-ads-lite-15.0.1
com.google.android.gms:play-services-location-15.0.1
com.google.android.gms:play-services-basement-15.0.1

Unity 项目如何加入 Google Play Services

Google 的官方开发文档中并没有针对 Unity 项目如何引入 Google Play Services 服务做详细的说明。针对 Unity 项目需要手动复制相应的 Google Play Services 库的 aar 文件并粘贴到你的项目中。你可以从这里直接下载我们提供的 aar 文件直接复制粘贴到 TGSDK 提供的 libs 文件夹下面

Assets/Plugins/Android/libs

加入 Android Support V4 支持库

【注意】Android Support v4 支持库为强制依赖,请务必将其引入你的项目并且使用 23 版本以上的支持库(支持库向下兼容请勿担心),否则可能会导致程序崩溃! Googleplay版本sdk强制要求v4版本为26及以上

我们在 1.6.2(含)版本以上的 SDK 中默认放入了 v4 支持库。如果你使用的是 1.6.2 以前的版本,则需要手动将支持库加入你的项目。你可以在 Android SDK 目录中找到该库的 aar 文件手动添加。具体的库文件地址

Your-Android-SDK-Path/extras/android/m2repository/com/android/support/support-v4

同样,你可以将复制出来的 android.support.v4 库的 aar 文件直接复制粘贴到 TGSDK 提供的 libs 文件夹下面

Assets/Plugins/Android/libs

【注意】Android Support v4 支持库为强制依赖,请务必将其引入你的项目并且使用 23 版本以上的支持库(支持库向下兼容请勿担心),否则可能会导致程序崩溃!

加入 Android Support V7 支持库

【注意】TGSDK 1.8.6 以后版本 Android Support v7 支持库为强制依赖,请务必将其引入你的项目并且不必引入 Android Support v4 支持库。

新版本的 Unity3D (以 2019 版本为例) 如果要引入 Android V7 支持库需要打开 Custom Gradle Template 选项。按照如下图示所示在 Build Settings 中勾选相应的选项。

打开 Custom Gradle Template 选项后在如下图所示的文件夹中可以找到名为 mainTemplate.gralde 的文本文件,用文本编辑器打开该文件进行编辑。

打开 mainTemplate.gralde 文件后在如图所示的位置增加 Android V7 支持库的引入语句

dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**}

关于 Android 7.0权限

  • 1.在 AndroidManifest.xml 中的 Application 标签中修改 ${applicationId} 为 app 的包名

  • 2.混淆配置文件中加上:

-keep class android.support.v4.**{ *;}

避免support-V4包中的FileProvider代码被混淆。

iOS 工程 BitCode 支持

1.6.1 版本开始 iOS 版本(含对 Unity 的支持)的广告 SDK 支持 iOS 的 BitCode 技术,使用者可以放心的打开项目对 BitCode 的支持。

【注意】支持 BitCode 后 SDK 本身的体积会有一定的增大,用户打包的 iOS 工程体积也会相应的增大,但是用户从苹果商店下载到的应用体积会大幅度的减小,所以建议用户请放心开启 BitCode 支持

iOS 出包注意事项

在 TGSDK 根目录下有名为 TGPostProcess.cs 的专门用于 iOS 出包的脚本,该脚本使用相对工程的目录进行 SDK 资源的拷贝、链接,所以如果 SDK 的相对目录发生改变,则应该对出包脚本进行相应的修改。建议出包尽量在 Mac 环境中出包,Windows环境下可能会存在Bug。

2、初始化 TGSDK

Yomob官方网站 为产品注册好账户后,你将会从网站得到你的产品对应的 AppID 使用这个参数来初始化 TGSDK

如果你的产品在国内发型,并需要在多个应用渠道进行发型,初始化的方法略有不同,具体请参见《支持多渠道分包》

using Together;

TGSDK.Initialize("Your application ID from yomob");

3、预加载广告资源

为了有充裕的时间来加载广告资源,建议尽早调用预加载 API 来开始广告的加载工作。甚至你可以在初始化 TGSDK 的同时就开始调用广告预加载 API 来预加载广告。

注意!!!你的应用使用的包名( package name )或 Bundle ID 必须和你在 Yomob 网站上注册的一致,否则可能无法正常加载广告资源,无法正常显示广告

using Together;

TGSDK.PreloadAd();

4、播放广告

通过 Yomob 官方网站 为注册的应用建立广告场景,获得相应的广告场景 ID 后,通过场景 ID 参数来判断广告是否已经准备好,如果对应场景的广告已经准备好,则可以调用播放 API 来播放对应场景的广告。

using Together;

if (TGSDK.CouldShowAd("Your scene ID from yomob")) {
    TGSDK.ShowAd("Your scene ID from yomob");
}

5、Banner类型广告的播放

针对Banner广告的特殊性,需要提前设置Banner广告的类型以及位置:

TGSDK.SetBannerConfig(String scene, string type, 
                      float x, float y, 
                      float width, float height, 
                      int interval);

参数解释:

  • scene Banner 广告对应注册的广告场景 ID

  • type Banner 广告尺寸类型, 其中分为三种类型:

Banner类型对应字符串 Banner尺寸
TGBannerNormal 320*50
TGBannerLarge 320*90
TGBannerMediumRectangle 300*250
  • x、y Banner 放置的位置对应的 X 坐标和 Y 坐标,单位:px

  • width、height Banner 广告预留展示位置的宽高,单位:px

  • interval Banner 广告轮播切换广告内容的间隔时间,单位:秒

坐标以屏幕左上角为零点,interval为轮播时间,以秒为单位,建议在30-120范围内。显示Banner广告:

if (TGSDK.CouldShowAd("Your scene ID from yomob")) {
    TGSDK.ShowAd("Your scene ID from yomob");
}

需要时还可以关闭Banner广告:

TGSDK.CloseBanner("Scene ID");

[注意] 当不需要展示 Banner 广告或者展示 Banner 广告的视图被关闭销毁时,请一定调用 [TGSDK closeBanner:@"Scene ID"] 方法手动关闭 Banner 广告,否则会影响下一次的 Banner 广告正常展示。

6、高级用法

开启 Debug 模式

开启 debug 模式后可以看到更多 Log 输出,方便定位遇到的问题。但需要注意

在生产环境请勿使用 Debug 模式,另外,如果需要启动 Debug 模式,请在调用初始化 API 前设置 Debug 模式的开启

using Together;

TGSDK.SetDebugModel(true);

设置广告预加载事件监听

在调用 PreloadAd 方法预先加载广告资源的过程中会产生一些事件通知,通过绑定回调函数来捕捉这些事件通知。示例:

// 使用 lambda 表达式
// 广告配置数据获取成功
TGSDK.PreloadAdSuccessCallback = (string ret) => {
};
// 广告配置数据获取失败
TGSDK.PreloadAdFailedCallback = (string error) => {
};
// 奖励视频广告已经准备好
TGSDK.AwardVideoLoadedCallback = (string ret) => {
};
// 插屏视频广告已经准备好
TGSDK.InterstitialVideoLoadedCallback = (string ret) => {
};
// 静态插屏广告已经准备好
TGSDK.InterstitialLoadedCallback = (string ret) => {
};


// 使用 Action<string>
public void OnPreloadAdSuccess(string ret) {
}
TGSDK.PreloadAdSuccessCallback = OnPreloadAdSuccess;

public void OnPreloadAdFailed(string error) {
}
TGSDK.PreloadAdFailedCallback = OnPreloadAdFailed;

public void OnAwardVideoLoadedCallback(string ret) {
}
TGSDK.AwardVideoLoadedCallback = OnAwardVideoLoadedCallback;

public void OnInterstitialVideoLoadedCallback(string ret) {
}
TGSDK.InterstitialVideoLoadedCallback = OnInterstitialVideoLoadedCallback;

public void OnInterstitialLoadedCallback(string ret) {
}
TGSDK.InterstitialLoadedCallback = OnInterstitialLoadedCallback;

【注意】PreloadAdSuccessCallback 只表示成功的获取了广告配置数据,并不代表广告本身加载完成,请不要根据此回调作为判断是否可以播放广告的依据

设置广告播放行为事件监听

在调用 ShowAd 方法播放广告的过程中会产生相应的事件通知,通过绑定回调函数可以捕捉这些事件通知,示例:

// 使用 lambda 表达式
// 广告成功开始播放回调
TGSDK.AdShowSuccessCallback = (string scene, string name) => {
};
// 广告播放失败回调
TGSDK.AdShowFailedCallback = (string scene, string name, string error) => {
};
// 广告关闭回调,是否奖励则在第三个参数award中
TGSDK.AdCloseCallback = (string scene, string name, bool award) => {
};
// 广告被用户点击的回调
TGSDK.AdClickCallback = (string scene, string name) => {
};

// 使用 Action<string>
public void OnAdShowSuccess(string scene, string name) {
}
TGSDK.AdShowSuccessCallback = OnAdShowSuccess;

public void OnAdShowFailed(string scene, string name, string error) {
}
TGSDK.AdShowFailedCallback = OnAdShowFailed;

public void OnAdClose(string scene, string name, bool award) {
}
TGSDK.AdCloseCallback = OnAdClose;

public void OnAdClick(string scene, string name) {
}
TGSDK.AdClickCallback = OnAdClick;

【注意】如果 banner 类型广告回调 TGSDK.AdShowFailedCallback 后说明 Banner 广告加载失败,广告没有正常显示,需要手动调用 TGSDK.CloseBanner 关闭当前展示的 Banner,然后可以再次尝试调用 TGSDK.ShowAd 重新展示 Banner 广告。

广告播放测试工具

此功能只在 TGSDK 1.6.5(含)以上版本中提供,建议升级您的 TGSDK 以获得更好的使用体验

请不要在生产环境使用此功能,此功能仅供测试

在测试阶段,你可以使用广告播放测试工具 API 来替代正常的广告播放 API,这样更方便你整体检测广告的加载情况和广告的运行情况

使用广告播放测试工具接口

TGSDK.ShowTestView("Your scene id from Yomob");

来替代广告播放接口

TGSDK.ShowAd("Your scene id from Yomob");

将会弹出如下图所示的 UI 界面,从中你可以检查广告插件的运行情况并通过点击准备好播放的广告插件来播放指定广告商的广告。

TGSDK_showTestView TGSDK_showTestView

付费用户追踪

此功能只在 TGSDK 1.7.0(含)以上版本中提供,建议升级您的 TGSDK 以获得更好的使用体验

Yomob在为您提供广告变现优化服务的同时,也提供内付费(IAP)和广告变现的联合优化服务,以增加您应用的总收入。为此,您需要接入付费相关的API,向我们发送用户付费行为数据,我们会提供如下相应优化功能:

  • 每日付费、人均付费、人均广告 + 付费总收入等数据统计。

  • 广告观看与付费行为的交叉分析,分析付费/非付费用户在广告观看行为上的差异。

  • 智能优化算法对于付费/非付费用户给予更为精准的广告推送,提升eCPM。

  • 可以针对付费行为进行个性化广告策略配置,如对付费用户减少广告展示(提升付费潜力)、对非付费用户增加广告展示,进而提升总收入。

付费用户追踪接口的具体形式为:

use Together;
TGSDK.TagPayingUser(TGPayingUser user,
                    float        currency,
                    float        currentAmount,
                    float        totalAmount);

参数说明:

  • user 用于标识用户的付费等级,目前可用的付费等级有:TGNonPayingUser(非付费用户)、TGSmallPaymentUser(小额付费用户)、TGMediumPaymentUser(中等额度付费用户)、TGLargePaymentUser(大额付费用户),具体额度等级用户可根据自身产品决定

  • currency 用户所在地区付费使用的货币标识,请遵循ISO 4217 标准

  • currentAmount 当前支付数额

  • totalAmount 用户累计支付总数额

调用建议:

每当用户成功完成一笔支付交易时通过该接口上报用户交易行为,如果不方便统计用户累计支付总额度的,用户累计支付总额度可以传 0

上报用户观看广告行为

如果开发者想了解广告场景对于用户的吸引力,可以通过 API 主动上报一些关于用户观看广告行为的数据。上报后,开发者在 Dashboard 相关页面可以查看并分析“场景展示 - 点击观看”的转化率情况,有助于开发者优化场景设计,以增加广告播放量进而增加总收入。

上报广告展示行为

TGSDK iOS 上报广告展示行为

如图所示,当用户通过产品 UI 明确意识到产品即将发生广告播放的行为,或是产品通过 UI 展现了让用户选择是否播放广告的控件,例如图示的产品展示了广告播放按钮让用户选择是否通过播放广告来获得收益时,请上报告知 TGSDK 这种行为

TGSDK.ShowAdScene("Your scene ID from yomob");

上报用户拒绝观看广告行为

TGSDK iOS 拒绝观看广告的行为

如图所示,当用户在明确意识到接下来要发生的广告播放行为的情况下,明确选择拒绝或放弃了这次广告播放,例如,当用户在图示的产品中明确看到了通过观看广告获得收益的播放按钮 UI,但是还是明确选择了 Give Up 放弃,那么请上报这个行为告知 TGSDK

TGSDK.ReportAdRejected("Your scene ID from yomob");

支持国内安卓多渠道分包

由于国内安卓市场的特殊性,你的产品如果在国内发行的话可能需要发布到多个不同的应用商店,这时你在初始化 TGSDK 时需要附带应用所发行的应用商店的渠道标记,即 ChannelId,渠道标记请参看国内安卓渠道表

using Together;

#if UNITY_IOS && !UNITY_EDITOR
TGSDK.Initialize("Your application id from yomob");
#elif UNITY_ANDROID && !UNITY_EDITOR
TGSDK.Initialize("Your application id", "Your Channel id");
#endif

当然,为了方便大家多渠道打包你的安卓应用,我们也提供通过从 AndroidManifest.xml 读取 AppId 和 ChannelId 来初始化 TGSDK,你需要做的是在你项目中的 AndroidManifest.xml 文件中增加两个项目

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.soulgame.tgsdksampleapp.android">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- 用于初始化 TGSDK -->
        <meta-data android:name="TGSDK_APPID" android:value="Your application id from Yomob" />
        <meta-data android:name="TGSDK_CHANNELID" android:value="Your channel id of app store" />

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

AndroidManifest.xml 中配置好 AppId 和 ChannelId 后,在你的代码里初始化 TGSDK 的时候你就无需再传这两个参数了。

using Together

#if UNITY_IOS && !UNITY_EDITOR
TGSDK.Initialize("Your application id from yomob");
#elif UNITY_ANDROID && !UNITY_EDITOR
TGSDK.Initialize();
#endif

由于 Unity 的跨平台特性,如果你需要在 iOS 平台依然使用上面的无参数初始化方法,那么你需要在你的 Info.plist 文件中增加两项

<key>TGSDK_APPID</key>
<string>Your application id from Yomob</string>
<key>TGSDK_CHANNELID</key>
<string>10006</string>

国内安卓渠道表

渠道ID中文名称
10010360手机助手
10040腾讯应用宝
10009小米应用商店
10041百度手机助手
10029华为应用市场
10042安卓市场
10024步步高应用商店
10035谷歌
10023可可软件商店
10037豌豆荚
10017安智市场
10043魅族应用商店
1000491助手
10034中国联通沃商店
10012联想乐商店
10026宇龙酷派应用商店
10028搜狗手机助手
10044金立应用商店
10032 中国电信天翼空间
10033中国移动
10001快用应用商店
10003 PP手机助手
10002 同步推应用商店
10005 iToos
10008易玩应用商店
10011拇指玩应用商店
10013金山应用商店
10015海马应用商店
10016 当乐应用商店
10018UC浏览器应用商店
10030优酷应用商店
10038卓易市场
10045手机qq
10046微信游戏
10047腾讯精品游戏
100484399游戏
10049乐视游戏
10050天天游戏
10021应用汇
10051新浪游戏
10052网易
10053Taptap
10054酷安
10055虫虫助手
10056朋友玩