You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS端IronSource激励视频代理设置问题求助

问题分析与修复方案

我看了你的代码,问题主要出在代理设置和广告展示的视图控制器参数这两个地方,这就是为什么广告关闭时rewardedVideoDidClose这类代理方法没触发的原因,下面给你一步步讲怎么修复:

1. 代理设置错误

你在viewDidLoad里写的:

IronSource.setRewardedVideoDelegate(DetailViewController)

这里传的是DetailViewController类本身,而不是当前的视图控制器实例,代理需要绑定到当前对象上,应该改成传self:

IronSource.setRewardedVideoDelegate(self)

2. 广告展示的ViewController参数错误

你调用展示广告的代码:

IronSource.showRewardedVideo(with:UIViewController(), placement: "DefaultRewardedVideo")

这里新建了一个空的UIViewController实例,广告需要依附在当前视图控制器上才能正确传递代理事件,应该改成传当前的self:

IronSource.showRewardedVideo(with: self, placement: "DefaultRewardedVideo")

修复后的完整代码

class DetailViewController: UIViewController, ISRewardedVideoDelegate { 
    
    @IBAction func ironSourceActionAd(_ sender: Any) {
        // 修复:传递当前视图控制器self
        IronSource.showRewardedVideo(with: self, placement: "DefaultRewardedVideo") 
    }

    // MARK: - ISRewardedVideoDelegate Methods
    public func rewardedVideoHasChangedAvailability(_ available: Bool) { }
    public func rewardedVideoDidEnd() { }
    public func rewardedVideoDidStart() { }
    
    public func rewardedVideoDidClose() {
        text()
        print("closed")
    }
    
    public func rewardedVideoDidOpen() { print("Opened") }
    public func rewardedVideoDidFailToShowWithError(_ error: Error!) { }
    public func didReceiveReward(forPlacement placementInfo: ISPlacementInfo!) { }
    public func didClickRewardedVideo(_ placementInfo: ISPlacementInfo!) { }

    override func viewDidLoad() {
        super.viewDidLoad()
        // 初始化IronSource,注意确保AppKey正确,且整个App只初始化一次
        IronSource.initWithAppKey("72c23e35")
        // 修复:传递当前实例self作为代理
        IronSource.setRewardedVideoDelegate(self)
        ISIntegrationHelper.validateIntegration()
    }
    
    // 你定义的text()方法
    func text() {
        // 这里写你的业务逻辑
    }
}

额外注意事项

  • 确保placement: "DefaultRewardedVideo"这个广告位名称和你在IronSource后台配置的完全一致,大小写敏感
  • IronSource.initWithAppKey建议放在AppDelegate的didFinishLaunchingWithOptions方法里初始化,避免重复初始化
  • 可以通过ISIntegrationHelper.validateIntegration()的输出来确认集成是否正确,查看Xcode控制台的日志信息

内容的提问来源于stack exchange,提问作者iOSHG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:17:05