最后更新于
July 15, 2022
如果一个应用已经选择了“不接受行为定向广告”,那我们不会对其展示横幅广告。
你不需要在Chartboost后台创建横幅广告活动。横幅广告通过 Exchange 广告交易平台进行分发展示,直接通过SDK调用即可。 在Chartboost后台的 App 应用分析里,可以查看横幅广告的数据分析。 如果需要的话,多个横幅广告可以同时展示。
创建横幅广告,你需要通过初始化语句 initWithSize:location:delegate: 提供广告尺寸、Chartboost广告位置和可选的代理信息。 与展示 intrinsicContentSize 对应的是横幅广告的CHBBannerSize。目前有三种横幅尺寸,分别是CHBBannerSizeStandard、CHBBannerSizeMediumCHBBannerSizeLeaderboard。 如果你已经设定了自动布局,那么你只需要设定长宽限定值即可。如果你手动设置框架值,请将其设定成和 CHBBannerSize 一样的大小,例如 - (void)createBanner { CHBBanner *banner = [[CHBBanner alloc] initWithSize:CHBBannerSizeStandard location:CBLocationMainMenu delegate:self]; banner.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:banner]; [NSLayoutConstraint activateConstraints:@[[banner.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], [banner.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor]]]; }
为了展示横幅广告,首先使用:[banner showFromViewController:self];
默认横幅广告会每30秒更新一次内容。你只需要调用一次 showFromViewController:,横幅广告便会自动更新展示。如果出现点击,横幅广告也会在点击后自动更新。
如果你想取消自动刷新,将 automaticallyRefreshesContent 设为 NO 即可。这种情况下,你需要调用 cache: 进行广告加载,并使用相应的代理方法去接收广告准备好展示的事件通知。例如: (void)cacheBanner { [self.banner cache]; } // Delegate methods (void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error { // Show banner after it has been cached if (event.ad.isCached) { [event.ad showFromViewController:self]; } else { // Handle error } } (void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error { // Cache new ad so the next time you want to show a banner it is ready. [event.ad cache]; }
可以为每一个横幅广告设定代理,这可以在横幅广告初始化或后续的阶段进行。以下是代理方法:
- (void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error说明:在缓存调用之后出现,从Chartboost服务器加载广告,不管是否成功缓存,都会出现 event 参数:包含与缓存广告事件的相关信息 error 参数:说明失败原因,若操作成功,则显示nil 讨论:当广告在缓存并成功展示后如何通知,如 (void)didCacheAd:(CHBCacheEvent *)event error:(nullable CHBCacheError *)error { if (error) { // Handle error } else { [event.ad showFromViewController:self]; // If auto-refresh is disabled. } }
- (void)willShowAd:(CHBShowEvent *)event;
说明:在showFromViewController后、展示广告前调用 event参数:包含即将被展示的广告的信息 error参数:说明失败原因,若操作成功,则显示nil 讨论:通知何时展示广告,如
- (void)willShowAd:(CHBShowEvent *)event { // Make any necessary UI updates}
在SDK版本低于8.1.0的iOS中,willShowAd 将显示如下
- (void)willShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error;
说明:在showFromViewController后、展示广告前出现 event参数:包含即将被展示的广告的信息 error参数:说明失败原因,若操作成功,则显示nil 讨论:通知何时展示广告,如
(void)willShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error { if (error) { // Handle error } else { // Make any necessary UI updates } }
- (void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error;说明:在showFromViewController后,不管是已经成功展示广告并记录了该展示,还是操作失败 event参数:包含被展示的广告的信息 error参数:说明失败原因,若操作成功,则显示nil 讨论:当广告展示完成的时候发出通知,如 (void)didShowAd:(CHBShowEvent *)event error:(nullable CHBShowError *)error { if (error) { // Handle error } else { [event.ad cache]; // If auto-refresh is disabled. } }
- (BOOL)shouldConfirmClick:(CHBClickEvent *)event confirmationHandler:(void(^)(BOOL))confirmationHandler;说明:当用户点击广告时,允许开发人员以此来处理此点击前的确认。 Event参数:包含广告点击的信息 confirmationHandler参数:仅当返回值为 YES 的时候执行,将出现 BOOL 进行确认 返回值:YES 表示用户点击广告时会弹出对话框暂停,让用户进行二次确认。NO 表示用户点击广告时无需进行二次确认。 警告:如果你让此代理函数返回值为 YES,请确保已经执行confirmationHandler,因为广告流会在此之前被暂停。如果使用弹出对话框来让用户进行二次确认确认,请确保执行 confirmationHandler 的时候将该对话框关闭。 讨论:返回值为 YES 的时候,需要具体实现一些代码来方法来触发 confirmationHandler,使得点击广告前二次确认。如果没有实现那些代码方法方法,则将直接跳过二次确认来处理广告点击。 如: (BOOL)shouldConfirmClick:(CHBClickEvent *)event confirmationHandler:(void(^)(BOOL))confirmationHandler if (self.needsClickConfirmation) { MyAwesomeAgeGate *ageGate = [[MyAwesomeAgeGate alloc] initWithCompletion:^(BOOL confirmed) { [ageGate dismissViewControllerAnimated:YES completion:^{ confirmationHandler(confirmed); }]; }]; [event.viewController presentViewController:ageGate animated:YES completion:nil]; return YES; } else { return NO; } }
- (void)didClickAd:(CHBClickEvent *)event error:(nullable CHBClickError *)error;说明:广告被点击的时候出现 event参数:包含广告点击的信息 error参数:说明失败原因,若操作成功,则显示nil 讨论:当广告被点击的时候发出通知,如果点击未能成功打开跳转链接,将出现解释失败的原因的错误信息 如: (void)didClickAd:(CHBClickEvent *)event error:(nullable CHBClickError *)error { if (error) { // Handle error } else { // Maybe pause ongoing processes like video or gameplay. } }
- (void)didFinishHandlingClick:(CHBClickEvent *)event error:(nullable CHBClickError *)error;说明:当用户点击关闭的时候 event参数:包含广告点击的信息 error参数:说明失败原因,若操作成功,则显示nil 讨论:当点击已被处理的时候发出通知,可能是用户在应用程序内打开浏览器或关闭应用商店快捷页面,或是用户在该应用外的地方打开了链接并回到应用,如 (void)didFinishHandlingClick:(CHBClickEvent *)event error:(nullable CHBClickError *)error { // Resume processes previously paused on didClickAd:error: implementation. }