简体 EN 繁体

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

目錄

1、導入 TGSDK 到工程

將 TGSDK 文件複製到項目

首先從 Yomob 官方下載頁 下載最新的 TGSDK 穩定版本。解壓後可以看到目錄結構如圖所示

TGSDK for Android 目录结构

使用 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_showTestView

付費用戶追踪

此功能只在 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 相關頁面可以查看並分析“場景展示- 點擊觀看”的轉化率情況,有助於開發者優化場景設計,以增加廣告播放量進而增加總收入。

上報廣告展示行為

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 ,渠道標記請參看國內安卓渠道表

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中文名稱
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朋友玩