
它IMBanner只是一个用于UIView显示 HTML 广告的子类。InMobi SDK 提供了两种实现横幅广告的机制:
程序化实例化
1. 导入头文件并在文件中声明 Banner 实例ViewController.h,或者导入框架并在ViewController.swift文件中声明 Banner 实例。您的ViewController头文件应如下所示:
<span class="hljs-meta">#import <span class="hljs-string"><UIKit/UIKit.h> </span></span>
<span class="hljs-keyword">@import</span> InMobiSDK;
<span class="hljs-class"><span class="hljs-keyword">@interface</span> <span class="hljs-title">ViewController</span> : <span class="hljs-title">UIViewController</span> <<span class="hljs-title">IMBannerDelegate</span>> </span>
<span class="hljs-keyword">@property</span> (<span class="hljs-keyword">nonatomic</span>, <span class="hljs-keyword">strong</span>) IMBanner *banner;
<span class="hljs-keyword">@end</span>
<span class="hljs-keyword">import</span> UIKit
<span class="hljs-keyword">import</span> InMobiSDK
<span class="hljs-keyword">class</span> <span class="hljs-title class_">ViewController</span>: <span class="hljs-type">UIViewController</span>, <span class="hljs-type">IMBannerDelegate</span> {
<span class="hljs-keyword">var</span> banner: IMBanner?
}
2. 实例化横幅对象。您的ViewController.m文件应如下所示:
- (<span class="hljs-type">void</span>)viewDidLoad {
[<span class="hljs-variable language_">super</span> viewDidLoad];
<span class="hljs-keyword">self</span>.banner = [[IMBanner alloc] initWithFrame: <span class="hljs-built_in">CGRectMake</span>(<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">320</span>, <span class="hljs-number">50</span>) placementId:<placementId>];
<span class="hljs-keyword">self</span>.banner.delegate = <span class="hljs-keyword">self</span>;
[<span class="hljs-keyword">self</span>.view addSubview:<span class="hljs-keyword">self</span>.banner];
[<span class="hljs-keyword">self</span>.banner load];
}
override func <span class="hljs-title function_ invoke__">viewDidLoad</span>() {
super.<span class="hljs-title function_ invoke__">viewDidLoad</span>()
banner = IMBanner.<span class="hljs-title function_ invoke__">init</span>(<span class="hljs-attr">frame</span>: <span class="hljs-title function_ invoke__">CGRect</span>(<span class="hljs-attr">x</span>: <span class="hljs-number">0</span>, <span class="hljs-attr">y</span>: <span class="hljs-number">0</span>, <span class="hljs-attr">width</span>: <span class="hljs-number">320</span>, <span class="hljs-attr">height</span>:
<span class="hljs-number">50</span>), <span class="hljs-attr">placementId</span>: <Insert your placement ID here>)
banner?.delegate = <span class="hljs-built_in">self</span>
view.<span class="hljs-title function_ invoke__">addSubview</span>(banner!)
banner?.<span class="hljs-title function_ invoke__">load</span>()
<span class="hljs-comment">// Use this API to enable or disable auto refresh</span>
banner?.<span class="hljs-title function_ invoke__">shouldAutoRefresh</span>(<span class="hljs-literal">true</span>)
<span class="hljs-comment">// Use this API to set a custom refresh interval on the banner</span>
banner?.refreshInterval = <refresh interval>
}
默认情况下,IMBanner广告每 60 秒刷新一次。您也可以设置自定义刷新间隔,或关闭自动刷新功能以手动加载广告。无论是手动加载还是自动刷新,两次连续广告加载之间的最小时间间隔都应为 20 秒。
<span class="hljs-comment">// to turn off auto refresh set the below value to NO.</span>
[<span class="hljs-keyword">self</span>.banner shouldAutoRefresh:<span class="hljs-literal">NO</span>];
<span class="hljs-comment">//to set custom refresh interval</span>
[<span class="hljs-keyword">self</span>.banner setRefreshInterval:<span class="hljs-number">40</span>];
<span class="hljs-comment">// to turn off auto refresh set the below value to NO. banner?.shouldAutoRefresh(false). //to set custom refresh interval banner?.refreshInterval = 40</span>
3. 如果您想随时取消横幅广告,请使用取消 API:
<span class="hljs-section">[self.banner cancel]</span><span class="hljs-comment">;</span>
<span class="hljs-attr">self.banner.delegate</span> = nil<span class="hljs-comment">;</span>
<span class="hljs-attr">self.banner</span> = nil<span class="hljs-comment">;</span>
<span class="hljs-variable language_">self</span>.banner.cancel();
<span class="hljs-variable language_">self</span>.banner.delegate = <span class="hljs-literal">nil</span>
<span class="hljs-variable language_">self</span>.banner = <span class="hljs-literal">nil</span>
4. 对于广告状态回调,请实现代理方法IMBannerDelegate。我们支持以下回调:
<span class="hljs-comment">// Notifies that the ad is received with Meta info. </span>
- (void)banner:(IMBanner*)banner didReceiveWithMetaInfo:(IMAdMetaInfo*)info {
<span class="hljs-built_in">NSLog</span>(@"Banner Ad is received")
}
- (void)bannerDidFinishLoading:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"bannerDidFinishLoading");
}
- (void)banner:(IMBanner *)banner didFailToLoadWithError:(IMRequestStatus *)error {
<span class="hljs-built_in">NSLog</span>(@"banner failed to load ad");
<span class="hljs-built_in">NSLog</span>(@"Error : %@", error.description);
}
- (void)bannerWillPresentScreen:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"bannerWillPresentScreen");
}
- (void)bannerDidPresentScreen:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"bannerDidPresentScreen");
}
- (void)bannerWillDismissScreen:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"bannerWillDismissScreen");
}
- (void)bannerDidDismissScreen:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"bannerDidDismissScreen");
}
- (void)userWillLeaveApplicationFromBanner:(IMBanner *)banner {
<span class="hljs-built_in">NSLog</span>(@"userWillLeaveApplicationFromBanner");
}
<span class="hljs-built_in">-</span>(void)banner:(IMBanner *)banner didInteractWithParams:(NSDictionary *)params{
<span class="hljs-built_in">NSLog</span>(@"bannerdidInteractWithParams");
}
<span class="hljs-built_in">-</span>(void)banner:(IMBanner*)banner rewardActionCompletedWithRewards:(NSDictionary*)rewards{
<span class="hljs-built_in">NSLog</span>(@"rewardActionCompletedWithRewards");
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">banner</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>, <span class="hljs-params">didReceiveWithMetaInfo</span> <span class="hljs-params">info</span>: <span class="hljs-type">IMAdMetaInfo</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"Banner Ad is received"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">bannerDidFinishLoading</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">banner</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>, <span class="hljs-params">didFailToLoadWithError</span> <span class="hljs-params">error</span>: <span class="hljs-type">IMRequestStatus</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-string">"Banner ad failed to load with error: <span class="hljs-subst">\(error)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">banner</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>, <span class="hljs-params">didInteractWithParams</span> <span class="hljs-params">params</span>: [<span class="hljs-params">String</span> : <span class="hljs-keyword">Any</span>]<span class="hljs-operator">?</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">userWillLeaveApplicationFromBanner</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">bannerWillPresentScreen</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">bannerDidPresentScreen</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">bannerWillDismissScreen</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">bannerDidDismissScreen</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
<span class="hljs-keyword">public</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">banner</span>(<span class="hljs-keyword">_</span> <span class="hljs-params">banner</span>: <span class="hljs-type">IMBanner</span>, <span class="hljs-params">rewardActionCompletedWithRewards</span> <span class="hljs-params">rewards</span>: [<span class="hljs-params">String</span> : <span class="hljs-keyword">Any</span>]) {
<span class="hljs-built_in">print</span>(<span class="hljs-string">"[ViewController %@] <span class="hljs-subst">\(<span class="hljs-keyword">#function</span>)</span>"</span>)
}
您可以在刷新横幅对象时使用以下过渡效果:
UIViewAnimationTransitionNoneUIViewAnimationTransitionFlipFromLeftUIViewAnimationTransitionFlipFromRightUIViewAnimationTransitionCurlUpUIViewAnimationTransitionCurlDownnoneflipFromLeftflipFromRightcurlUpcurlDown
<span class="hljs-attr">self.banner.transitionAnimation</span> = UIViewAnimationTransitionCurlUp<span class="hljs-comment">;</span>
banner?.transitionAnimation = .curlUp
UIView您ViewController’s视野中广告应显示的位置。UIView为IMBanner。ViewController头文件中,声明一个IBOutlet实例IMBanner。UIView(Banner)在故事板的场景中,将此设置为你的输出口ViewController。viewDidLoad(),输入banner.placementId = <insert placement id>。
By installing this SDK update, you agree that your Children Privacy Compliance setting remains accurate or that you will update that setting, whenever there is a change in your app's audience. You may update the app's Children Privacy Compliance settings at https://publisher.inmobi.com/my-inventory/app-and-placements.
Support Center