简体 EN 繁体

目录

导入 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 依赖的链接库

libbz2.tbd
libc++.tbd
libresolv.9.tdb
libsqlite3.tbd
libxml2.tbd
libz.tbd
Accelerate.framework
AdSupport.framework
AppTrackingTransparency.framework (optional)
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.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>

初始化 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;
}

预加载广告资源

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

[TGSDK preloadAd:nil];

注意!!!你需要保证你的应用使用的 Bundle ID 要与你在 Yomob 网站上注册的一致,否则无法正常获得广告资源,无法正常显示广告

播放广告

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

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

注意!如果你的应用是非游戏应用,或者存在多个ViewController,则应该使用 show:WithViewController: 接口,将当前ViewController传入进来,否则会出现播放不正常的情况

高级用法

开启 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