激励视频广告
在 iOS 应用中集成 CloudX 激励视频广告
@interface YourViewController () <CLXRewardedDelegate, CLXAdRevenueDelegate>
@property (nonatomic, strong) CLXRewarded *rewardedAd;
@property (nonatomic, assign) NSInteger retryAttempt;
@end
@implementation YourViewController
- (void)createRewardedAd {
self.rewardedAd = [[CloudXCore shared] createRewardedWithAdUnitId:@"your-rewarded-ad-unit-id"];
self.rewardedAd.delegate = self;
self.rewardedAd.revenueDelegate = self;
[self.rewardedAd load];
}
- (void)showRewardedAd {
if (self.rewardedAd.isReady) {
// 基本展示
[self.rewardedAd showFromViewController:self];
// 或使用可选的展示位置和自定义数据进行追踪
// [self.rewardedAd showFromViewController:self placement:@"bonus_coins" customData:@"level:5,coins:100"];
} else {
NSLog(@"激励视频广告尚未准备好");
}
}
- (void)dealloc {
[self.rewardedAd destroy];
}
#pragma mark - CLXRewardedDelegate
- (void)didLoadAd:(CLXAd *)ad {
NSLog(@"激励视频广告从 %@ 加载成功", ad.networkName);
self.retryAttempt = 0;
}
- (void)didFailToLoadAd:(NSString *)adUnitId error:(CLXError *)error {
NSLog(@"激励视频广告加载失败: %@", error.localizedDescription);
self.retryAttempt++;
NSTimeInterval delay = pow(2.0, MIN(5, self.retryAttempt));
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.rewardedAd load];
});
}
- (void)didDisplayAd:(CLXAd *)ad {
NSLog(@"激励视频广告已展示");
}
- (void)didFailToDisplayAd:(CLXAd *)ad error:(CLXError *)error {
NSLog(@"激励视频广告展示失败: %@", error.localizedDescription);
[self.rewardedAd load];
}
- (void)didHideAd:(CLXAd *)ad {
NSLog(@"激励广告已隐藏");
[self.rewardedAd load]; // 为下次使用重新加载
}
- (void)didClickAd:(CLXAd *)ad {
NSLog(@"激励视频广告被点击");
}
- (void)didRewardUserForAd:(CLXAd *)ad withReward:(CLXReward *)reward {
NSLog(@"用户获得奖励: %ld %@", (long)reward.amount, reward.label);
// 向用户发放奖励
}
#pragma mark - CLXAdRevenueDelegate
- (void)didPayRevenueForAd:(CLXAd *)ad {
NSLog(@"激励视频广告收入: %@ 来自 %@", ad.revenue, ad.networkName);
}
@endclass YourViewController: UIViewController, CLXRewardedDelegate, CLXAdRevenueDelegate {
private var rewardedAd: CLXRewarded?
private var retryAttempt = 0
func createRewardedAd() {
rewardedAd = CloudXCore.shared.createRewarded(adUnitId: "your-rewarded-ad-unit-id")
rewardedAd?.delegate = self
rewardedAd?.revenueDelegate = self
rewardedAd?.load()
}
func showRewardedAd() {
if rewardedAd?.isReady == true {
// 基本展示
rewardedAd?.show(from: self)
// 或使用可选的展示位置和自定义数据进行追踪
// rewardedAd?.show(from: self, placement: "bonus_coins", customData: "level:5,coins:100")
} else {
print("激励视频广告尚未准备好")
}
}
deinit {
rewardedAd?.destroy()
}
// MARK: - CLXRewardedDelegate
func didLoad(_ ad: CLXAd) {
print("激励视频广告从 \(ad.networkName ?? "unknown") 加载成功")
retryAttempt = 0
}
func didFailToLoadAd(_ adUnitId: String, error: CLXError) {
print("激励视频广告加载失败: \(error.localizedDescription)")
retryAttempt += 1
let delay = pow(2.0, Double(min(5, retryAttempt)))
DispatchQueue.main.asyncAfter(deadline: .now() + delay) { [weak self] in
self?.rewardedAd?.load()
}
}
func didDisplay(_ ad: CLXAd) {
print("激励视频广告已展示")
}
func didFailToDisplay(_ ad: CLXAd, error: CLXError) {
print("激励视频广告展示失败: \(error.localizedDescription)")
rewardedAd?.load()
}
func didHide(_ ad: CLXAd) {
print("激励广告已隐藏")
rewardedAd?.load() // 为下次使用重新加载
}
func didClick(_ ad: CLXAd) {
print("激励视频广告被点击")
}
func didRewardUser(for ad: CLXAd, with reward: CLXReward) {
print("用户获得奖励: \(reward.amount) \(reward.label)")
// 为用户发放奖励
}
// MARK: - CLXAdRevenueDelegate
func didPayRevenue(for ad: CLXAd) {
print("激励视频广告收入: \(ad.revenue ?? 0) 来自 \(ad.networkName ?? "unknown")")
}
}