为啥我在关闭视图控制器后无法显示我的 Facebook 插页式广告?

Posted

技术标签:

【中文标题】为啥我在关闭视图控制器后无法显示我的 Facebook 插页式广告?【英文标题】:Why cant I show my facebook interstitial ad after dismissing a view controller?为什么我在关闭视图控制器后无法显示我的 Facebook 插页式广告? 【发布时间】:2016-07-27 04:27:36 【问题描述】:

我正在使用 ReplayKit,当我按下取消或保存按钮时,它会关闭视图控制器,我想展示一个广告。问题是广告没有显示,我收到此错误:我该如何解决?谢谢!

警告:在调用接收到的消息、丢弃传入消息并使连接无效时捕获异常。 例外:必须在主线程上调用此方法

internal func previewControllerDidFinish(previewController: RPPreviewViewController) 

previewViewController.dismissViewControllerAnimated(true, completion: nil)

NSNotificationCenter.defaultCenter().postNotificationName("loadAd", object: nil)


【问题讨论】:

异常:必须在主线程上调用此方法。您可以使用 GCD 在主线程中分派函数。顺便说一句,用户界面必须用主线程更新。 对于 Swift 3 使用 DispatchQueue.main.async // put your code here 【参考方案1】:

所有与 UI 相关的操作都必须在主线程上完成。你可以使用 GCD 做这样的事情:

dispatch_async(dispatch_get_main_queue()) 
        previewViewController.dismissViewControllerAnimated(true, completion: nil)

你也可以在dismissViewControllerAnimated的完成块中发布通知

【讨论】:

我现在收到此错误:警告:尝试在 上显示 ,其视图不在窗口层次结构中! 在我关闭视图控制器以显示广告后,我不得不添加一个 2 秒的计时器,并且它起作用了。出于某种原因,在我关闭回放工具包窗口后,IT 不允许我立即调用广告。 2 秒延迟实际上是相当多的,尝试使用更低的值,如 0.2 或 0.5 秒以获得更无缝的体验。或者任何适合你的东西:)

以上是关于为啥我在关闭视图控制器后无法显示我的 Facebook 插页式广告?的主要内容,如果未能解决你的问题,请参考以下文章

显示和关闭视图控制器后,iOS 7.1 上的标签栏背景丢失

为啥我的表格视图单元格不能显示?

为啥一个简单的模态视图控制器在呈现和关闭时会滞后?

出现后无法关闭视图控制器

无法关闭视图控制器

为啥我的 UIView 的 UILabel 子视图不显示?