派金SDK接入文档

本文介绍了iOS项目接入SDK的方法,包括手动导入sdk文件、通过pod方式接入三方广告,以及处理库版本号不一致的问题。还阐述了代码接入的内容,如初始化、服务端竞价数据,以及开屏、激励视频、插屏、信息流广告等的接入方式和相关代理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、接入SDK
1、将sdk文件手动导入到目标项目中,如下图所示:
请添加图片描述
2、该SDK需接入其他三方广告,通过pod的方式接入,在Profile中加入如下代码:

  pod 'GDTMobSDK',     '~> 4.14.40'
  pod 'BaiduMobAdSDK', '~> 5.313'
  pod 'KSAdSDK',       '~> 3.3.51.1'

3、该SDK所依赖的②中的三方库的版本号与您项目中本身存在的库的版本号不一致,请您适配或联系SDK开发者适配。
4、该SDK不是必须依赖②中的三方库,如您不需要某个广告商的资源,也请您联系开发者开发。

二、代码接入
1、初始化

// 导入项目头文件
#import <MTAd/MTAd.h>
// 初始化方式,token 是指运营方提供的与接入方bundle id 绑定了的token
[MTAdApi initXWAdWithToken:@"token"];
// 获取当前sdk 版本号
NSLog(@"=========%@",[MTAdApi MT_version]);

2、服务端竞价相关数据

// 上报内容的key-value内容如下
typedef NS_ENUM(NSUInteger, BidPriceKey) {
    /** 代表竞胜方 价格的key */
    KEY_WIN_EXPECT_COST_PRICE   = 1,
    /** 代表竞胜的时候 失败放的最大价格的 key */
    KEY_HIGHEST_LOSS_PRICE      = 2,
    /** 代表是 竞胜败 方 时候的 竞价原因    它的 valut 值 可以是: 0、其他,1、竞争力不足,2、无广告返回,3、未参与竞价) */
    KEY_FAILED_REASON           = 3,
    /** 代表 竞败方 广告厂商  它的值可以是  (0、其他渠道,1、广点通,2、百青藤,3、穿山甲,4、快手,5、京准通,10、Π金引擎) */
    KEY_ADN_TYPE                = 4,
    /** 竞胜败⽅渠道名称 */
    KEY_ADN_NAME                = 5,
    
    /**
       * 竞胜之后调用, 需要在调用广告 show 之前调用
       *
       * @param params - 必填,其中
       *               键 KEY_EXPECT_COST_PRICE 对应值为竞胜出价(单位:分),类型为Int,选填;
       *               键 KEY_HIGHEST_LOSS_PRICE 对应值为最大竞败方出价(单位:分),类型为Int,选填。
       */
};

//获取竞价信息后,将会得到一个model 信息如下
@interface PRXServerBidingModel : NSObject

/** 京胜 token */
@property (nonatomic,copy) NSString * token;

/** 京胜 价格 */
@property (nonatomic,copy) NSString * price;

/** 京胜 上报url */
@property (nonatomic,copy) NSString * nurl;

/** 竞败 上报url */
@property (nonatomic,copy) NSString * lurl;

/**  错误码 */
@property (nonatomic,copy) NSString * errorCode;


@end

3、开屏广告接入方式

// 初始化 开屏广告对象
[[MTSplashObject alloc] initWithPlacementId:@"广告位id"];
//遵守 开屏广告对象的代理 代理详情参见 <MTSplashObjectDelegate>
xxx.delegate = self;
// 获取竞价信息  --- 适用服务端竞价
[xxx getBidingInfoResult];
// 获取竞价信息后,媒体方会收到 如下代理(请提前签订delegate)
- (void)mt_splashbidEnd:(MTSplashObject *)splashAd info:(PRXServerBidingModel *)info{
    NSLog(@"2开屏广告竞价成功----->%s,error = %@ -- info-%@",__func__,splashAd,info);
}
//服务端竞价 加载广告方式
[xxx bidLoadAd];
//普通模式 加载广告方式
[xxx loadAd];
/**
 *  开屏广告素材加载成功
 */
- (void)mt_splashAdDidLoad:(MTSplashObject * __nullable)splashAd{    
    NSLog(@"2开屏广告素材加载成功----->%s,error = %@",__func__,splashAd);
}

/**
 *  开屏广告展示失败
 */
- (void)mt_splashAdFailToPresent:(MTSplashObject * __nullable)splashAd withError:(NSError *)error{
    NSLog(@"3开屏广告展示失败----->%s,error = %@",__func__,error);
}

//在广告加载成功之后 才可以展示广告
//支持 开屏广告底部 自定义视图
//支持 开屏广告 自定义跳过按钮
[xxx showAdInWindow:windoww withBottomView:nil skipView:nil];
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法


/**
 *  应用进入后台时回调
 *  详解: 当点击下载应用时会调用系统程序打开,应用切换到后台
 */
- (void)mt_splashAdApplicationWillEnterBackground:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"4应用进入后台时回调----->%s",__func__);

}

/**
 *  开屏广告曝光回调
 */
- (void)mt_splashAdExposured:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"5开屏广告曝光回调----->%s",__func__);

}

/**
 *  开屏广告点击回调
 */
- (void)mt_splashAdClicked:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"6开屏广告点击回调----->%s",__func__);

}

/**
 *  开屏广告将要关闭回调
 */
- (void)mt_splashAdWillClosed:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"7开屏广告将要关闭回调----->%s",__func__);

}

/**
 *  开屏广告关闭回调
 */
- (void)mt_splashAdClosed:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"8开屏广告关闭回调----->%s",__func__);
}

- (void)mt_splashAdClickSkip:(MTSplashObject *)splashAd
{
    NSLog(@"9点击了跳过按钮");
}

/**
 *  开屏广告点击以后即将弹出全屏广告页
 */
- (void)mt_splashAdWillPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"10开屏广告点击以后即将弹出全屏广告页----->%s",__func__);

}

/**
 *  开屏广告点击以后弹出全屏广告页
 */
- (void)mt_splashAdDidPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"11开屏广告点击以后弹出全屏广告页----->%s",__func__);

}

/**
 *  点击以后全屏广告页将要关闭
 */
- (void)mt_splashAdWillDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"12点击以后全屏广告页将要关闭----->%s",__func__);

}

/**
 *  点击以后全屏广告页已经关闭
 */
- (void)mt_splashAdDidDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{
    NSLog(@"13点击以后全屏广告页已经关闭----->%s",__func__);

}

/**
 * 开屏广告剩余时间回调
 */
- (void)mt_splashAdLifeTime:(NSUInteger)time splashAd:(MTSplashObject * _Nullable)splashAd
{
    NSLog(@"14开屏广告剩余时间回调----->%s",__func__);

}

4、激励视频 接入方式

// 激励视频初始化
xxx = [[MTRewardVideoAd alloc] initWithPlacementId:@"广告位"];
// 签代理   遵守代理 <MTRewardVideoAdDelegate>
xxx.delegate = self;
//服务端竞价 --- 获取竞价信息
[xxx getBidingInfoResult];

//收到竞价信息后 
- (void)mt_rewardVideoBidEnd:(MTRewardVideoAd *)rewardedVideoAd info:(PRXServerBidingModel *)info{
    self.statusLabel.text = @"竞价成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd];


/**
 广告数据加载成功回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidLoad:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告数据加载成功";
}

/**
 视频广告各种错误信息回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 @param error 具体错误信息
 */
- (void)mt_rewardVideoAd:(MTRewardVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error
{
    NSLog(@"%s",__FUNCTION__);
      if (error.code == 4014) {
          NSLog(@"请拉取到广告后再调用展示接口");
          self.statusLabel.text = @"请拉取到广告后再调用展示接口";
      } else if (error.code == 4016) {
          NSLog(@"应用方向与广告位支持方向不一致");
          self.statusLabel.text = @"应用方向与广告位支持方向不一致";
      } else if (error.code == 5012) {
          NSLog(@"广告已过期");
          self.statusLabel.text = @"广告已过期";
      } else if (error.code == 4015) {
          NSLog(@"广告已经播放过,请重新拉取");
          self.statusLabel.text = @"广告已经播放过,请重新拉取";
      } else if (error.code == 5002) {
          NSLog(@"视频下载失败");
          self.statusLabel.text = @"视频下载失败";
      } else if (error.code == 5003) {
          NSLog(@"视频播放失败");
          self.statusLabel.text = @"视频播放失败";
      } else if (error.code == 5004) {
          NSLog(@"没有合适的广告");
          self.statusLabel.text = @"没有合适的广告";
      } else if (error.code == 5013) {
          NSLog(@"请求太频繁,请稍后再试");
          self.statusLabel.text = @"请求太频繁,请稍后再试";
      } else if (error.code == 3002) {
          NSLog(@"网络连接超时");
          self.statusLabel.text = @"网络连接超时";
      }
      NSLog(@"ERROR: %@", error);
}
// 视频加载成功后,展示激励视频, 注意 controller 不能为空
[xxx showAdFromRootViewController:controller];

由sdk竞价成功或失败 上报方法

/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**
 视频播放页即将展示回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdWillVisible:(MTRewardVideoAd *)rewardedVideoAd
{
    
}

/**
 视频广告曝光回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidExposed:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已曝光";

}

/**
 视频播放页关闭回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidClose:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已关闭";

}

/**
 视频广告信息点击回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidClicked:(MTRewardVideoAd *)rewardedVideoAd
{
    self.statusLabel.text = @"广告已点击";
}

/**
 视频广告播放达到激励条件回调

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidRewardEffective:(MTRewardVideoAd *)rewardedVideoAd
{
    NSLog(@"播放达到激励条件");

}

/**
 视频广告视频播放完成

 @param rewardedVideoAd MTRewardVideoAd 实例
 */
- (void)mt_rewardVideoAdDidPlayFinish:(MTRewardVideoAd *)rewardedVideoAd
{
    NSLog(@"视频播放结束");
    self.statusLabel.text = @"视频播放结束";


}

5、插屏广告 接入方式

// 插屏广告对象初始化方式
xxx = [[MTInterstitialAd alloc] initWithPlacementId:@"代码位"];
// 遵守代理 <MTInterstitialAdDelegate>
xxx.delegate = self;
//服务端竞价 获取竞价信息
[xxx getBidingInfoResult];

//获取竞价信息 得到的数据 回调信息
- (void)mt_unifiedInterstitialBidEnd:(MTInterstitialAd *)splashAd info:(PRXServerBidingModel *)info {
    self.statusLabel.text = @"竞价数据请求成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd]

// 加载结果的回调
/**
 *  广告预加载成功回调
 *  详解:当接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{
    self.statusLabel.text = @"广告数据请求成功";
}

/**
 *  广告预加载失败回调
 *  详解:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{
    self.statusLabel.text = @"广告数据加载失败";
}
// 广告加载成功后  展示开屏  controller 不能为空
[xxx presentAdFromRootViewController:controller];

竞价结果汇报方法

/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理回调方法

/**
 *  广告预加载成功回调
 *  详解:当接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{
    self.statusLabel.text = @"广告数据请求成功";
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  广告预加载失败回调
 *  详解:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{
    self.statusLabel.text = @"广告数据加载失败";
    NSLog(@"%s,%@",__func__,self);
    NSLog(@"error==%@",error.description);


}

/**
 *  插屏广告将要展示回调
 *  详解: 插屏广告即将展示回调该函数
 */
- (void)mt_unifiedInterstitialWillPresentScreen:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  插屏广告视图展示成功回调
 *  详解: 插屏广告展示成功回调该函数
 */
- (void)mt_unifiedInterstitialDidPresentScreen:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  插屏广告展示结束回调
 *  详解: 插屏广告展示结束回调该函数
 */
- (void)mt_unifiedInterstitialDidDismissScreen:(MTInterstitialAd *)interstitialAd
{
    self.statusLabel.text = @"插屏广告展示结束回调";
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  详解:当点击应用下载或者广告调用系统程序打开时调用
 */
- (void)mt_interstitialApplicationWillEnterBackground:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    
}

/**
 *  插屏广告曝光回调
 */
- (void)mt_interstitialWillExposure:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}


/**
 *  插屏广告点击回调
 */

- (void)mt_unifiedInterstitialClicked:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"插屏广告点击回调";

}

/**
 *  点击插屏广告以后即将弹出全屏广告页
 */
- (void)mt_unifiedInterstitialAdWillPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  点击插屏广告以后弹出全屏广告页
 */
- (void)mt_unifiedInterstitialAdDidPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  全屏广告页将要关闭
 */
- (void)mt_unifiedInterstitialAdWillDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);

}

/**
 *  全屏广告页被关闭
 */
- (void)mt_unifiedInterstitialAdDidDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"全屏广告页被关闭";

}
/**
 *  当点击下载应用时会调用系统程序打开其它App或者Appstore时回调
 */
- (void)mt_unifiedInterstitialWillLeaveApplication:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 *  插屏广告曝光回调
 */
- (void)mt_unifiedInterstitialWillExposure:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
    self.statusLabel.text = @"插屏广告曝光回调";

}

/**
 * 插屏视频广告 player 播放状态更新回调
 */
- (void)mt_unifiedInterstitialAd:(MTInterstitialAd *)unifiedInterstitial playerStatusChanged:(MTMediaPlayerStatus)status{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 WillPresent 回调
 */
- (void)mt_unifiedInterstitialAdViewWillPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 DidPresent 回调
 */
- (void)mt_unifiedInterstitialAdViewDidPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 WillDismiss 回调
 */
- (void)mt_unifiedInterstitialAdViewWillDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

/**
 * 插屏视频广告详情页 DidDismiss 回调
 */
- (void)mt_unifiedInterstitialAdViewDidDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{
    NSLog(@"%s,%@",__func__,self);
}

6、信息流广告接入方式

// 信息流对象初始化方式 -- 服务端竞价方式必须使用这种方式初始化
xxx = [[MTUnifiedNativeAd alloc] initWithPlacementId:@"广告位"];
    [self.unifiedNativeAd getBidingInfoResultWithCount:1];
// 信息流代理 遵守 <MTUnifiedNativeAdDelegate,MTUnifiedNativeAdViewDelegate,MTMediaViewDelegate>
xxx.delegate = self;
// 获取竞价信息  -- 传入期待的信息流数量
[xxx getBidingInfoResultWithCount:1];

- (void)mt_unifiedNativeBid:(MTUnifiedNativeAd *)object bidInfo:(PRXServerBidingModel *)info {
    NSLog(@"信息流竞价成功");
}
// 正常模式下,加载广告方式
[self.unifiedNativeAd loadAdWithAdCount:1];
//服务端竞价方式, 加载广告
[xxx bidLoadAd];


// 得到加载成功后 广告资源,或者 失败后的信息
- (void)mt_unifiedNativeAdLoaded:(NSArray<MTUnifiedNativeAdObject *> *)unifiedNativeAdDataObjects error:(NSError *)error
{
    if (unifiedNativeAdDataObjects.count > 0) {   
    }
    NSLog(@"error = %@",error);
}
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**
 竞价成功的上报
 */
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;

/**
 竞价失败的上报
 */
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**
 广告曝光回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewWillExpose:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW曝光回调");
    

}


/**
 广告点击回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewDidClick:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW点击回调");

}


/**
 广告详情页关闭回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdDetailViewClosed:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW广告详情页关闭回调");

}


/**
 当点击应用下载或者广告调用系统程序打开时调用
 
 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdViewApplicationWillEnterBackground:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW");

}


/**
 广告详情页面即将展示回调

 @param unifiedNativeAdView MTUnifiedNativeAdView 实例
 */
- (void)mt_unifiedNativeAdDetailViewWillPresentScreen:(MTUnifiedNativeAdView *)unifiedNativeAdView
{
    NSLog(@"XW广告详情页面即将展示回调");

}


/**
 视频广告播放状态更改回调

 @param unifiedNativeAdView 实例
 @param status 视频广告播放状态
 @param userInfo 视频广告信息
 */
- (void)mt_unifiedNativeAdView:(MTUnifiedNativeAdView *)unifiedNativeAdView playerStatusChanged:(MTMediaPlayerStatus)status userInfo:(NSDictionary *)userInfo
{
    NSLog(@"");
    NSLog(@"视频广告状态变更");
      switch (status) {
          case MTMediaPlayerStatusError:
              NSLog(@"视频播放出错");
              //开发者可以在这里添加逻辑
          default:
              break;
      }

}

- (void)mt_mediaViewDidTapped:(MTMediaView *)mediaView{
    NSLog(@"mt_mediaViewDidTapped");
}

/**
 播放完成回调

 @param mediaView 播放器实例
 */
- (void)mt_mediaViewDidPlayFinished:(MTMediaView *)mediaView{
    NSLog(@"mt_mediaViewDidPlayFinished");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值