SDK

1. 请求展示位置

首先, 在代码中引入TJPlacement.h

Objective-C
Swift
#import <Tapjoy/TJPlacement.h>

其次,创建TJPlacement类实例并初始化。请确保您代码中的Placement名称和控制面板上的完全一致。同时需要实现相关回调函数。

Objective-C
Swift
TJPlacement *p = [TJPlacement placementWithName:@"Main Menu" delegate:self];

最后,展示广告。

Objective-C
Swift
[p requestContent];

注意: 在请求广告之前,Tapjoy connect调用成功。请不要在TJC_CONNECT_SUCCESS notification之前请求广告。

2. 缓存广告内容

为了最佳用户体验,请在用户观看内容之前提前缓存。比如,如果placement是您主菜单的一个按钮,您可能想要在应用开始时,Tapjoy连接成功后请求内容。如果您最后才请求内容,用户有可能要等内容加载一段时间。

3. TJPlacement 回调

为了得到广告请求相关信息,需要实现以下TJPlacementDelegate方法:

Objective-C
Swift
- (void)requestDidSucceed:(TJPlacement*)placement{}  // Called when the content request returns from Tapjoy's servers. Does not necessarily mean that content is available.
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{} //This is called when the content is actually available to display.
- (void)contentDidAppear:(TJPlacement*)placement{} 
- (void)contentDidDisappear:(TJPlacement*)placement{}

4. 展示广告位置

展示广告,可以调用一下函数:

Objective-C
Swift
[p showContentWithViewController: nil];

注意: 如果您在showContentWithViewController 中传’nil‘, Tapjoy SDK会创建自己的view contrroller来展示广告。在多数情况下,这是最安全的选择。如果在某些情况下,您App中包括复制的view 继承关系或者您想要自己管理广告展示,您也可以传相应的view controllor到showContentWithViewController。 在showContentWithViewController 传最高层的view并且在Tapjoy广告播放结束之前不被其他view覆盖非常重要。

真正展示内容之前,请检查内容已经准备好:

Objective-C
Swift
if (p.isContentReady) {
   [p showContentWithViewController: nil];
}
else {
  //handle situation where there is no content to show, or it has not yet downloaded.
}    

注意: y当一个placement的内容有可能含有视频的时候,您需要将应用的声音调到静音,否则视频的声音和您的应用的声音可能会冲突。

通常要在contentIsReady发生之后调用展示内容。这样可以保证这些内容已经在用户的设备上,用户可以没有延迟的看到内容,也就是说上述代码中p.isContentReady为true。

5. 重新请求广告内容

一旦广告成功展示给用户,您需要重新请求广告(比如再次调用*[p requestContent];* )来加载广告,不能直接调用*[p showContentWithViewController: nil];*再次展示。

6. 处理Tapjoy广告Action请求

一些Tapjoy广告类型,比如Reward以及IAP促销,要求您的代码基于广告内容所传递的参数采取行动。比如,Reward广告要求将事物名称(字符串)以及数量(整数)返回给用户。当然获得Reward以后用户具体奖励仍然是由您的应用来决定。下列委托方法只适用于这些特殊的广告类型:

Objective-C
Swift
- (void)placement:(TJPlacement*)placement didRequestPurchase:(TJActionRequest*)request productId:(NSString*)productId {
        //called when user clicks the product link in IAP promotion content
        //implement code here to trigger IAP purchase flow for item  here
}
- (void)placement:(TJPlacement*)placement didRequestReward:(TJActionRequest*)request itemId:(NSString*)itemId quantity:(int)quantity {
        //called when the reward content is closed by the user
        //implement code here to give the player copies of item 
}    

请注意onRewardRequest并不是Tapjoy奖励回调,它只用于Reward类型广告。

7. 设置进入点

您可以告诉Tapjoy每一个展示位置的“进入点”。这个功能是可选的。我们提供了多种选择:

Objective-C
Swift
TJEntryPointUnknown //Not set, but removes any value that was already set
TJEntryPointOther
TJEntryPointMainMenu
TJEntryPointHud
TJEntryPointExit
TJEntryPointFail
TJEntryPointComplete
TJEntryPointInbox 
TJEntryPointInitialisation
TJEntryPointStore 

您需要在创建展示位置之后设置进入点,但是一定要在请求广告内容之前:

Objective-C
Swift
TJPlacement *placement = [TJPlacement placementWithName:@"myPlacement" delegate:nil];
[placement setEntryPoint:TJEntryPointMainMenu];
[placement requestContent];