简体 EN 繁体

目錄

1、導入 TGSDK 到工程

使用 CocoaPods

如果你使用 CocoaPods 來管理你 iOS 工程的依賴,那麼 TGSDK 同樣支持 CocoaPods,你可以按照如下方法來引入 TGSDK

首先去下載TGSDK 的iOS SDK 包,下載到zip 格式的壓縮包後解壓,你會在解壓縮後的文件夾中找到一個名為generate_podspec.py 的Python 腳本,到這個目錄下執行這個腳本

python ./generate_podspec.py

腳本執行成功後整個目錄結構會變成一個本地 CocoaPods Repo 的形式。

然後將剛剛通過 generate_podspec.py 腳本生成的私有庫作為依賴引入你的項目

例如,你剛剛通過 generate_podspec.py 腳本生成的私有庫目錄所在地址為

/Users/yomob/cocoapodsTGSDK

那麼你在你的項目 Podfile 文件中引入的方法為

platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
  pod 'TGSDK', :path => '/Users/yomob/cocoapodsTGSDK'
end

然後執行命令開始安裝 TGSDK

pod install

Cocos2d-x 工程使用 CocoaPods 需要的額外工作

如果你是 cocos2d-x 工程使用 CocoaPosd 來接入 TGSDK 的話,在上述操作執行完畢後還需要對你的工程做一些額外的設置,一共四處,都需要加入

$(inherited)

具體做法如圖:

cocoapods cocos2d-x 設置1 cocoapods cocod2d-x 設置2

強烈推薦(安利)使用CocoaPods 來接入TGSDK,方便又快捷,如果你使用CocoaPods 接入並完成了上面的操作,那麼直接跳到第二章去看如何使用TGSDK 吧,因為接入工作你已經做完了!

將 TGSDK 文件複製到項目

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

TGSDK 目錄結構

frameworksincluderesources 三個文件夾和 libTGSDK.x.x.x.a 靜態鏈接庫文件複製到你的項目中。

添加依賴

引入 TGSDK 依賴的鏈接庫

libc++.tbd
libresolv.9.tdb
libsqlite3.tbd
libxml2.tbd
libz.tbd
Accelerate.framework
AdSupport.framework
AudioToolbox.framework
AVFoundation.framework
CFNetwork.framework
CoreFoundation.framework
CoreGraphics.framework
CoreLocation.framework
CoreTelephony.framework
CoreMedia.framework
CoreMotion.framework
CoreVideo.framework
EventKit.framework
Foundation.framework
GLKit.framework
iAd.framework
ImageIO.framework
MediaPlayer.framework
MessageUI.framework
MobileCoreServices.framework
QuartzCore.framework
SafariServices.framework
Security.framework
Social.framework
StoreKit.framework
SystemConfiguration.framework
VideoToolbox.framework
WatchConnectivity.framework
WebKit.framework
JavaScriptCore.framework
UIKit.framework

如果你使用 cocos2d-x 還需要額外添加依賴 GameController.framework

注意! WatchConnectivity.framework 為廣告商 AdColony 所依賴,該系統庫可能導致某些舊版本的 Unity3D 出包的 iap 無法通過蘋果審核,可通過更新 Unity3D 版本或刪除 AdColony.frameworkWatchConnectivity.framework 來解決

注意!如果想要支持iOS8.0或更早的版本,必須將 CoreFoundation.frameworkWatchConnectivity.framework 等只有iOS9.0以上才能夠使用的庫設置為Optional,同時TGSDK會限制相關SDK的啟動

TGSDK 目錄下的 libTGSDK.x.x.x.x.x.a 靜態鏈接庫文件和 frameworks 目錄中的庫文件全部引入到工程中。

TGSDK iOS 依賴引入

TGSDK 目錄下的 resources 目錄中的資源文件全部引入到工程中。

TGSDK iOS 資源引入

申請相關權限

由於廣告商Adcolony 提供的廣告SDK 依賴EventKit.framework ,根據蘋果官方文檔的說明,自iOS 10.0 之後需要申請相關的權限否則會導致程序的崩潰。所以需要在 Info.plist 文件中加入如下配置項

<key>NSCalendarsUsageDescription</key>
<string>Some ad content may create a calendar event.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Some ad content may require access to the photo library.</string>
<key>NSCameraUsageDescription</key>
<string>Some ad content may access camera to take picture.</string>
<key>>NSMotionUsageDescription</key>
<string>Some ad content may require access to accelerometer for interactive ad experience.</string>

注意! 上述許可權均為廣告商 AdColony 所需要申請,如果產品對許可權敏感或因為許可權問題導致無法通過蘋果審核,可以通過刪除 AdColony.framework 廣告外掛程式並移除上述許可權申請來解決

有關 Google AdMob 廣告對接的重要說明

根據 Google AdMob 最新對接文檔的要求,你項目的 Info.plist 文件中必須添加如下配置項

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-8385434067230970~5771659843</string>

否則你的項目在使用 Google AdMob 廣告的過程中會出現崩潰。

但是上述示例中填寫的ca-app-pub-8385434067230970~5771659843 這個是我們在Google AdMob 註冊的測試用的廣告賬戶應用ID,只方便用來做測試,不能夠用於線上生產環境。

【注意! ! ! 】當你的產品準備正式上線時,請聯繫我們的運營人員,獲取針對你這款應用使用的廣告賬戶 ID,

並在從我們運營人員那裡獲取到廣告賬戶 ID 後,需要你正確的替換掉對應的值,以確保你可以正確的使用 Google AdMob 廣告服務。

調整編譯設置

Build Settings ----> Other Linker Flags 設置項目中增加 -ObjC 配置項。

【注意! ! ! 】Cocos2d-x 的 iOS 工程要特別注意,由於 Cocos2d-x 工程自身特點,工程的 Other Linker Flags 一共有四項,需要每一項都加上 -ObjC 選項,一共要加四次,這很重要! ! !

Cocos2d-x -ObjC 設置

Cocos2d-x 支持

如果你的產品使用了Cocos2d-x 引擎開發,我們還提供方便開發者在Cocos2d-x 項目中使用TGSDK 的封裝以及JavaScript 和Lua 綁定支持,具體請移步這裡

BitCode 支持

1.6.1 版本開始 iOS 版本(含對 Unity 的支持)的廣告 SDK 支持 iOS 的 BitCode 技術,使用者可以放心的打開項目對 BitCode 的支持。

【注意】支持 BitCode 後SDK 本身的體積會有一定的增大,用戶打包的iOS 工程體積也會相應的增大,但是用戶從蘋果商店下載到的應用體積會大幅度的減小,所以建議用戶請放心開啟 BitCode 支持

iOS 14 适配

由于从 iOS14 开始将支持 AppTrackingTransparency(简称ATT)和 SKAdNetwork。需要开发者的产品针对 iOS14 做如下的特殊适配。

AppTrackingTransparency 权限申请

AppTrackingTransparency 使开发者的应用在获取用户的 IDFA 时需要弹窗并经过用户的同意,提高了用户隐私透明度。如果需要向用户申请获取 IDFA 则需要在 Info.plist 文件中增加如下权限申请配置。

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

SKAdNetworks ID 配置

SKAdNetwork 是 Apple 针对iOS 14 的归因解决方案,可在保护用户隐私的同时完成广告归因。 使用 SKAdNetwork 后,即使 IDFA 不可用,也可以正确获得应用安装的归因结果。 为了支持使用 Apple 的转化跟踪SKAdNetwork,需要在 Info.plist 文件中增加如下广告商的归因 SKAdNetwork ID

<key>SKAdNetworkItems</key>
<array>

    <!-- ironsource -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>su67r6k2v3.skadnetwork</string>
    </dict>


    <!-- chartboost -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>f38h382jlk.skadnetwork</string>
    </dict>


    <!-- guangdiantong -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>f7s53z58qe.skadnetwork</string>
    </dict>


    <!-- sigmob -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>58922nb4gd.skadnetwork</string>
    </dict>


    <!-- unityads -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4dzt52r2t5.skadnetwork</string>
    </dict>


    <!-- mobvista -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>kbd757ywx3.skadnetwork</string>
    </dict>


    <!-- tapjoy -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ecpz2srf59.skadnetwork</string>
    </dict>


    <!-- applovin -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ludvb6z3bs.skadnetwork</string>
    </dict>


    <!-- vungle -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>gta9lk7p23.skadnetwork</string>
    </dict>


    <!-- admob -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cstr6suwn9.skadnetwork</string>
    </dict>


    <!-- bytedance -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>238da6jt44.skadnetwork</string>
    </dict>

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>22mmun2rn5.skadnetwork</string>
    </dict>


    <!-- adcolony -->

    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4pfyvq9l8r.skadnetwork</string>
    </dict>


</array>

2、初始化 TGSDK

Yomob官方網站 為產品註冊好賬戶後,你將會從網站得到你的產品對應的 AppID 使用這個參數來初始化 TGSDK

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [TGSDK initialize:@"Your application ID from yomob"
             callback:nil];
    [TGSDK preloadAd:nil];
    return YES;
}

3、預加載廣告資源

為了有充裕的時間來加載廣告資源,建議儘早調用預加載 API 來開始廣告的加載工作。甚至你可以在初始化 TGSDK 的同時就開始調用廣告預加載 API 來預加載廣告。  

[TGSDK preloadAd:nil];

注意! ! !你需要保證你的應用使用的 Bundle ID 要與你在 Yomob 網站上註冊的一致,否則無法正常獲得廣告資源,無法正常顯示廣告

4、播放廣告

通過Yomob 官方網站 為註冊的應用建立廣告場景,獲得相應的廣告場景ID 後,通過場景ID 參數來判斷廣告是否已經準備好,如果對應場景的廣告已經準備好,則可以調用播放API 來播放對應場景的廣告。

if ([TGSDK couldShowAd:@"Your scene id from Yomob") {
    [TGSDK showAd:@"Your scene id from Yomob"];
}

注意!如果你的應用是非遊戲應用,或者存在多個ViewController,則應該使用 show:WithViewController: 接口,將當前ViewController傳入進來,否則會出現播放不正常的情況

5、高級用法

開啟 Debug 模式

開啟 debug 模式後可以看到更多 Log 輸出,方便定位遇到的問題。但需要注意

在生產環境請勿使用 Debug 模式,另外,如果需要啟動 Debug 模式,請在調用初始化 API 前設置 Debug 模式的開啟

[TGSDK setDebugModel:YES];

設置廣告預加載事件監聽

你可以通過一個 delegate 來對廣告的加載過程進行監控。

@protocol TGPreloadADDelegate <NSObject>
@optional

// 廣告預配置獲取成功
- (void) onPreloadSuccess:(NSString*)result;

// 廣告配置獲取失敗
- (void) onPreloadFailed:(NSString*)result WithError:(NSError*) error;

// 獎勵視頻廣告已就緒
- (void) onAwardVideoLoaded:(NSString* _Nonnull) result;

// 靜態插屏廣告已就緒
- (void) onInterstitialLoaded:(NSString* _Nonnull) result;

// 插屏视频广告已就绪
- (void) onInterstitialVideoLoaded:(NSString* _Nonnull) result;

@end

在調用預加載 API 時傳入 delegate 來對預加載過程進行監控

[TGSDK preloadAd:id<TGPreloadADDelegate> delegate];

【注意】onPreloadSuccess 只表示成功的獲取了廣告配置數據,並不代表廣告本身加載完成,請不要根據此回調作為判斷是否可以播放廣告的依據

設置廣告播放行為事件監聽

在廣告播放過程中可以通過一個 delegate 來監控廣告播放過程中產生的一系列事件。

@protocol TGADDelegate <NSObject>
@optional

// 廣告播放成功,並回調sceneId和對應廣告商result,下同
- (void) onShow:(NSString* _Nonnull)scene Success:(NSString* _Nonnull)result;

// 廣告播放失敗
- (void) onShow:(NSString* _Nonnull)scene Failed:(NSString* _Nonnull)result Error:(NSError* _Nullable)error;

// 廣告被點擊
- (void) onAD:(NSString* _Nonnull)scene Click:(NSString* _Nonnull)result;

// 廣告關閉,並回調award代表是否給獎勵
- (void) onAD:(NSString* _Nonnull)scene Close:(NSString* _Nonnull)result Award:(BOOL)award;

@end

通過下列 API 來設置廣告行為監控的 delegate

[TGSDK setADDelegate:id<TGADDelegate> delegate];

【注意】如果 Banner 類型廣告回調 onShow: Failed: Error: 說明廣告加載失敗,廣告沒有正常顯示,需要手動調用 [TGSDK closeBanner:scene] 關閉當前展示的 Banner,然後可以再次嘗試調用 [TGSDK showAd:scene] 重新展示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