Native Ad

DMNativeAd的后台设置

DMNativeAd的添加

若要在应用中添加一个原生广告(Native Ad),只需要简单的几步:

  1. 导入DMNativeAd.h头文件。
  2. 声明一个DMNativeAd的实例。
  3. 使您的UIViewController实现DMNativeAdDelegate协议。
  4. 在您的UIViewController的m文件中,使用您从多盟官网获得的Publisher ID和 Placement ID还有rootViewController以及delegate来初始化DMNativeAd。
  5. 在合适的时候,调用loadAd方法,来加载Native广告。
  6. 从Success的回调中获取提供的广告信息的数据模型。
  7. 将广告信息展现到界面,并调用 trackImpression 方法,发送展现报告。
  8. 对于广告提供的点击事件需要调用 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的属性delegaterootViewController设置为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