为啥 AVPlayerItem 不触发它的通知?
Posted
技术标签:
【中文标题】为啥 AVPlayerItem 不触发它的通知?【英文标题】:Why is AVPlayerItem not firing its notifications?为什么 AVPlayerItem 不触发它的通知? 【发布时间】:2016-06-30 17:30:50 【问题描述】:我已经尝试了所有AVPlayerItem
通知,但没有运气......
应该发布通知时什么都没有发生。
我正在尝试从 WKWebView 中的网站下载视频
这是我在 swift 3.0 中的代码
override func viewDidLoad()
super.viewDidLoad()
NotificationCenter.default().addObserver(self, selector: #selector(self.downloadAudioVisualItem), name: NSNotification.Name.AVPlayerItemNewAccessLogEntry, object: nil)
func downloadAudioVisualItem()
print("Hello")
override func viewDidDisappear(_ animated: Bool)
super.viewDidDisappear(false)
NotificationCenter.default().removeObserver(self)
【问题讨论】:
把代码贴到你写downloadAudioVisualItem
的地方。
我已经更新了描述......但是所有这些代码都在 UIViewController 中可用,而 WKWebView 可用。
我必须看到函数downloadAudioVisualItem
。我认为参数中缺少某些内容。
它现在只打印你好,我正在测试....它在viewDidLoad()
和viewDidDisappear()
之间
将通知观察者放入 viewDidAppear 而不是 viewDidLoad。如果有什么不同,试试这个。否则你没有听到正确的通知。
【参考方案1】:
您似乎在添加观察者之前就调用了 postNotification。我的意思是应该首先调用观察者,以便只有它可以开始监听通知。
在App Delegate
试试这个
import AVFoundation
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
let MyGreatNotification = Notification.Name.AVPlayerItemNewAccessLogEntry
NotificationCenter.default().addObserver(self, selector: #selector(self.hello), name: MyGreatNotification, object: nil)
return true
func hello()
// Put break point here
并像这样在您的初始视图控制器中添加发布通知代码。
import AVFoundation
override func viewDidLoad()
super.viewDidLoad()
let MyGreatNotification = Notification.Name.AVPlayerItemNewAccessLogEntry
NotificationCenter.default().post(name: MyGreatNotification, object: self)
就是这样尝试运行你的应用程序,你可以看到应用程序将在App Delegate
中名为hello
的function
处中断。
如果您仍然不确定。执行此操作,将此发布通知代码放入App Delegate
并将添加观察者代码放入初始视图控制器中,添加选择器并在其中放置一个断点,尝试运行应用程序。您可以看到应用程序没有在初始视图控制器的断点处中断。
【讨论】:
我没有调用发帖通知,AVPlayer
不应该自动发帖吗?....“如果不是,我如何从WKWebView
获取AVPlayerItem
?跨度>
AVPlayer
应该自动调用它。检查文档 noh,我认为您遗漏了一些东西。你有没有在info.plist
中添加相关键。
我在文档中看不到任何 info.plist
键,您能帮帮我吗?
有人知道 AVPlayerItemNewAccessLogEntry 是如何填充一些日志事件的吗? info.plist 中的这些键是什么?以上是关于为啥 AVPlayerItem 不触发它的通知?的主要内容,如果未能解决你的问题,请参考以下文章
为啥本地通知未针对 UNCalendarNotificationTrigger 触发
我的 Redux 状态发生了变化,为啥 React 没有触发重新渲染?