Native Ad
DMNativeAd的后台设置
DMNativeAd的添加
若要在应用中添加一个原生广告(Native Ad),只需要简单的几步:
- 导入
DMNativeAd.h
头文件。 - 声明一个
DMNativeAd
的实例。 - 使您的UIViewController实现
DMNativeAdDelegate
协议。 - 在您的UIViewController的m文件中,使用您从多盟官网获得的Publisher ID和 Placement ID还有
rootViewController
以及delegate
来初始化DMNativeAd。 - 在合适的时候,调用loadAd方法,来加载Native广告。
- 从Success的回调中获取提供的广告信息的数据模型。
- 将广告信息展现到界面,并调用 trackImpression 方法,发送展现报告。
- 对于广告提供的点击事件需要调用 processClickAction 方法,处理该事件。
下面的代码片段,简单描述了这个过程:
@interface NativeAdViewController : UIViewController<DMNativeAdDelegate>
@property (nonatomic, retain) DMNativeAd *nativeAd;
@end
@implementation NativeAdViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// 生成Native实例 并 请求广告
UIViewController *controller = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
_nativeAd = [[DMNativeAd alloc] initWithPublisherId:DOMOB_PUBLISHERID
placementId:DOMOB_PLACEMENTID
rootViewController:controller
delegate:self];
[_nativeAd loadAd];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//加载下一条广告 和 加载广告都是调用同一个方法
- (IBAction)nextNativeAd:(id)sender {
[_nativeAd loadAd];
}
- (void)viewDidUnload
{
[super viewDidUnload];
_nativeAd.delegate = nil; // 释放Native广告对象前,请先将其delegate设置为nil
[_nativeAd release]; // 释放Native广告对象
_native = nil;
}
#pragma mark -
#pragma mark NativeAdDelegate
- (void)dmNativeAdSuccessToLoadAd:(DMNativeAdModel *)adDataModel
{
//获取成功回调带过来的数据模型并渲染到界面
[self.nativeTitle setText:adDataModel.adTitle];
[self.nativeBrief setText:adDataModel.adBrief];
[self.nativeDescription setText:adDataModel.adDescription];
[self.linkBtn setTitle:adDataModel.adActionText forState:UIControlStateNormal];
[self.imageIcon setImageURL:[NSURL URLWithString:adDataModel.adIcon.adUrl]];
[self.imageMedia setImageURL:[NSURL URLWithString:adDataModel.adMedia.adUrl]];
//星级 对应程序中 adRatings 字段 返回数值为[0,100],请开发者自行计算要对 应显示的星级,示例:只想展示 1-5 星,允许小数,若返回值为 25, 则 25/20 = 1.25 , 则界面显示 1.25 星
[self.ratingLabel setText:[NSString stringWithFormat:@"%lu",(unsigned long)adDataModel.adRatings]];
//安装包大小对应程序中adSize字段返回数值为[0,+∞),单位为Byte
[self.sizeLabel setText:[NSString stringWithFormat:@"%lu",(unsigned long)adDataModel.adSize]];
//下载次数 对应程序中 adDownloads 字段返回值为[0, +∞)
[self.downloadLabel setText:[NSString stringWithFormat:@"%lu",(unsigned long)adDataModel.adDownloads]];
}
- (void)dmNativeAdFailToLoadAdWithError:(NSError *)error
{
NSLog(@"<DMNative Ad error = %@>",error);
}
DMNativeAd的释放
在这里强烈建议您,在释放DMNativeAd之前,将DMNativeAd的属性delegate
和rootViewController
设置为nil。如下例:
- (void)viewDidUnload
{
[super viewDidUnload];
_nativeAd.delegate = nil; // 释放Native广告对象前,请先将其delegate设置为nil
[_nativeAd release]; // 释放Native广告对象
_native = nil;
}
DMNativeAdDelegate
您可以通过实现DMNativeAdDelegate
中定义的方法,来跟踪广告生命周期中的各个阶段。所有这些方法也都定义在DMNativeAd
中,如下:
@protocol DMNativeAdDelegate <NSObject>
@required
- (void)dmNativeAdSuccessToLoadAd:(DMNativeAdModel *)adDataModel;
- (void)dmNativeAdFailToLoadAdWithError:(NSError *)error;
@end