【问题标题】: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。如果有什么不同,试试这个。否则你没有听到正确的通知。

标签: ios swift nsnotificationcenter swift3


【解决方案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 中名为hellofunction 处中断。

如果您仍然不确定。执行此操作,将此发布通知代码放入App Delegate 并将添加观察者代码放入初始视图控制器中,添加选择器并在其中放置一个断点,尝试运行应用程序。您可以看到应用程序没有在初始视图控制器的断点处中断。

【讨论】:

  • 我没有调用发帖通知,AVPlayer不应该自动发帖吗?....“如果不是,我如何从WKWebView获取AVPlayerItem?跨度>
  • AVPlayer 应该自动调用它。检查文档 noh,我认为您遗漏了一些东西。你有没有在info.plist中添加相关键。
  • 我在文档中看不到任何 info.plist 键,您能帮帮我吗?
  • 有人知道 AVPlayerItemNewAccessLogEntry 是如何填充一些日志事件的吗? info.plist 中的这些键是什么?
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多