Pas De AVPlayer Délégué? Comment suivre lorsque le chant fini de jouer? Objectif C de développement iPhone
J'ai regardé autour, mais je ne peux pas trouver un délégué protocole pour la AVPlayer class
. Ce qui donne?
Je suis l'aide de ses sous-classe, AVQueuePlayer
, à jouer d'un tableau de AVPlayerItems
, chaque chargé à partir d'une URL. Est-il possible que je peux appeler une méthode d'une chanson à la fin de la lecture? Notamment à la fin de la file d'attente?
Et si ce n'est pas possible, est-il une manière que je pourrais appeler une méthode quand la chanson COMMENCE à jouer, après mise en mémoire tampon? Je vais essayer d'obtenir un icône de chargement de là, mais il active l'icône avant que la musique ne commence réellement, même si c'est après le [audioPlayer play]
action.
Vous devez vous connecter pour publier un commentaire.
Oui, le AVPlayer classe n'ont pas de délégué du protocole à l'instar du AVAudioPlayer. Vous devez vous abonner à des notifications sur un AVPlayerItem. Vous pouvez créer un AVPlayerItem en utilisant la même URL que vous auriez autrement passer à
-initWithURL:
sur AVPlayer.itemDidFinishPlaying:
, par exemple, avec le côlon. DeNSNotificationCenter
de la documentation: La méthode spécifiée par notificationSelector doit avoir un et un seul argument (une instance deNSNotification
).Oui. Ajouter un KVO observateur d'état du lecteur ou de taux:
Donc, fondamentalement, c'est tout.
Avertissement: j'ai écrit que dans ici, donc je n'ai pas vérifier si le code est bon. AUSSI je n'ai jamais utilisé AVPlayer avant, mais il devrait être sur la droite.
Swift 3 - je ajouter un observateur à
AVPlayerItem
chaque fois que j'ajoute une vidéo pour le joueur:Il y a beaucoup d'informations dans l'Apple docs AVFoundation Guide De Programmation (cherchez la surveillance de la lecture de l'article). Il semble être principalement par le biais de KVO donc vous pouvez balayer vers le haut sur que si vous n'êtes pas trop familier (il y a un guide pour que Valeur De La Clé De L'Observation ProgrammingGuide.
Je suis en utilisant celui-ci, et ça fonctionne:
où
_playingAudio
est ma classe personnalisée avec des propriétés ettimeObserver
estid
ivar.