你正在使用老旧的 TGSDK 广告 SDK 版本!!!
目錄
1、導入 TGSDK 到工程
將 TGSDK 文件複製到項目
首先從 Yomob 官方下載頁 下載最新的 TGSDK 穩定版本。解壓後可以看到目錄結構如圖所示

使用 Android Studio 的 Gradle 構建
如果使用 Android Studio 或 Gradle 構建你的 Android 項目,那麼只需要將 TGSDK 目錄中的所有 aar
文件導入你的項目即可。
使用 Eclipse 的 Ant 構建
如果使用 Eclipse 或 Ant 構建你的 Android 項目,那麼你需要將 TGSDK 目錄中子目錄 for_eclipse
中的全部文件按照相應目錄導入到你的項目中。
加入需要的依賴庫
部分廣告商的 SDK 運行依賴一些公共的第三方庫,所以需要手動將這些依賴的庫文件導入到你的項目中,這些庫文件在 dependencies
文件夾下。
請務必將依賴的第三方庫全部導入你的項目,否則在程序運行時可能因為缺少某些必要的支持而導致崩潰
所依賴的第三方庫文件全部為jar
形式,如果你使用Android Studio 構建你的項目並且希望通過Gradle 來管理你的依賴而不使用jar
包的形式,那麼你也可以通過下述方式來將所依賴的第三方庫導入你的項目。
首先在你項目的主工程 build.gradle
文件中 repositories
節點加入 jcenter
buildscript {
repositories {
mavenCentral();
// ******** 加入 jcenter ********
jcenter()
// ******** Add google ********
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
}
}
allprojects {
repositories {
// ******** 加入 jcenter ********
jcenter()
// ******** Add google ********
google()
}
}
然後在你的 Module
模塊的 build.gradle
文件中加入相應第三方庫的依賴配置
dependencies {
compile 'com.squareup.okio:okio:1.14.0'
compile 'com.squareup.okhttp3:okhttp:3.10.0'
// require GooglePlayService
compile 'com.google.android.gms:play-services-ads:15.0.1'
compile 'com.google.android.gms:play-services-ads-base:15.0.1'
compile 'com.google.android.gms:play-services-ads-identifier:15.0.1'
compile 'com.google.android.gms:play-services-location:15.0.1'
compile 'com.google.android.gms:play-services-basement:15.0.1'
compile 'com.google.android.gms:play-services-gass:15.0.1'
// by Facebook
compile 'com.android.support:recyclerview-v7:25.3.1'
// by Vungle
compile 'com.tonyodev.fetch:fetch:1.1.5'
compile 'com.squareup.okhttp3:logging-interceptor:3.7.0'
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.google.code.gson:gson:2.6'
// by Bytedance
compile 'pl.droidsonroids.gif:android-gif-drawable:1.2.6'
// by Oneway
compile 'com.liulishuo.okdownload:okdownload:1.0.5'
compile 'com.liulishuo.okdownload:sqlite:1.0.5'
compile 'com.liulishuo.okdownload:okhttp:1.0.5'
}
加入 Android Support V4 支持庫
【注意】Android Support v4 支持庫為強制依賴,請務必將其引入你的項目並且使用 26 版本以上的支持庫(支持庫向下兼容請勿擔心),否則可能會導致程序崩潰!
部分廣告的顯示需要 android.support.v4
庫的支持,所以請將其引入到你的項目中。如果你的項目使用 Android Studio 則可以編輯項目的 build.gradle
文件加入
dependencies {
compile 'com.android.support:support-v4:24.+'
}
如果你的項目使用 Eclipse 或者是 Unity 項目,我們在 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 支持庫為強制依賴,請務必將其引入你的項目並且使用 24 版本以上的支持庫(支持庫向下兼容請勿擔心),否則可能會導致程序崩潰!
加入 Google Play Services 支持
如果你的產品最終要發佈到 Google Play 應用商店,那麼你需要在你的項目中加入 Google Play Services 支持,因為我們的廣告會依賴這個服務。
只有發佈到 GooglePlay 商店的應用才需要 Google Play Services,如果你的產品只在國內安卓渠道發行,那麼不需要接入 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
關於 Android 7.0許可權
-
1.接入sdk打包之前必須將
uses_provider.txt
文件中的內容複製粘貼到AndroidManifest.xml
中的<application>
節點內Eclipse開發者需要將文件中的`$ {applicationId}`替換成app的包名
-
2.混淆設定檔中加上: -keep class android.support.v4.*{ ;} 避免support-V4包中的FileProvider程式碼被混淆。
修改 AndroidManifest.xml 文件
Eclipse開發者需要將 android_manifest.txt
文件中的內容複製粘貼到你項目使用的 AndroidManifest.xml
文件的 <application></application>
節點之間。
所有的開發者都需要將 uses_permissions.txt
文件中的內容複製粘貼到你項目使用的 AndroidManifest.xml
文件中,且 <uses-permission>
節點位置應於 <application>
節點同級。
<application>
<activity>
......
</activity>
</application>
<uses-permission android:name="xxxx" />
<uses-permission android:name="xxxx" />
<uses-permission android:name="xxxx" />
如果使用 Proguard
如果你的項目使用了 proguard
,你需要將 proguard-project.txt
文件中的內容複製粘貼到你項目使用的 proguard
配置文件中。
Cocos2d-x 支持
如果你的產品使用了Cocos2d-x 引擎開發,我們還提供方便開發者在Cocos2d-x 項目中使用TGSDK 的封裝以及JavaScript 和Lua 綁定支持,具體請移步這裡
2、初始化 TGSDK
從 Yomob官方網站 為產品註冊好賬戶後,你將會從網站得到你的產品對應的 AppID
使用這個參數來初始化 TGSDK

不要忘記在 Activity 的生命週期回調方法中調用 TGSDK 的同名方法
如果你的產品在國內髮型,並需要在多個應用渠道進行髮型,初始化的方法略有不同,具體請參見《支持多渠道分包》
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TGSDK.initialize(
this,
"Your application ID from yomob",
null);
}
@Override
protected void onStart() {
super.onStart();
TGSDK.onStart(this);
}
@Override
protected void onStop() {
super.onStop();
TGSDK.onStop(this);
}
@Override
protected void onPause() {
super.onPause();
TGSDK.onPause(this);
}
@Override
protected void onResume() {
super.onResume();
TGSDK.onResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
TGSDK.onDestroy(this);
}
@Override
protected void onActivityResult(int reqCode, int resCode, Intent data) {
super.onActivityResult(reqCode, resCode, data);
TGSDK.onActivityResult(this, reqCode, resCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
TGSDK.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
}
3、預加載廣告資源
為了有充裕的時間來加載廣告資源,建議儘早調用預加載 API 來開始廣告的加載工作。甚至你可以在初始化 TGSDK 的同時就開始調用廣告預加載 API 來預加載廣告。
TGSDK.preloadAd(activity);
注意! ! !你的應用使用的包名( package name )必須和你在 Yomob 網站上註冊的一致,否則可能無法正常加載廣告資源,無法正常顯示廣告
4、播放廣告
通過Yomob 官方網站 為註冊的應用建立廣告場景,獲得相應的廣告場景ID 後,通過場景ID 參數來判斷廣告是否已經準備好,如果對應場景的廣告已經準備好,則可以調用播放API 來播放對應場景的廣告。
if (TGSDK.couldShowAd("Your scene ID from yomob")) {
TGSDK.showAd(activity, "Your scene ID from yomob");
}
5、Banner類型廣告的播放
針對Banner廣告的特殊性,需要提前設置Banner廣告的類型以及位置:
TGSDK.setBannerConfig(String scene, TGBannerType type,
int x, int y,
int width, int height,
int interval);
參數解釋:
-
scene
Banner 廣告對應註冊的廣告場景 ID -
type
Banner 廣告尺寸類型, 其中TGBannerType
分為三種類型:
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(activity, "Your scene ID from yomob");
}
需要時還可以關閉Banner廣告:
TGSDK.closeBanner(Activity activity, "Your scene ID from yomob")
[注意] 當不需要展示Banner 廣告或者展示Banner 廣告的視圖被關閉銷毀時,請一定調用
TGSDK.closeBanner(activity, scene)
方法手動關閉Banner 廣告,否則會影響下一次的Banner 廣告正常展示。
6、高級用法
開啟 Debug 模式
開啟 debug 模式後可以看到更多 Log 輸出,方便定位遇到的問題。但需要注意
在生產環境請勿使用 Debug 模式,另外,如果需要啟動 Debug 模式,請在調用初始化 API 前設置 Debug 模式的開啟
TGSDK.setDebugModel(true);
設置廣告預加載事件監聽
你可以通過設置一個 listener
來監控廣告資源的加載情況。
TGSDK.preloadAd(new ITGPreloadListener() {
@Override
public void onPreloadSuccess(String result) {
// 廣告配置獲取成功
}
@Override
public void onPreloadFailed(String scene, String error) {
// 廣告配置獲取失敗
}
@Override
public void onAwardVideoLoaded(String result) {
//獎勵視頻已就緒
}
@Override
public void onInterstitialLoaded(String result) {
//靜態插屏已就緒
}
@Override
public void onInterstitialVideoLoaded(String result) {
//插屏視頻已就緒
}
});
【注意】
onPreloadSuccess
只表示成功的獲取了廣告配置數據,並不代表廣告本身加載完成,請不要根據此回調作為判斷是否可以播放廣告的依據
設置廣告播放行為事件監聽
在廣告播放過程中可以通過一個 delegate
來監控廣告播放過程中產生的一系列事件。
TGSDK.setADListener(new ITGADListener() {
@Override
public void onShowSuccess(String scene, String result) {
//廣告開始播放(场景id, 广告商名称)
}
@Override
public void onShowFailed(String scene, String result, String error) {
//廣告播放失敗(场景id, 广告商名称)
}
@Override
public void onADClick(String scene, String result) {
//用戶點擊了廣告,正在跳轉到其他頁面(场景id, 广告商名称)
}
@Override
public void onADClose(String scene, String result, boolean couldReward) {
//廣告關閉(场景id, 广告商名称, 奖励视频是否可以获取奖励)
}
});
【注意】
onADComplete
事件只代表視頻廣告的視頻部分播放結束,並不代表整體廣告行為結束,請不要使用該事件作為廣告結束的依據,廣告結束應使用onADClose
事件【See】Banner廣告在
onShowFailed
回檔後說明Banner廣告加載失敗,廣告沒有正常顯示,需要手動調用TGSDK.closeBanner
關閉當前展示的Banner,然後可以再次嘗試調用TGSDK.showAd
重新展示Banner廣告.
廣告播放測試工具
此功能只在 TGSDK 1.6.5(含)以上版本中提供,建議升級您的 TGSDK 以獲得更好的使用體驗
請不要在生產環境使用此功能,此功能僅供測試
在測試階段,你可以使用廣告播放測試工具 API 來替代正常的廣告播放 API,這樣更方便你整體檢測廣告的加載情況和廣告的運行情況
使用廣告播放測試工具接口
TGSDK.showTestView(activity, "Your scene id from Yomob");
來替代廣告播放接口
TGSDK.showAd(activity, "Your scene id from Yomob");
將會彈出如下圖所示的 UI 界面,從中你可以檢查廣告插件的運行情況並通過點擊準備好播放的廣告插件來播放指定廣告商的廣告。

付費用戶追踪
此功能只在 TGSDK 1.7.0(含)以上版本中提供,建議升級您的 TGSDK 以獲得更好的使用體驗
Yomob在為您提供廣告變現優化服務的同時,也提供內付費(IAP)和廣告變現的聯合優化服務,以增加您應用的總收入。為此,您需要接入付費相關的API,向我們發送用戶付費行為數據,我們會提供如下相應優化功能:
-
每日付費、人均付費、人均廣告 + 付費總收入等數據統計。
-
廣告觀看與付費行為的交叉分析,分析付費/非付費用戶在廣告觀看行為上的差異。
-
智能優化算法對於付費/非付費用戶給予更為精準的廣告推送,提升eCPM。
-
可以針對付費行為進行個性化廣告策略配置,如對付費用戶減少廣告展示(提升付費潛力)、對非付費用戶增加廣告展示,進而提升總收入。
付費用戶追踪接口的具體形式為:
TGSDK.tagPayingUser(TGPayingUser user,
float currency,
float currentAmount,
float totalAmount);
參數說明:
-
user 用於標識用戶的付費等級,目前可用的付費等級有:TGNonPayingUser(非付費用戶)、TGSmallPaymentUser(小額付費用戶)、TGMediumPaymentUser(中等額度付費用戶)、TGLargePaymentUser(大額付費用戶),具體額度等級用戶可根據自身產品決定
-
currency 用戶所在地區付費使用的貨幣標識,請遵循ISO 4217 標準
-
currentAmount 當前支付數額
-
totalAmount 用戶累計支付總數額
調用建議:
每當用戶成功完成一筆支付交易時通過該接口上報用戶交易行為,如果不方便統計用戶累計支付總額度的,用戶累計支付總額度可以傳 0
上報用戶觀看廣告行為
如果開發者想了解廣告場景對於用戶的吸引力,可以通過 API 主動上報一些關於用戶觀看廣告行為的數據。上報後,開發者在Dashboard 相關頁面可以查看並分析“場景展示- 點擊觀看”的轉化率情況,有助於開發者優化場景設計,以增加廣告播放量進而增加總收入。
上報廣告展示行為

如圖所示,當用戶通過產品UI 明確意識到產品即將發生廣告播放的行為,或是產品通過UI 展現了讓用戶選擇是否播放廣告的控件,例如圖示的產品展示了廣告播放按鈕讓用戶選擇是否通過播放廣告來獲得收益時,請上報告知TGSDK 這種行為
TGSDK.showAdScene("Your scene ID from yomob");
上報用戶拒絕觀看廣告行為

如圖所示,當用戶在明確意識到接下來要發生的廣告播放行為的情況下,明確選擇拒絕或放棄了這次廣告播放,例如,當用戶在圖示的產品中明確看到了通過觀看廣告獲得收益的播放按鈕UI,但是還是明確選擇了Give Up 放棄,那麼請上報這個行為告知TGSDK
TGSDK.reportAdRejected("Your scene ID from yomob");
支持國內安卓多渠道分包
由於國內安卓市場的特殊性,你的產品如果在國內發行的話可能需要發佈到多個不同的應用商店,這時你在初始化TGSDK 時需要附帶應用所發行的應用商店的渠道標記,即ChannelId
,渠道標記請參看國內安卓渠道表
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TGSDK.initialize(
this,
"Your application ID from yomob",
"Your channel ID of App Store",
null);
}
@Override
protected void onStart() {
super.onStart();
TGSDK.onStart(this);
}
@Override
protected void onStop() {
super.onStop();
TGSDK.onStop(this);
}
@Override
protected void onPause() {
super.onPause();
TGSDK.onPause(this);
}
@Override
protected void onResume() {
super.onResume();
TGSDK.onResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
TGSDK.onDestroy(this);
}
@Override
protected void onActivityResult(int reqCode, int resCode, Intent data) {
super.onActivityResult(reqCode, resCode, data);
TGSDK.onActivityResult(this, reqCode, resCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
TGSDK.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
}
當然,為了方便大家多渠道打包你的安卓應用,我們也提供通過從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 的時候你就無需再傳這兩個參數了。
class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TGSDK.initialize(
this,
null);
}
@Override
protected void onStart() {
super.onStart();
TGSDK.onStart(this);
}
@Override
protected void onStop() {
super.onStop();
TGSDK.onStop(this);
}
@Override
protected void onPause() {
super.onPause();
TGSDK.onPause(this);
}
@Override
protected void onResume() {
super.onResume();
TGSDK.onResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
TGSDK.onDestroy(this);
}
@Override
protected void onActivityResult(int reqCode, int resCode, Intent data) {
super.onActivityResult(reqCode, resCode, data);
TGSDK.onActivityResult(this, reqCode, resCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
TGSDK.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
}
國內安卓渠道表
渠道ID 中文名稱 10010 360手機助手 10040 騰訊應用寶 10009 小米應用商店 10041 百度手機助手 10029 華為應用市場 10042 安卓市場 10024 步步高應用商店 10035 谷歌 10023 可可軟件商店 10037 豌豆莢 10017 安智市場 10043 魅族應用商店 10004 91助手 10034 中國聯通沃商店 10012 聯想樂商店
10026 宇龍酷派應用商店
10028 搜狗手機助手 10044 金立應用商店
10032 中國電信天翼空間 10033 中國移動 10001 快用應用商店 10003 PP手機助手 10002 同步推應用商店 10005 iToos 10008 易玩應用商店 10011 拇指玩應用商店 10013 金山應用商店 10015 海馬應用商店 10016 當樂應用商店 10018 UC瀏覽器應用商店 10030 優酷應用商店 10038 卓易市場 10045 手機qq 10046 微信游戲 10047 騰訊精品遊戲 10048 4399遊戲 10049 樂視遊戲 10050 天天遊戲 10021 應用匯 10051 新浪游戲 10052 網易 10053 Taptap 10054 酷安 10055 蟲蟲助手 10056 朋友玩