横幅广告是一种图形广告,典型的横幅广告包含一系列静止或动态的影像及文字,传递营销信息或吸引用户采取行动。所有app都可以利用横幅广告盈利 。
按照以下步骤开始利用横幅广告盈利:
在添加app后,选择 BANNER AD,创建一个放置 ,将广告类型设置为Banner(横幅)。
创建横幅广告放置之后,将生成放置id。
IMBanner
仅仅只是UIView
的一个子类,根据用户操作显示HTML5广告。
InMobi SDK为展示横幅广告提供了两种机制:
a. 编程实例化
在你的 ViewController.h
文件中导入头文件,并声明一个Banner(横幅)实例。 你的 ViewController
头文件应该如下:
#import <uikit uikit.h="">
@import InMobiSDK;
@interface ViewController : UIViewController <imbannerdelegate>
@property (nonatomic, strong) IMBanner *banner;
@end
</imbannerdelegate></uikit>
实例化横幅对象。你的ViewController.m
文件应该如下:
- (void)viewDidLoad {
[super viewDidLoad];
self.banner = [[IMBanner alloc] initWithFrame:CGRectMake(0, 0, 320, 50)
placementId:@"Insert your placement ID here"];
self.banner.delegate = self;
[self.view addSubview:self.banner];
[self.banner load];
//[self.banner shouldAutoRefresh:YES];
//[self.banner setRefreshInterval:90];
}
默认情况下, IMBanner
每隔60秒刷新一次。你也可以自定义刷新时间间隔,或者关闭自动刷新,手动加载广告。不论是自动刷新还是手动加载,最小时间间隔应为20秒。
将 UIViewController
dealloc
函数中的委托值设为零,或是其他任何发布横幅的时间。
-(void)dealloc {
self.banner.delegate = nil;
}
广告状态回调时,执行IMBanner
的委托性能。支持以下回调函数:
/*Indicates that the banner has received an ad. */
- (void)bannerDidFinishLoading:(IMBanner *)banner {
NSLog(@"bannerDidFinishLoading");
}
/* Indicates that the banner has failed to receive an ad */
- (void)banner:(IMBanner *)banner didFailToLoadWithError:(IMRequestStatus *)error {
NSLog(@"banner failed to load ad");
NSLog(@"Error : %@", error.description);
}
/* Indicates that the banner is going to present a screen. */
- (void)bannerWillPresentScreen:(IMBanner *)banner {
NSLog(@"bannerWillPresentScreen");
}
/* Indicates that the banner has presented a screen. */
- (void)bannerDidPresentScreen:(IMBanner *)banner {
NSLog(@"bannerDidPresentScreen");
}
/* Indicates that the banner is going to dismiss the presented screen. */
- (void)bannerWillDismissScreen:(IMBanner *)banner {
NSLog(@"bannerWillDismissScreen");
}
/* Indicates that the banner has dismissed a screen. */
- (void)bannerDidDismissScreen:(IMBanner *)banner {
NSLog(@"bannerDidDismissScreen");
}
/* Indicates that the user will leave the app. */
- (void)userWillLeaveApplicationFromBanner:(IMBanner *)banner {
NSLog(@"userWillLeaveApplicationFromBanner");
}
/* Indicates that the banner was interacted with. */
-(void)banner:(IMBanner *)banner didInteractWithParams:(NSDictionary *)params{
NSLog(@"bannerdidInteractWithParams");
}
/*Indicates that the user has completed the action to be incentivised with .*/
-(void)banner:(IMBanner*)banner rewardActionCompletedWithRewards:(NSDictionary*)rewards{
NSLog(@"rewardActionCompletedWithRewards");
}
UIViewAnimationTransitionNone
UIViewAnimationTransitionFlipFromLeft
UIViewAnimationTransitionFlipFromRight
UIViewAnimationTransitionCurlUp
UIViewAnimationTransitionCurlDown
self.banner.transitionAnimation = UIViewAnimationTransitionCurlUp;
b. 使用界面构建器创建横幅实例
UIView
放置到 ViewController
视图(view)中显示广告的放置 。UIView
对IMBanner
的类标识(Class Identity)。ViewController
头文件中,声明一个 IMBanner
的IBOutlet
实例。ViewController
界面的UIView(Banner)
中,将其设置为你的输出。选择工具(Tools)-诊断(Diagnostics),将测试模式设为 Global ON或者Selective ON。
如果你是第一次集成某个广告单元 | 将测试模式 ( Test Mode)设为 Global ON。 |
如果你希望有选择性地为某组设备打开测试流量 你之前已经为某广告单元集成过SDK,因此你应该把测试局限于几个设备 |
将测试模式( Test Mode)设为Selective ON。
设备部分:
如果你已经配置过某个设备,你可以选择这个设备,测试模式将激活。 |
注意: 在启动前你必须关闭测试模式,否则你将无法通过你的app盈利。
现在你已经准备好测试广告了。
获取设备ID
设备id就是IDFA或者IFA(广告标识符)。获取设备ID最简单的函数就是将SDK的日志级别设为“调试(debug)”。为激活这些调试日志,在 AppDelegate.m
文件的didFinishLaunchingWithOptions
函数中添加以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Initialize InMobi SDK with your account ID
[IMSdk initWithAccountID:@"Insert InMobi account ID here"];
//Set log level to Debug
[IMSdk setLogLevel:kIMSDKLogLevelDebug];
// Do your stuff.
return YES;
}
处于调试模式时,在Xcode开发者控制台登陆的设备ID为: “Publisher device ID is <device-id>”</device-id>
你可以在 Device ID对话框中输入该设备id。
[InMobi] InMobi SDK初始化账户id: <这里是你的账户id>
[InMobi] 读取横幅广告获知放置id: <这里是你的放置id>
[InMobi] 发行者设备id是 <这里是设备id>
[InMobi] 成功读取横幅广告获知放置id: <这里是你的放置id >
** 错误 ** [InMobi] ___ 请在创建
** 错误 ** [InMobi] ___ 账户id不能为零或空值。请提供有效的账户id。
[InMobi] 无效的账户id无法初始化。请提供有效的账户id。
下表中为全套关键日志。
初始化SDK
情境 | 日志级别 | 日志 |
发行者 传递零值或空值账户id | 错误 | 账户id不能为零或空值。请提供有效的账户id。 |
发行者传递有效的账户id | 调试 | InMobi SDK初始化账户id: <账户id> |
发行者传递无效的账户id | 错误 | 无效的账户id无法初始化。请提供有效的账户id。 |
有更新版本的SDK可使用 | 调试 | 有新版本 (ver. 6.0.0) 的InMobi SDK可使用!你现在使用的为旧版(ver. 5.3.1)。从 http://www.inmobi.com/products/sdk/#downloads下载最新版本的InMobi SDK。 |
普通广告
情境 | 日志级别 | 日志 |
无网络连接时发送广告请求 | 错误 | 此时网络连接不可以。请重试。 |
广告处于加载中或广告可看时发送广告请求 | 错误 | 广告正在加载,请等待加载完成再请求下一个广告(放置id :<placement id="" /> )。 |
用户浏览时发送广告请求 | 错误 | 用户正在浏览广告,请等待用户关闭再请求下一个广告(放置id :<placement id="" /> )。 |
发行者设备Id | 调试 | 发行者设备id是 <device id="" /> |
横幅广告
情境 | 日志级别 | 日志 |
发行者在未初始化SDK时创建横幅 | 错误 | 请在创建横幅广告前初始化SDK |
发行者使用无效或空的放置id创建横幅 | 错误 | 请提供有效的放置id以创建横幅广告 |
发行者使用错误的放置id从IB/xml访问加载某横幅广告 | 错误 | 请提供有效的放置id以创建横幅广告 |
发行者访问加载某横幅广告 | 调试 | 读取横幅广告获知放置id: <placement id="" /> |
成功读取广告 | 调试 | 成功读取横幅广告获知放置id: <placement id="" /> |
无法读取广告 | 调试 | 无法读取横幅广告获知放置id: <placement id="" /> 出错: <status code="" /> |
开始在web视图中加载横幅广告 | 调试 | 开始在web视图中加载横幅广告标记获知放置id: <placement id="" /> |
成功在web视图中加载横幅广告 | 调试 | 成功在web视图中加载横幅广告标记获知放置id: <placement id="" /> |
无法在web视图中加载横幅广告 | 调试 | 无法在web视图中加载横幅广告标记获知放置id: <placement id="" /> |
横幅刷新初始化 | 调试 | 初始化横幅刷新获知放置id: <placement id="" /> |