2016-06-30 9 views
1

Ich habe alle AVPlayerItem Benachrichtigung ohne Glück versucht .... Nichts passiert, wenn die Benachrichtigung sollte posten.Warum feuert AVPlayerItem seine Benachrichtigungen nicht ab?

Ich versuche

Hier ein Video von einer Website in WKWebView zum Download ist mein Code in swift 3.0 ist

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) 
} 
+0

Geben Sie den Code ein, in den Sie 'downloadAudioVisualItem' geschrieben haben. – Dershowitz123

+0

Ich habe die Beschreibung aktualisiert ... Aber all dieser Code ist in UIViewController verfügbar, wo das WKWebView verfügbar ist. – Raffi

+0

Ich muss die Funktion 'downloadAudioVisualItem' sehen. Ich glaube, in den Parametern fehlt etwas. – Dershowitz123

Antwort

0

Es scheint, dass Sie postNotification fordern, bevor auch die Beobachter hinzufügen. Ich meine, der Beobachter sollte zuerst angerufen werden, damit nur er auf die Benachrichtigung hören kann.

die Sie interessieren in 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 
    } 

Und fügen Sie Benachrichtigungscode in Ihrer ersten View-Controller wie dieses Posting.

import AVFoundation

override func viewDidLoad() { 
     super.viewDidLoad() 

     let MyGreatNotification = Notification.Name.AVPlayerItemNewAccessLogEntry 
     NotificationCenter.default().post(name: MyGreatNotification, object: self) 
    } 

Das ist es versuchen, Ihre Anwendung ausgeführt wird, können Sie sehen, dass der App auf den hello in App Delegate namens function brechen.

Wenn Sie noch nicht sicher sind. Tun Sie dies, setzen Sie diesen Posting-Benachrichtigungscode in App Delegate und fügen Sie Beobachter-Code in den ersten View-Controller ein, fügen Sie den Selektor hinzu und setzen Sie einen Breakpoint dort, versuchen Sie es mit der App. Sie können sehen, dass die App nicht am Unterbrechungspunkt im ursprünglichen Ansichtscontroller unterbrochen wurde.

+0

Ich rufe die Posting Notification nicht an, sollte 'AVPlayer' das nicht automatisch posten? ...." Wenn nicht, wie würde ich das 'AVPlayerItem' aus dem' WKWebView' bekommen? – Raffi

+0

'' 'AVPlayer''' sollte Rufen Sie es automatisch auf Überprüfen Sie durch die Dokumentation noh, ich denke, dass Sie etwas vermissen. Haben Sie relevante Schlüssel in '' 'info.plist''' hinzugefügt. –

+0

Ich kann keine' info.plist' Schlüssel in der Dokumentation sehen Hilfst du mir? – Raffi