简体 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 com.google.android.gms:play-services-location com.google.android.gms:play-services-basement com.google.android.gms:play-services-gcm

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 支持庫為強制依賴,請務必將其引入你的項目並且使用 26 版本以上的支持庫(支持庫向下兼容請勿擔心),否則可能會導致程序崩潰!

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 支持庫為強制依賴,請務必將其引入你的項目並且使用 26 版本以上的支持庫(支持庫向下兼容請勿擔心),否則可能會導致程序崩潰!

關於 Google AdMob 廣告

1.6.5 版本開始 YoMob 廣告 SDK 支持了 Google 的 AdMob 廣告。由於Google AdMob 廣告服務所屬與Google Player Services 的部分,所以需要參照《Google AdMob 官方指南》來將所需要的依賴添加到你的工程中。

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

關於 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中fuck.yomob
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 類型廣告回調 OnAdShowFailed 後說明 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朋友玩