2017-05-04 12 views
0

L'application sur laquelle je travaille utilise MPMoviePlayerController pour lire des vidéos à des URL distantes. Lorsque je réutilise le lecteur pour lire plus d'une vidéo et que l'URL ne pointe pas vers une vidéo, le contrôleur n'envoie aucune notification. J'ai essayé MPMoviePlayerPlaybackDidFinishNotification, MPMoviePlayerPlaybackStateDidChangeNotification et MPMoviePlayerLoadStateDidChangeNotification. Aucun d'eux n'a été envoyé.Comment gérer l'URL invalide avec MPMoviePlayerController

J'ai également essayé de faire une fonction de temporisation personnalisée et appelle la fonction d'arrêt du lecteur comme ci-dessous. Mais, rien ne se passe. MPMoviePlayerController semble juste mort là et ne rien faire.

[self performSelector:@selector(checkTimeout) withObject:theMovie afterDelay:15]; 
 

 
-(void) checkTimeout { 
 
    [self.moviePlayer stop]; 
 
}

Est-ce que quelqu'un sait comment gérer une URL non valide avec MPMoviePlayerController?

+0

Afficher un code supplémentaire –

Répondre

0

J'ai moi-même trouvé une sorte de solution.

Il semble que MPMoviePlayerController a du mal à lire plus d'une URL. Si la 2ème URL ne pointe pas vers une vidéo ou invalide, le joueur ne fait rien. J'ai donc fini par créer une nouvelle instance de MPMoviePlayerController pour chaque URL et écouter MPMoviePlayerPlaybackDidFinishNotification.

0

Si vous n'avez pas reçu de notification sur les URL invalides, vous devez exécuter une temporisation de durée max (initialplaybacktime, 0) et une fois que vous ne recevez pas MPMoviePlayerReadyForDisplayDidChange notification dans ce délai, générez une erreur de non-disponibilité de la vidéo.

+0

Le lecteur a été ajouté à l'interface utilisateur et a joué au moins une vidéo. Votre solution fonctionnera-t-elle dans ce cas? – jarly

+0

Peu importe le nombre de vidéos chargées et le lecteur ajouté à l'interface utilisateur, une fois que vous avez chargé une nouvelle URL dans le lecteur, reprogrammez la minuterie. – NeverHopeless