1

我正在使用 IMA SDK 播放 VAST 广告。广告视频播放完美,但当我点击视频广告中的“了解更多”按钮时,会打开应用内浏览器。在该窗口中单击“完成”后,视频广告不会恢复。我应该在这里添加一些东西来恢复它吗?我相信 SDK 会处理这种情况。

4

2 回答 2

1

需要实现 IMAWebOpenerDelegate

...
var adsManager: IMAAdsManager!
...

extension ViewController: IMAWebOpenerDelegate {

func webOpenerDidClose(inAppBrowser webOpener: NSObject!) {
        print("closed")
        adsManager.resume()
    }
    
    func webOpenerDidOpen(inAppBrowser webOpener: NSObject!) {
        // Do something
    }
    func webOpenerWillClose(inAppBrowser webOpener: NSObject!) {
        // Do something
    }
    
    func webOpenerWillOpen(inAppBrowser webOpener: NSObject!) {
        // Do something
    }
    func webOpenerWillOpenExternalBrowser(_ webOpener: NSObject!) {
        // Do something
    }

}
于 2020-11-16T14:07:10.813 回答
0

这个想法是让用户在您的应用重新获得焦点时恢复广告。请记住,用户可能会忘记应用程序在后台,因此用户可能会惊讶地听到应用程序在聚焦时发出广告。

  1. 在 IMA 播放器上添加播放按钮叠加层。

  2. 为按钮添加触发器

    func playBtnPress(){
    
      // make sure adsManager is initialized
    guard let adsManager = adsManager else {
        requestAds() // initialize adsManager
        return
    }
    
    // resume playback if paused
    if !adsManager.adPlaybackInfo.isPlaying {
        adsManager.resume()
    }
    }
    

3.添加IMAAdsManagerDelegate

    func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) {

    if event.type == IMAAdEventType.LOADED {
        // When the SDK notifies us that ads have been loaded, play them.
        // hide play button first
        playButton.isHidden = true
        adsManager.start()
    }
    
    if event.type == IMAAdEventType.RESUME {
        // When the SDK notifies us that ads playback has resumed from a pause
        // hide play button
        playButton.isHidden = true
    }
    
    if event.type == IMAAdEventType.PAUSE {
        // When the SDK notifies us that ads playback is paused 
        // Show play button
        playButton.isHidden = false
    }
    
    if event.type == IMAAdEventType.TAPPED {
        // You can also add allow the user to tap anywhere on the Ad to resume play
        if(!adsManager.adPlaybackInfo.isPlaying) {
            adsManager.resume()
        }
    }
}
于 2020-09-02T16:24:47.050 回答