
必须在用户同意隐私政策后,再初始化SDK
建议优先使用 QuMengAdSDK QuMengAdSDK API 前缀使用 "qumeng_" QMAdSDK API 前缀使用 "qm_"
支持系统 iOS 11.0 及以上
注意⚠️:我们建议您使用
CocoaPods更轻松地管理 Xcode 项目的库依赖项,而不是直接下载并安装 SDK。SDK 的依赖项都在提供的文件中,请注意查收。
# 推荐使用(避免缩写冲突)
# 四位版本号 1.3.8 开始支持
# 目前最新版本为:1.8.3.6
pod "QuMengAdSDK", "~> 1.8.3.6"
# 或者使用(即将废弃)
pod "QMAdSDK", "~> 1.8.3.6"
提醒 如果您获取的SDK版本号和推荐版本号不一致,可尝试按照以下骤执行
1. 在 podfile 文件中注释 pod "QuMengAdSDK", "~> 1.8.3.6"
2. 终端执行 pod install
3. 终端执行 pod cache clean QuMengAdSDK
4. 在podfile文件中打开 pod "QuMengAdSDK", "~> 1.8.3.6"
5. 终端执行 pod install QuMengAdSDK
下载压缩包,将 QuMengAdSDK.xcframework 或者 QMAdSDK.xcframework 添加项目工程中即可完成手动部署。
Info.plist 中 添加 Privacy - Tracking Usage Description 权限
<key>NSUserTrackingUsageDescription</key>
<string>该ID将用于向您推送个性化广告</string>
Info.plist 中加入
<key>LSApplicationQueriesSchemes</key>
<array>
<string>meituanwaimai</string>
<string>openapp.jdmobile</string>
<string>jdmobile</string>
<string>bilibili</string>
<string>pddopen</string>
<string>pinduoduo</string>
<string>iosamap</string>
<string>freereader</string>
<string>iqiyi</string>
<string>tmall</string>
<string>vipshop</string>
<string>alipays</string>
<string>OneTravel</string>
<string>eleme</string>
<string>sinaweibo</string>
<string>youku</string>
<string>imeituan</string>
<string>amapuri</string>
<string>baiduboxlite</string>
<string>bdboxiosqrcode</string>
<string>baidumobads</string>
<string>kwai</string>
<string>snssdk1128</string>
<string>weixinULAPI</string>
<string>weixinulapi</string>
<string>weixinURLParamsAPI</string>
<string>weixin</string>
<string>ctrip</string>
<string>taobaotravel</string>
<string>mqq</string>
<string>mqqapi</string>
<string>bytedance</string>
<string>taobao</string>
<string>tbopen</string>
<string>xhsdiscover</string>
<string>ksnebula</string>
<string>fleamarket</string>
<string>tantanapp</string>
<string>txvideo</string>
<string>dianping</string>
<string>mdsopen</string>
<string>yanxuan</string>
<string>mdopen</string>
<string>openanjuke</string>
<string>lianjia</string>
<string>soul</string>
</array>
QuMengAdSDKConfiguration 是 SDK 配置中心,可以中途修改配置QuMengAdSDKManager 是 SDK 的入口和接口中心QuMengAdSDKConfiguration *config = [QuMengAdSDKConfiguration shareConfiguration];
config.appId = @"应用ID";
config.customIdfa = @"自定义IDFA";
// caid
config.qmcds = @[
@{@"qmcd": @"", @"version": @""},
@{@"qmcd": @"", @"version": @""}
];
config.longitude = @"经度";
config.latitude = @"纬度";
// 注意⚠️:是否开启个性化推荐,开启则会获取 IDFA 默认:YES
// 如果开启需要在 Info.plist 中 添加 `Privacy - Tracking Usage Description` 权限
config.isEnablePersonalAds = YES;
// 是否开启 SDK 的播放器配置,版本要求大于等于 1.3.3
// 在播放音频时是否使用 SDK 内部对 AVAudioSession 设置的 category 及 options,默认(YES)使用,若不使用,SDK 内部不做任何处理,由调用方在展示广告时自行设置;
// SDK 默认设置的 category 为 AVAudioSessionCategoryAmbient,options 为 AVAudioSessionCategoryOptionDuckOthers
config.enableDefaultAudioSessionSetting = YES;
// 是否允许摇一摇/扭一扭(单设备纬度)默认:YES 允许(1.3.7及以上版本支持)
[QuMengAdSDKManager setTwistSwitch:YES];
// 是否允许获取经纬度坐标 默认:YES 允许(1.8及以上版本支持),需在 setupSDK 之前执行
[QuMengAdSDKManager canUseLocation:YES];
// 初始化 SDK
[QuMengAdSDKManager setupSDKWith:config];
// 或:初始化 SDK 并返回状态
[QuMengAdSDKManager setupSDKWith:config completion:^(BOOL success, NSError * _Nonnull error) {
}];
开屏广告使用
QuMengSplashAd对象管理开屏广告所有业务。开屏广告所有视图的展示和移除将由 SDK 统一管理,开发者无需关心。 接入方式上,使用 QuMengSplashAd 对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置QuMengSplashAdDelegate代理,获取广告加载、渲染、点击、关闭、跳转等回调。
广告位对象创建时必须传入广告位ID
_splashAd = [[QuMengSplashAd alloc] initWithSlot:slotID];
// 广告点击强制关闭
_splashAd.adClickToCloseAutomatically = YES
_splashAd.delegate = self;
[_splashAd loadAdData];
广告物料加载成功后,会回调 qumeng_splashAdLoadSuccess 方法,在此处展示开屏广告
- (void)qumeng_splashAdLoadSuccess:(QuMengSplashAd *)splashAd {
// controller window 二选一
// 检查广告有效性(1.3.7及以上版本支持)
[splashAd isValid];
// 非自定义bottom view
[splashAd showSplashViewController:controller];
// 自定义bottom view
// UILabel *view = [[UILabel alloc] initWithFrame:CGRectMake(160, 35, 200, 30)];
// view.text = @"欢迎接入趣盟";
// [splashAd showSplashViewController:controller winthBottomView:view];
// window 层级弹窗
// [splashAd showSplashWindow:keyWindow withBottomView:view];
// window 层级弹窗 自定义bottom view
// [splashAd showSplashWindow:keyWindow withBottomView:view];
}
| 方法 | 说明 |
|---|---|
| - (void)qumeng_splashAdLoadSuccess:(QuMengSplashAd *)splashAd | 开屏广告加载成功 |
| - (void)qumeng_splashAdLoadFail:(QuMengSplashAd *)splashAd error:(NSError * _Nullable)error | 开屏广告加载失败 |
| - (void)qumeng_splashAdRenderSuccess:(QuMengSplashAd *)splashAd | 开屏广告渲染成功(1.3.7 新增) |
| - (void)qumeng_splashAdRenderFail:(QuMengSplashAd *)splashAd error:(NSError *)error | 开屏广告渲染失败(1.3.7 新增) |
| - (void)qumeng_splashAdDidShow:(QuMengSplashAd *)splashAd | 开屏广告曝光 |
| - (void)qumeng_splashAdDidClick:(QuMengSplashAd *)splashAd | 开屏广告点击 |
| - (void)qumeng_splashAdDidClose:(QuMengSplashAd *)splashAd closeType:(enum QuMengSplashAdCloseType)type | 开屏广告关闭 |
| - (void)qumeng_splashCountdownIsOver:(QuMengSplashAd *)splashAd | 开屏广告倒计时结束(1.3.8.0 新增) |
插屏广告使用
QuMengInterstitialAd对象管理插屏广告所有业务。插屏广告所有视图的展示和移除将由 SDK 统一管理,开发者无需关心。 接入方式上,使用QuMengInterstitialAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置QuMengInterstitialAdDelegate代理,获取广告加载、渲染、点击、关闭、跳转等回调。
广告位对象创建时必须传入广告位ID
_intertitialAd = [[QuMengInterstitialAd alloc] initWithSlot:slotID];
// 广告点击强制关闭
_intertitialAd.adClickToCloseAutomatically = YES
_intertitialAd.delegate = self;
[_intertitialAd loadAdData];
广告物料加载成功后,会回调 qumeng_interstitialAdLoadSuccess 方法,在此处展示开屏广告
- (void)qumeng_interstitialAdLoadSuccess:(QuMengInterstitialAd *)interstitialAd {
// 检查广告有效性(1.3.7及以上版本支持)
[interstitialAd isValid];
[intertitialAd showInterstitialViewInRootViewController:controller];
}
| 方法 | 说明 |
|---|---|
| - (void)qumeng_interstitialAdLoadSuccess:(QuMengInterstitialAd *)interstitialAd | 插屏广告加载成功 |
| - (void)qumeng_interstitialAdLoadFail:(QuMengInterstitialAd *)interstitialAd error:(NSError *)error | 插屏广告加载失败 |
| - (void)qumeng_interstitialAdDidShow:(QuMengInterstitialAd *)interstitialAd | 插屏广告曝光 |
| - (void)qumeng_interstitialAdDidClick:(QuMengInterstitialAd *)interstitialAd | 插屏广告点击 |
| - (void)qumeng_interstitialAdDidClose:(QuMengInterstitialAd *)interstitialAd closeType:(enum QuMengInterstitialAdCloseType)type | 插屏广告关闭 |
| - (void)qumeng_interstitialAdDidCloseOtherController:(QuMengInterstitialAd *)interstitialAd | 插屏广告落地页关闭 |
| - (void)qumeng_interstitialAdDidStart:(QuMengInterstitialAd *)rewardedVideoAd | 插屏广告视频播放开始 |
| - (void)qumeng_interstitialAdDidPause:(QuMengInterstitialAd *)rewardedVideoAd | 插屏广告视频播放暂停 |
| - (void)qumeng_interstitialAdDidResume:(QuMengInterstitialAd *)rewardedVideoAd | 插屏广告视频播放继续 |
| - (void)qumeng_interstitialAdVideoDidPlayComplection:(QuMengInterstitialAd *)interstitialAd | 插屏广告视频播放完成 |
| - (void)qumeng_interstitialAdVideoDidPlayFinished:(QuMengInterstitialAd *)interstitialAd didFailWithError:(NSError *)error | 插屏广告视频播放异常 |
激励视频广告使用
QuMengRewardedVideoAd对象管理激励视频广告所有业务。激励视频广告所有视图的展示和移除将由 SDK 统一管理,开发者无需关心。 接入方式上,使用QuMengRewardedVideoAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置QuMengRewardedVideoAdDelegate代理,获取广告加载、渲染、点击、关闭、跳转等回调。
广告位对象创建时必须传入广告位ID
_rewardedVideoAd = [[QuMengRewardedVideoAd alloc] initWithSlot:slotID];
_rewardedVideoAd.delegate = self;
[_rewardedVideoAd loadAdData];
广告物料加载成功后,会回调 qumeng_rewardedVideoAdLoadSuccess 方法,在此处展示开屏广告
- (void)qumeng_rewardedVideoAdLoadSuccess:(QuMengRewardedVideoAd *)rewardedVideoAd {
// 检查广告有效性(1.3.7及以上版本支持)
[rewardedVideoAd isValid];
[rewardedVideoAd showRewardedVideoViewInRootViewController:controller];
}
| 方法 | 说明 |
|---|---|
| - (void)qumeng_rewardedVideoAdLoadSuccess:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告加载成功 |
| - (void)qumeng_rewardedVideoAdLoadFail:(QuMengRewardedVideoAd *)rewardedVideoAd error:(NSError *)error | 激励视频广告加载失败 |
| - (void)qumeng_rewardedVideoAdDidShow:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告曝光 |
| - (void)qumeng_rewardedVideoAdDidClick:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告点击 |
| - (void)qumeng_rewardedVideoAdDidClose:(QuMengRewardedVideoAd *)rewardedVideoAd closeType:(enum QuMengRewardedVideoAdCloseType)type | 激励视频广告关闭 |
| - (void)qumeng_rewardedVideoAdDidCloseOtherController:(QuMengRewardedVideoAd *)rewardedVideoAd | 落地页关闭 |
| - (void)qumeng_rewardedVideoAdDidRewarded:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告激励完成 |
| - (void)qumeng_rewardedVideoAdDidStart:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告播放开始 |
| - (void)qumeng_rewardedVideoAdDidPause:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告播放暂停 |
| - (void)qumeng_rewardedVideoAdDidResume:(QuMengRewardedVideoAd *)rewardedVideoAd | 激励视频广告播放继续 |
| - (void)qumeng_rewardedVideoAdVideoDidPlayComplection:(QuMengRewardedVideoAd *)rewardedVideoAd rewarded:(BOOL)isRewarded | 激励视频广告视频播放完成 |
| - (void)qumeng_rewardedVideoAdVideoDidPlayFinished:(QuMengRewardedVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error rewarded:(BOOL)isRewarded | 激励视频广告视频播放异常 |
信息流广告使用
QuMengFeedAd对象管理信息流广告所有业务。 接入方式上,使用QuMengFeedAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置QuMengFeedAdDelegate代理,获取广告加载、渲染、点击、关闭、跳转等回调。
广告位对象创建时必须传入广告位ID
@interface QuMengFeedSingleViewController () <QuMengFeedAdDelegate>
@property (nonatomic, strong) QuMengFeedAd *feedAd;
@end
@implementation QuMengFeedSingleViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.feedAd = [[QuMengFeedAd alloc] initWithSlot:self.slot];
/// 固定宽度高度自适应
CGFloat width = [[UIScreen mainScreen] bounds].size.width;
self.feedAd.customSize = CGSizeMake(width - 40, 0);
[self.feedAd loadAdData];
// Do any additional setup after loading the view.
}
- (void)setLayoutSubview {
// self.feedAd.feedView.frame = CGRectMake(0, 200, self.view.frame.size.width, 400);
[self.view addSubview:self.feedAd.feedView];
// [self.feedAd.feedView mas_makeConstraints:^(MASConstraintMaker *make) {
// make.center.mas_equalTo(self.view);
// make.size.mas_equalTo(self.feedAd.feedView.frame.size);
// }];
CGFloat scr = self.feedAd.feedView.frame.size.height / self.feedAd.feedView.frame.size.width;
[self.feedAd.feedView mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.mas_equalTo(self.view);
make.left.mas_equalTo(20);
make.right.mas_equalTo(-20);
make.height.mas_equalTo(self.feedAd.feedView.mas_width).multipliedBy(scr);
}];
}
// MARK: - QuMengFeedAdDelegate
- (void)qumeng_feedAdLoadSuccess:(QuMengFeedAd *)feedAd {
NSLog(@"【媒体】信息流: 物料加载成功");
// 检查广告有效性(1.3.7及以上版本支持)
[feedAd isValid];
[self setLayoutSubview];
}
| 方法 | 说明 |
|---|---|
| - (void)qumeng_feedAdLoadSuccess:(QuMengFeedAd *)feedAd | 信息流广告加载成功 |
| - (void)qumeng_feedAdLoadFail:(QuMengFeedAd *)feedAd error:(NSError *)error | 信息流广告加载失败 |
| - (void)qumeng_feedAdDidShow:(QuMengFeedAd *)feedAd | 信息流广告曝光 |
| - (void)qumeng_feedAdDidClick:(QuMengFeedAd *)feedAd | 信息流广告点击 |
| - (void)qumeng_feedAdDidClose:(QuMengFeedAd *)feedAd | 信息流广告关闭 |
| - (void)qumeng_feedAdDidCloseOtherController:(QuMengFeedAd *)feedAd | 信息流落地页关闭 |
| - (void)qumeng_feedAdDidStart:(QuMengFeedAd *)feedAd | 信息流视频播放开始 |
| - (void)qumeng_feedAdDidPause:(QuMengFeedAd *)feedAd | 信息流视频播放暂停 |
| - (void)qumeng_feedAdDidResume:(QuMengFeedAd *)feedAd | 信息流视频播放继续 |
| - (void)qumeng_feedAdVideoDidPlayComplection:(QuMengFeedAd *)feedAd | 信息流视频播放完成 |
| - (void)qumeng_feedAdVideoDidPlayFinished:(QuMengFeedAd *)feedAd didFailWithError:(NSError *)error | 信息流视频播放异常 |
媒体自渲染广告使用
QuMengNativeAd对象管理信息流广告所有业务。 接入方式上,使用QuMengNativeAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置QuMengNativeAdDelegate代理,获取广告加载、渲染、点击、跳转等回调。 自渲染广告需要调用registerContainer:withClickableViews:方法,否则回调无法触发
广告位对象创建时必须传入广告位ID
@interface QuMengNativeAdSingleViewController () <QuMengNativeAdAdDelegate>
@property (nonatomic, strong) QuMengNativeAdAd *nativeAd;
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) UILabel *jumpLabel;
@end
@implementation QuMengNativeAdSingleViewController
-(UIImageView *)imageView {
if (!_imageView) {
_imageView = UIImageView.new;
}
return _imageView;
}
- (UILabel *)jumpLabel {
if (!_jumpLabel) {
_jumpLabel = [[UILabel alloc] init];
_jumpLabel.text = @"点击跳转";
}
return _jumpLabel;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.nativeAd = [[QuMengNativeAdAd alloc] initWithSlot:self.slot];
self.nativeAd.delegate = self;
[self.nativeAd loadAdData];
// nativeAd load
// Do any additional setup after loading the view.
}
- (void)setLayoutSubview {
BOOL isVideo = self.nativeAd.meta.getMaterialType == 4 || self.nativeAd.meta.getMaterialType == 12;
UIView *materialView = isVideo ? self.nativeAd.videoView: self.imageView;
[self.view addSubview:materialView];
[self.view addSubview:self.jumpLabel];
[materialView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(20);
make.center.mas_equalTo(0);
make.height.mas_equalTo(200);
}];
[self.jumpLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(0);
make.top.mas_equalTo(materialView.mas_bottom).offset(10);
}];
}
// MARK: QuMengNativeAdAdDelegate
- (void)qumeng_nativeAdLoadSuccess:(QuMengNativeAdAd *)nativeAd {
NSLog(@"【媒体】自渲染: 请求成功");
// 检查广告有效性(1.3.7及以上版本支持)
[nativeAd isValid];
/// 视频
if (nativeAd.meta.getMaterialType == 4 || nativeAd.meta.getMaterialType == 12) {
[nativeAd registerContainer:self.view withClickableViews:@[self.jumpLabel]];
} else {
/// 图片
[self.imageView yy_setImageWithURL:[NSURL URLWithString:nativeAd.meta.getMediaUrl] placeholder:nil];
[nativeAd registerContainer:self.view withClickableViews:@[self.jumpLabel]];
}
[self setLayoutSubview];
}
| 方法 | 说明 |
|---|---|
| - (void)qumeng_nativeAdLoadSuccess:(QuMengNativeAd *)nativeAd | 自渲染广告素材加载成功 |
| - (void)qumeng_nativeAdLoadFail:(QuMengNativeAd *)nativeAd error:(NSError *)error | 自渲染广告素材加载失败 |
| - (void)qumeng_nativeAdDidShow:(QuMengNativeAd *)nativeAd | 自渲染广告展示 |
| - (void)qumeng_nativeAdDidClick:(QuMengNativeAd *)nativeAd | 自渲染广告点击 |
| - (void)qumeng_nativeAdDidCloseOtherController:(QuMengNativeAd *)nativeAd | 自渲染广告落地页关闭 |
| - (void)qumeng_nativeAdDidStart:(QuMengNativeAdAd *)nativeAd | 自渲染视频播放开始 |
| - (void)qumeng_nativeAdDidPause:(QuMengNativeAdAd *)nativeAd | 自渲染视频播放暂停 |
| - (void)qumeng_nativeAdDidResume:(QuMengNativeAdAd *)nativeAd | 自渲染视频播放继续 |
| - (void)qumeng_nativeAdVideoDidPlayComplection:(QuMengNativeAdAd *)nativeAd | 自渲染视频播放完成 |
| - (void)qumeng_nativeAdVideoDidPlayFinished:(QuMengNativeAdAd *)nativeAd didFailWithError:(NSError *)error | 自渲染视频播放异常 |
版本要求大于等于 1.3.1,可参考 Demo 中 QuMengNativeCell 类
1.3.7 及之后版本不再支持
// 声明成员变量
@property (nonatomic, strong) QuMengNativeAdShakeView *shakeView;
// 初始化 QuMengNativeAdShakeView
- (QuMengNativeAdShakeView *)shakeView {
if (!_shakeView) {
QuMengNativeAdShakeView *shakeView = [[QuMengNativeAdShakeView alloc] init];
}
return _shakeView;
}
// 绑定自渲染广告对象
self.shakeView.nativeAd = nativeAd;
// 开启摇一摇
[self.shakeView startShake];
// 停止摇一摇
[self.shakeView stopShake];
版本要求大于等于 1.3.2,可参考 Demo 中 QuMengNativeCell 类
// 声明成员变量
@property (nonatomic, strong) QuMengNativeAdSlideView *slideView;
// 初始化 QuMengNativeAdSlideView
- (QuMengNativeAdSlideView *)slideView {
if (!_slideView) {
_slideView = [[QuMengNativeAdSlideView alloc] init];
}
return _slideView;
}
// 绑定自渲染广告对象
self.slideView.nativeAd = nativeAd;
提供竞价成功和失败的通知功能,便于广告业务处理。
- (void)winNotice:(NSInteger)auctionSecondPrice;
| 参数名称 | 类型 | 描述 |
|---|---|---|
auctionSecondPrice |
NSInteger |
竞价第二名的价格,单位为分 |
当竞价成功时调用此方法,告知竞价第二名的出价金额。
- (void)lossNotice:(NSInteger)auctionPrice
lossReason:(QuMengLossReason* _Nullable)lossReason
winBidder:(QuMengWinBidder* _Nullable)winBidder;
| 参数名称 | 类型 | 描述 |
|---|---|---|
auctionPrice |
NSInteger |
胜出者的价格,单位为分 |
winBidder |
QuMengWinBidder |
胜出者对应广告商(可选) 预定义值包括: - QuMengWinBidderCSJ:穿山甲- QuMengWinBidderGDT:优量汇- QuMengWinBidderKuaishou:快手- QuMengWinBidderBaidu:百度- QuMengWinBidderQumeng:趣盟- QuMengWinBidderOther:其他家 如果需要扩展,可以直接传入自定义的字符串 |
lossReason |
QuMengLossReason |
失败原因(可选) 预定义值包括: - QuMengLossReasonBaseFilter:底价过滤- QuMengLossReasonLowBidQuMengLossReason:bid 价格低于最高价- QuMengLossReasonBlacklist:素材黑名单过滤- QuMengLossReasonCompetitor:竞品过滤- QuMengLossReasonNoResponse:在有效时间内未返回广告- QuMengLossReasonOther:其他 如果需要扩展,可以直接传入自定义的字符串(建议字符串为 > 1000 的数字) |
当竞价失败时调用此方法,告知失败原因及胜出者信息
广告有效性接口
// 是否有效 YES: 有效 NO: 无效
- (BOOL)isValid;
进入 微信开放平台 创建移动应用,并获取相应的微信 AppID。
在移动端嵌入最新版 OpenSDK(仅嵌入即可,无需额外开发工作),并确保版本为 1.8.6 及以上。
在 趣盟平台 将微信开放平台填写的 AppID 与当前应用进行关联。
universal_link。嵌入并更新趣盟 SDK 至 1.3.1 或以上版本。
universal_link,以保证正常跳转。Topon自定义广告接入地址:https://help.takuad.com
将 QuMengTopOnSDK.xcframework 集成到项目中
或者使用 CocoaPods 集成
pod "QuMengTopOnSDK", path: "../QuMengTopOnSDK"
| 广告类型 | 广告类名称 | 服务器配置参数 |
|---|---|---|
| 激励视频 | QuMengRewardVideoAdapter | "slot_id" // 广告栏位 |
| 插屏 | QuMengInterstitialAdapter | "slot_id" // 广告栏位 |
| 原生 | QuMengNativeAdapter | "slot_id" // 广告栏位 "draw_feed": "1" // 渲染方式 - 模板渲染 "draw_feed": "0" // 渲染方式 - 自渲染 |
| 开屏 | QuMengSplashAdapter | "slot_id" // 广告栏位 |
Gromore自定义广告接入地址:https://www.csjplatform.com/gromore
将 QuMengGromoreSDK.xcframework 集成到项目中
或者使用 CocoaPods 集成
pod "QuMengGromoreSDK", path: "../QuMengGromoreSDK"
| 广告类型 | 广告类名称 | 服务器配置参数 |
|---|---|---|
| 激励视频 | QuMengGromoreRewardedVideoAdapter | "slot_id" // 广告栏位 |
| 插屏 | QuMengGromoreInterstitialAdapter | "slot_id" // 广告栏位 |
| 原生 | QuMengGromoreNativeAdapter | "slot_id" // 广告栏位 "draw_feed": "1" // 渲染方式 - 模板渲染 "draw_feed": "0" // 渲染方式 - 自渲染 |
| 开屏 | QuMengGromoreSplashAdapter | "slot_id" // 广告栏位 |
| 方法名 | 说明 | 备注 |
|---|---|---|
| getRequestId | 广告唯一 ID | |
| getIdeaId | 创意 ID | |
| getECPM | 广告价格 | 单位:分 |
| getTitle | 广告标题 | |
| getDesc | 广告副标题 | |
| getLandingPageUrl | 落地页地址 | 1.8 开始接口废弃 |
| getInteractionType | 广告交互类型 | 1:落地页类型 2:下载类型(包含拉新和拉活) 3:小程序 4:快应用 |
| getImageUrls | 广告图片链接 | 物料地址,自渲染时候生效,1.8 开始支持,优先使用该字段 |
| getMediaUrl | 广告图片链接 | 物料地址 |
| getAppLogoUrl | 广告创意 Logo | |
| getAppName | 广告创意应用名称 | |
| getAppPackageName | 广告创意包名 | |
| getAppInformation | 广告六要素信息 | 用于下载合规外显,包括应用版本、开发者信息、隐私协议链接、应用权限链接、应用功能链接 |
| getMediaSize | 素材宽高 | 图片或视频的宽高 |
| getMaterialType | 广告物料的类型 | 1:小图 2:大图 3:组图 4:视频 6:开屏 12:激励视频 |
| getVideoDuration | 视频播放时长 | |
| qmLogoUrl | 趣盟广告标识(无文字) | |
| qmTextLogoUrl | 趣盟广告标识(有文字) | |
| logoUrl | 广告封面 | 仅视频物料存在该字段 |
| getExtraInfo | 扩展信息 |
| 错误码 | 说明 | 备注 |
|---|---|---|
| 100001 | 无填充,没有合适广告返回导致,偶现属于正常情况 | - reason: 100 出价未过底价(固价未过栏位底价) - reason: 101 请求频率过高,建议避免同一时间内高频拉取广告 - reason: 102 无合适广告返回,检查流量提高用户质量。开发测试阶段可添加设备或更换设备,仍无填充可联系运营 - reason: 103 命中平台策略导致无填充,开发测试阶段可联系运营反馈 - reason: 104 命中检索 204 策略导致无填充,开发测试阶段可联系运营反馈 - reason: -1 其它异常 |
| 100002 | 服务器错误 | - reason: 201 检索服务器异常 |
| 100003 | 请求失败 | - reason: 301 请求体解析失败 |
| 100004 | 代码位不合法 | - reason: 401 检查代码位 ID 是否为空字符串或特殊字符。注:新建的代码位需约 10 分钟生效 |
| 100005 | 请求包名与媒体包名不一致 | - reason: 501 实际发起的包名和媒体的包名是否一致。注:若媒体通过趣盟运营创建,可联系趣盟运营协同排查 |
| 100006 | 广告请求代码位类型不匹配 | - reason: 601 例如开屏代码位使用了激励视频方法 |
| 200001 | 代码位不能为空 | 检查设置代码位 ID 是否为空 |
| 200002 | 无填充 | 命中平台策略导致无填充,开发测试阶段可联系运营反馈 |
| 200003 | 网络错误 | 网络连接异常 |
| 版本号 | 日期 | 备注 |
|---|---|---|
| 1.8.3.6 | 2026-08-11 | 【重要调整】getLandingPageUrl、getUniversalLink、getDeepLink、getDownloadUrl接口废弃 【重要调整】canSniffingInstalls接口废弃 【新增】位置地域接口,默认主动获取 【优化】激励视频样式,支持图文格式 【修复】已知问题 |
| 1.7.2.1 | 2026-07-02 | 【新增】自渲染支持多广告场景 【修复】已知问题 |
| 1.7.1.7 | 2026-06-16 | 【新增】信息流支持多广告场景 【优化】摇一摇/扭一扭交互 【优化】广告素材缓存 【修复】已知问题 |
| 1.6.0.5 | 2026-04-21 | 【新增】激励视频横板样式 【适配】618预算 【修复】已知问题 |
| 1.5.1.5 | 2026-04-09 | 【修复】已知问题 |
| 1.5.1.0 | 2026-03-12 | 【修复】已知问题 |
| 1.5.0.8 | 2026-02-04 | 【调整】平台支持自渲染信息流摇一摇配置,需开发者自定义UI 【修复】已知问题 |
| 1.4.0.9 | 2025-12-23 | 【优化】开屏滑动交互 【修复】已知问题 |
| 1.3.8 | 2025-11-13 | 【新增】插屏全屏样式 【修复】已知问题 【调整】Pod方式支持到小版本 |
| 1.3.7 | 2025-10-11 | 【新增】:激励视频新样式 【新增】:支持gromore平台适配 【合规】:**删除摇一摇组件接口** 【修复】:已知问题 |
| 1.3.6 | 2025-07-21 | 【新增】:广告有效性判断:isValid()方法 【合规】:交互优化 【修复】:已知问题 |
| 1.3.5 | 2025-06-20 | 【优化】:开屏广告样式 【修复】:已知问题 |
| 1.3.4 | 2025-04-21 | 【新增】:信息流模版样式 【新增】:iOS-CAID脱敏接口 【新增】:适配新预算链路 【优化】:开屏广告UI样式 【修复】:已知问题 |
| 1.3.3 | 2025-03-07 | 【优化】:SDK稳定性优化 【修复】:已知问题 |
| 1.3.2 | 2025-02-18 | 【新增】:信息流自渲染滑一滑组件 【修复】:已知问题 |
| 1.3.1 | 2025-01-23 | 【新增】:开屏增加新样式 【新增】:竞价成功&失败回传 【新增】:支持小程序预算 【修复】:已知问题 |
| 1.3.0 | 2025-01-02 | 【重要】:调整SDK代码架构,更新为纯OC 【新增】:开屏支持滑一滑交互 【新增】:信息流自渲染&模版渲染支持摇一摇 【新增】:信息流模版渲染支持滑一滑 【优化】:激励视频广告交互,支持摇一摇 【优化】:信息流自渲染视频物料接入方式 【修复】:已知问题 |
| 1.2.0 | 2024-10-30 | 【新增】:信息流模板渲染支持自定义尺寸 【新增】:视频类物料支持事件回调 【新增】:支持 POD 远程化 【优化】:广告链路适配新预算 【修复】:已知问题 |
| 1.1.0 | 2024-10-12 | 【修复】:已知问题 【优化】:SDK 性能优化 |
| 1.0.9 | 2024-09-20 | 【修复】:已知问题 |
| 1.0.7 | 2024-09-04 | 【新增】:TopOn 适配器 【优化】:广告交互链路 【修复】:已知问题 |
| 1.0.6 | 2024-08-23 | 【修复】:已知问题 |
| 1.0.5 | 2024-08-13 | 【优化】:适配电商预算 【修复】:链路上报异常问题 |
| 1.0.4 | 2024-07-29 | 【优化】:广告交互链路 【修复】:已知问题导致的崩溃 |
| 1.0.3 | 2024-05-29 | 【新增】:支持横版应用广告 【修复】:已知问题导致的崩溃 |
| 1.0.0 | 2024-02-21 | 【新增】:开屏、激励视频、插屏、信息流、自渲染 |