# LQAdsSDK **Repository Path**: open-code-store/LQAdsSDK ## Basic Information - **Project Name**: LQAdsSDK - **Description**: iOS AdsSDK几行代码就可以快速实现开屏、Banner横幅、插屏、激励视频、原生信息流、全屏等广告形式。 - **Primary Language**: Objective-C - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-09 - **Last Updated**: 2024-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LQAdsSDK iOS AdsSDK几行代码就可以快速实现开屏、Banner横幅、插屏、激励视频、原生信息流、全屏等广告形式。 ### 功能及简介 * 1、开屏 * 2、Banner横幅 * 3、插屏 * 4、激励视频 * 5、原生信息流 * 6、全屏 * 7、在线日志调试 ### 相关ID * [申请地址](https://www.youlianghz.com/#/) * AppID:AppID * CpID:CpID * AdID:广告位ID ### 开发环境&支持版本 * 开发工具:推荐使用Xcode 13及以上版本 * 部署目标:iOS 11.0及以上版本 * 开发管理工具:[CocoaPods](https://cocoapods.org/) * 支持Swift ### 使用CocoaPods安装 ```ruby source 'https://github.com/CocoaPods/Specs.git' source 'https://gitee.com/open-code-store/LQSpecs.git' ``` ```ruby pod 'LQAdsSDK', '~> 4.0.1' ``` ```ruby post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end end ``` ### 使用姿势 ```objc #import ``` ### 初始化SDK ```objc // 初始化SDK NSString *appid = @"你申请的AppID"; NSString *cpID = @"你申请的CpID"; [LQAdsSDKManager setAppID:appid cpID:cpID]; [LQAdsSDKManager initSDK]; ``` ### 在线调试 ```objc #import ``` ```objc [LQOnlineLog open]; ``` ### 开屏广告 ```objc LQAdSplash *splash = [[LQAdSplash alloc] initWithAdid:self.adid viewController:self]; ``` ### Banner横幅广告 ```objc LQAdBanner *ad = [[LQAdBanner alloc] initWithAdid:self.adid adContainer:self.adContainer viewController:self]; ``` ### 插屏广告 ```objc LQAdInterstitial *ad = [[LQAdInterstitial alloc] initWithAdid:self.adid viewController:self]; ``` ### 激励视频广告 ```objc LQAdRewardVideo *ad = [[LQAdRewardVideo alloc] initWithAdid:self.adid viewController:self]; ``` ### 激励视频广告(有参) ```objc LQAdRewardVideo *ad = [[LQAdRewardVideo alloc] initWithAdid:LQRewardVideoAdID userID:@"123456" extra:@"{\"name\":\"lily\",\"age\":\"18\"}" viewController:self]; ``` ### 原生信息流广告 ```objc LQAdNativeExpress *ad = [[LQAdNativeExpress alloc] initWithAdid:self.adid viewController:self adSize:CGSizeMake(self.view.frame.size.width, 0)]; ``` ### 全屏广告 ```objc LQAdFullScreenVideo *ad = [[LQAdFullScreenVideo alloc] initWithAdid:self.adid viewController:self]; ``` ### 核心协议 ```objc /// 广告基础命令 @protocol LQTXAdsBaseCommand /// 加载广告 - (void)loadAd; /// 展示广告 - (void)showAd; /// 加载并展现 - (void)loadAndShowAd; @end /// 广告基础代理 @protocol LQTXAdsBaseDelegate @optional /// 广告曝光成功 - (void)lqAdsExposured; /// 广告点击回调 - (void)lqAdsClicked; /// 广告数据请求成功后调用 - (void)lqAdsUnifiedDidLoad; /// 广告数据加载失败 - (void)lqAdsUnifiedLoadFailure:(NSError *)error; /// 广告关闭的回调 - (void)lqAdsDidClose; @end /// 构建 @protocol LQTXAdsStructure /// 初始化 /// @param adid 广告位ID /// @param viewController 视图控制器 - (instancetype)initWithAdid:(NSString *)adid viewController:(UIViewController *)viewController; @end /// Banner代理 @protocol LQTXAdsBannerDelegate @optional @end /// 全屏视频广告代理 @protocol LQTXAdsFullscreenVideoDelegate @optional /// 视频播放完成 - (void)lqAdsFullScreenVideoOnAdPlayFinish; @end /// 插屏广告代理 @protocol LQTXAdsInterstitialDelegate @optional @end /// 信息流广告代理 @protocol LQTXAdsNativeExpressDelegate @optional /// 广告数据拉取成功 - (void)lqAdsNativeExpressOnAdLoadSuccess:(nullable LQAdNativeExpressView *)adView; /// 广告曝光 - (void)lqAdsNativeExpressOnAdShow:(nullable LQAdNativeExpressView *)adView; /// 广告点击 - (void)lqAdsNativeExpressOnAdClicked:(nullable LQAdNativeExpressView *)adView; /// 广告渲染成功 - (void)lqAdsNativeExpressOnAdRenderSuccess:(nullable LQAdNativeExpressView *)adView; /// 广告渲染失败 - (void)lqAdsNativeExpressOnAdRenderFail:(nullable LQAdNativeExpressView *)adView; /// 广告被关闭 - (void)lqAdsNativeExpressOnAdClosed:(nullable LQAdNativeExpressView *)adView; /// 广告数据加载失败 - (void)lqAdsUnifiedLoadFailure:(NSError *)error; @end /// 激励视频代理 @protocol LQTXAdsRewardVideoDelegate @optional /// 广告视频缓存完成 - (void)lqAdsRewardVideoOnAdVideoCached; /// 广告视频播放完成 - (void)lqAdsRewardVideoAdDidPlayFinish; /// 广告到达激励时间 - (void)lqAdsRewardVideoAdDidRewardEffective; /// 广告跳过(穿山甲有,快手有,广点通没有) - (void)lqAdsRewardedVideoAdDidClickSkip; @end /// 开屏代理 @protocol LQTXAdsSplashDelegate @optional /// 广告点击跳过 - (void)lqAdsSplashOnAdSkipClicked; /// 广告倒计时结束回调 - (void)lqAdsSplashOnAdCountdownToZero; @end ``` ### 广告实例 ```objc // // LQAdsViewController.m // LqAdsSDK_Example // // Created by 张雄 on 2022/4/13. // Copyright © 2022 zhangxiong. All rights reserved. // #import "LQAdsViewController.h" #import #import #import NSString * const LQLaunchScreenName = @"lq_ads_sdk_launch_screen"; NSString * const LQLogoRectangleName = @"lq_ads_sdk_new_logo"; NSString * const LQLogoName = @"lq_ads_sdk_logo"; NSString * const LQRewardVideoAdID = @"276850147532997"; NSString * const LQFullScreenVideoAdID = @"276850268471493"; NSString * const LQInterstitialAdID = @"276850232066245"; NSString * const LQNativeExpressAdID = @"276850097553605"; NSString * const LQBannerAdID = @"276850187043013"; NSString * const LQSplashAdID = @"276850050248901"; @interface LQAdsViewController () @property (nonatomic,strong)UIImageView *backgroundImageView; @property (nonatomic,strong)UIImageView *startupBackgroundImageView; @property (nonatomic,strong)LQAdRewardVideo *rewardVideoAd; @property (nonatomic,strong)LQAdFullScreenVideo *fullScreenVideoAd; @property (nonatomic,strong)LQAdInterstitial *interstitialAd; @property (nonatomic,strong)LQAdNativeExpress *nativeExpressAd; @property (nonatomic,strong)LQAdBanner *bannerAd; @property (nonatomic,strong)LQAdSplash *splashAd; @property (nonatomic,strong)UIView *adContainer; @property (nonatomic,strong)UIView *lastView; @end @implementation LQAdsViewController - (void)viewDidLoad { [super viewDidLoad]; // 背景视图 self.backgroundImageView = [[UIImageView alloc] init]; self.backgroundImageView.userInteractionEnabled = YES; self.backgroundImageView.image = [UIImage imageNamed:LQLaunchScreenName]; [self.view addSubview:self.backgroundImageView]; [self.backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; // 初始化SDK UIButton *initSDKButton = [self buttonWithTitle:@"初始化SDK"]; [initSDKButton addTarget:self action:@selector(initSDK:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:initSDKButton]; [initSDKButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(@100); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // 激励视频广告 UIButton *rewardVideoButton = [self buttonWithTitle:@"加载并显示激励视频广告"]; [rewardVideoButton addTarget:self action:@selector(rewardVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:rewardVideoButton]; [rewardVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(initSDKButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; UIButton *loadRewardVideoButton = [self buttonWithTitle:@"加载激励视频广告"]; [loadRewardVideoButton addTarget:self action:@selector(loadRewardVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:loadRewardVideoButton]; [loadRewardVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(rewardVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.width.equalTo(self.backgroundImageView).multipliedBy(0.45); }]; UIButton *showRewardVideoButton = [self buttonWithTitle:@"显示激励视频广告"]; [showRewardVideoButton addTarget:self action:@selector(showRewardVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:showRewardVideoButton]; [showRewardVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(rewardVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.right.equalTo(@-15); make.width.equalTo(self.backgroundImageView).multipliedBy(0.45); }]; // 全屏视频广告 UIButton *fullScreenVideoButton = [self buttonWithTitle:@"加载并显示全屏视频广告"]; [fullScreenVideoButton addTarget:self action:@selector(fullScreenVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:fullScreenVideoButton]; [fullScreenVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(showRewardVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; UIButton *loadFullScreenVideoButton = [self buttonWithTitle:@"加载全屏视频广告"]; [loadFullScreenVideoButton addTarget:self action:@selector(loadFullScreenVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:loadFullScreenVideoButton]; [loadFullScreenVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(fullScreenVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.width.equalTo(self.backgroundImageView).multipliedBy(0.45); }]; UIButton *showFullScreenVideoButton = [self buttonWithTitle:@"显示全屏视频广告"]; [showFullScreenVideoButton addTarget:self action:@selector(showFullScreenVideo:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:showFullScreenVideoButton]; [showFullScreenVideoButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(fullScreenVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.right.equalTo(@-15); make.width.equalTo(self.backgroundImageView).multipliedBy(0.45); }]; // 插屏广告 UIButton *interstitialButton = [self buttonWithTitle:@"插屏广告"]; [interstitialButton addTarget:self action:@selector(interstitial:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:interstitialButton]; [interstitialButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(showFullScreenVideoButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // 原生广告 UIButton *nativeExpressButton = [self buttonWithTitle:@"原生广告"]; [nativeExpressButton addTarget:self action:@selector(nativeExpress:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:nativeExpressButton]; [nativeExpressButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(interstitialButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // Banner广告 UIButton *bannerButton = [self buttonWithTitle:@"Banner广告"]; [bannerButton addTarget:self action:@selector(banner:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:bannerButton]; [bannerButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(nativeExpressButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // 开屏广告 UIButton *splashButton = [self buttonWithTitle:@"开屏广告"]; [splashButton addTarget:self action:@selector(splash:) forControlEvents:UIControlEventTouchUpInside]; [self.backgroundImageView addSubview:splashButton]; [splashButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(bannerButton.mas_bottom).offset(15); make.height.equalTo(@35); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // 最后的视图 self.lastView = splashButton; // SDK版本 UILabel *sdKVersion = [UILabel new]; sdKVersion.text = [NSString stringWithFormat:@"SDK版本:%@",[LQAdsSDKManager version]]; sdKVersion.textColor = [UIColor whiteColor]; sdKVersion.textAlignment = NSTextAlignmentCenter; sdKVersion.font = [UIFont systemFontOfSize:14.0]; [self.backgroundImageView addSubview:sdKVersion]; [sdKVersion mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.backgroundImageView).offset(-40); make.height.equalTo(@20); make.left.equalTo(@15); make.right.equalTo(@-15); }]; // 启动背景图 self.startupBackgroundImageView = [[UIImageView alloc] init]; self.startupBackgroundImageView.userInteractionEnabled = YES; self.startupBackgroundImageView.image = [UIImage imageNamed:LQLaunchScreenName]; [self.view addSubview:self.startupBackgroundImageView]; [self.startupBackgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; UIImageView *logo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:LQLogoName]]; [self.startupBackgroundImageView addSubview:logo]; [logo mas_makeConstraints:^(MASConstraintMaker *make) { make.size.equalTo(@80); make.center.equalTo(self.view); }]; // 启动开屏 [self splash]; } - (UIButton *)buttonWithTitle:(NSString *)title { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.backgroundColor = [UIColor whiteColor]; [button setTitle:title forState:UIControlStateNormal]; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [button setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted]; button.titleLabel.font = [UIFont systemFontOfSize:14]; return button; } - (LQAdRewardVideo *)createRewardVideoAd { LQAdRewardVideo *ad = [[LQAdRewardVideo alloc] initWithAdid:LQRewardVideoAdID viewController:self]; return ad; } - (LQAdFullScreenVideo *)createFullScreenVideoAd { LQAdFullScreenVideo *ad = [[LQAdFullScreenVideo alloc] initWithAdid:LQFullScreenVideoAdID viewController:self]; return ad; } - (LQAdInterstitial *)createInterstitialAd { LQAdInterstitial *ad = [[LQAdInterstitial alloc] initWithAdid:LQInterstitialAdID viewController:self]; return ad; } - (LQAdNativeExpress *)createNativeExpressAd { LQAdNativeExpress *ad = [[LQAdNativeExpress alloc] initWithAdid:LQNativeExpressAdID viewController:self adSize:CGSizeMake(self.view.frame.size.width - 30, 250)]; return ad; } - (LQAdBanner *)createBannerAd { [self removeAdContainer]; self.adContainer = [self createAdContainer]; [self.backgroundImageView addSubview:self.adContainer]; self.adContainer.frame = CGRectMake(15, CGRectGetMaxY(self.lastView.frame) + 15, self.view.frame.size.width - 30, 70); LQAdBanner *ad = [[LQAdBanner alloc] initWithAdid:LQBannerAdID adContainer:self.adContainer viewController:self]; return ad; } - (LQAdSplash *)createSplashAd { LQAdSplash *ad = [[LQAdSplash alloc] initWithAdid:LQSplashAdID viewController:self]; return ad; } - (void)removeAdContainer { [self.adContainer removeFromSuperview]; self.adContainer = nil; } - (UIView *)createAdContainer { return [UIView new]; } // 初始化SDK - (void)initSDK:(id)sender { [SVProgressHUD show]; [LQAdsSDKManager initSDKWithSuccess:^{ [SVProgressHUD dismiss]; } failure:^(NSError * _Nonnull error) { [SVProgressHUD dismiss]; }]; } // 激励视频广告 - (void)rewardVideo:(id)sender { [SVProgressHUD show]; self.rewardVideoAd.delegate = nil; self.rewardVideoAd = nil; self.rewardVideoAd = [self createRewardVideoAd]; self.rewardVideoAd.delegate = self; [self.rewardVideoAd loadAndShowAd]; } - (void)loadRewardVideo:(id)sender { [SVProgressHUD show]; self.rewardVideoAd.delegate = nil; self.rewardVideoAd = nil; self.rewardVideoAd = [self createRewardVideoAd]; self.rewardVideoAd.delegate = self; [self.rewardVideoAd loadAd]; } - (void)showRewardVideo:(id)sender { [self.rewardVideoAd showAd]; } // 全屏视频广告 - (void)fullScreenVideo:(id)sender { [SVProgressHUD show]; self.fullScreenVideoAd.delegate = nil; self.fullScreenVideoAd = nil; self.fullScreenVideoAd = [self createFullScreenVideoAd]; self.fullScreenVideoAd.delegate = self; [self.fullScreenVideoAd loadAndShowAd]; } - (void)loadFullScreenVideo:(id)sender { [SVProgressHUD show]; self.fullScreenVideoAd.delegate = nil; self.fullScreenVideoAd = nil; self.fullScreenVideoAd = [self createFullScreenVideoAd]; self.fullScreenVideoAd.delegate = self; [self.fullScreenVideoAd loadAd]; } - (void)showFullScreenVideo:(id)sender { [self.fullScreenVideoAd showAd]; } // 插屏广告 - (void)interstitial:(id)sender { [self removeAdContainer]; [SVProgressHUD show]; self.interstitialAd.delegate = nil; self.interstitialAd = nil; self.interstitialAd = [self createInterstitialAd]; self.interstitialAd.delegate = self; [self.interstitialAd loadAndShowAd]; } // 原生广告 - (void)nativeExpress:(id)sender { [self removeAdContainer]; [SVProgressHUD show]; self.nativeExpressAd.delegate = nil; self.nativeExpressAd = nil; self.nativeExpressAd = [self createNativeExpressAd]; self.nativeExpressAd.delegate = self; [self.nativeExpressAd loadAndShowAd]; } // Banner广告 - (void)banner:(id)sender { [self removeAdContainer]; [SVProgressHUD show]; self.bannerAd.delegate = nil; self.bannerAd = nil; self.bannerAd = [self createBannerAd]; self.bannerAd.delegate = self; [self.bannerAd loadAndShowAd]; } // 开屏广告 - (void)splash:(id)sender { [SVProgressHUD show]; [self splash]; } /// 创建开屏底部视图 - (UIView *)createSplashAdBottomView { UIView *bottomView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:LQLogoRectangleName]]; bottomView.frame = CGRectMake(0, 0, self.view.frame.size.width, 100); return bottomView; } // 开屏广告 - (void)splash { self.splashAd.delegate = nil; self.splashAd = nil; self.splashAd = [self createSplashAd]; self.splashAd.backgroundImage = [UIImage imageNamed:LQLaunchScreenName]; self.splashAd.logoImage = [UIImage imageNamed:LQLogoRectangleName]; self.splashAd.showLogoRequire = YES; self.splashAd.delegate = self; [self.splashAd loadAndShowAd]; } /// 广告数据加载失败 - (void)lqAdsUnifiedLoadFailure:(NSError *)error { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 广告关闭的回调 - (void)lqAdsDidClose { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 广告数据请求成功后调用 - (void)lqAdsUnifiedDidLoad { [SVProgressHUD dismiss]; } /// 激励视频广告跳过(穿山甲有,快手有,广点通没有) - (void)lqAdsRewardedVideoAdDidClickSkip { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 开屏广告点击跳过 - (void)lqAdsSplashOnAdSkipClicked { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 原生广告数据加载失败 - (void)lqAdsNativeExpressOnAdRenderFail:(nullable LQAdNativeExpressView *)adView { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 原生广告关闭的回调 - (void)lqAdsNativeExpressOnAdClosed:(nullable LQAdNativeExpressView *)adView { [SVProgressHUD dismiss]; [self removeAdContainer]; [self.startupBackgroundImageView removeFromSuperview]; } /// 原生广告数据拉取成功 - (void)lqAdsNativeExpressOnAdLoadSuccess:(LQAdNativeExpressView *)adView { [SVProgressHUD dismiss]; [self removeAdContainer]; self.adContainer = [self createAdContainer]; [self.backgroundImageView addSubview:self.adContainer]; [self.adContainer mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.lastView.mas_bottom).offset(15); make.left.equalTo(@15); make.right.equalTo(@-15); make.bottom.equalTo(self.backgroundImageView).offset(-15); }]; // 渲染并添加原生广告 LQAdNativeExpressView *nativeExpress = adView; [nativeExpress render]; UIView *nativeExpressView = [nativeExpress expressView]; [self.adContainer addSubview:nativeExpressView]; } /// 原生广告渲染成功 - (void)lqAdsNativeExpressOnAdRenderSuccess:(LQAdNativeExpressView *)adView { UIView *nativeExpressView = [adView expressView]; CGSize size = nativeExpressView.frame.size; [nativeExpressView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.equalTo(self.adContainer); make.height.equalTo(@(size.height)); }]; [self.adContainer mas_updateConstraints:^(MASConstraintMaker *make) { make.height.equalTo(@(adView.expressView.frame.size.height)); }]; } @end ``` ### 其他广告实例 * 见Example ### 运行注意事项 * 支持模拟器调试 * 建议真机调试 ### 反馈 > QQ:1754748325
> E-mail:xtz_pioneer@icloud.com
> 开发中遇到bug,希望小伙伴儿们能够及时反馈到QQ或E-mail!
### 版本&更新 > 更新时间:2024.05.23 版本:4.0.1 更新内容:修复策略配置异常导致崩溃问题
> 更新时间:2024.05.22 版本:4.0.0 更新内容:扩展多个新渠道
> 更新时间:2024.04.17 版本:3.6.2 更新内容:更新第三方SDK
> 更新时间:2024.04.08 版本:3.6.1 更新内容:同步更新SDK初始化方法,增强系统稳定性
> 更新时间:2024.03.27 版本:3.6.0 更新内容:新增多广告位配置
> 更新时间:2024.03.18 版本:3.5.0 更新内容:修复少量BUG,更新第三方SDK以及增强系统稳定性
> 更新时间:2024.01.02 版本:3.4.0 更新内容:更新第三方SDK以及增强系统稳定性
> 更新时间:2023.12.21 版本:3.3.0 更新内容:优化并更新原生广告API
> 更新时间:2023.11.17 版本:3.2.3 更新内容:修复相关BUG,增强系统稳定性
> 更新时间:2023.11.2 版本:3.2.2 更新内容:提升系统稳定性
> 更新时间:2023.10.20 版本:3.2.1 更新内容:更新CSJ融合SDK以及其他依赖,删除开屏CSJGM相关API,增强系统稳定性。
> 更新时间:2023.9.7 版本:3.2.0 更新内容:更新CSJ融合SDK。
> 更新时间:2023.9.1 版本:3.1.0 更新内容:新增广告级策略。
> 更新时间:2023.8.25 版本:3.0.2 更新内容:更新相关策略。
> 更新时间:2023.8.2 版本:3.0.1 更新内容:更新依赖以及新增在线日志调试。
> 更新时间:2023.7.3 版本:3.0.0 更新内容: 新增穿山甲GM渠道。
> 更新时间:2023.6.15 版本:2.0.1 更新内容: 激励视频新增额外参数。
> 更新时间:2023.6.13 版本:2.0.0 更新内容: 新增SDK初始化日志输出。
> 更新时间:2022.4.11 版本:1.0.0 更新内容: 完善相关功能。