Comment faire pour obtenir une description de l'erreur lors de la lecture échoue sur MPMoviePlayerController
Je veux montrer un UIAlert
si la Vidéo-Jeu d'échec. J'ai donc enregistré le MPMoviePlayerPlaybackDidFinishNotification
pour mon Lecteur de Film:
[[NSNotificationCenter defaultCenter] addObserver:auto selector:@selector(myMovieFinishedCallback:) nom:MPMoviePlayerPlaybackDidFinishNotification objet:auto.moviePlayer];
Dans mon myMovieFinishedCallback: - je vérifier si, dans les Infos de l'Utilisateur du Dictionnaire est un Objet nommé error
. Sur mon appareil je n'ai pas cette erreur (sur aucun réseau d'erreur, 404 erreur de fichier). Sur le Simulateur d'iPhone, je reçois l'erreur.
Comment puis-je vérifier correctement le raisonnement, lorsque je reçois la MPMoviePlayerPlaybackDidFinishNotification
?
OriginalL'auteur brokedid | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
Malheureusement,
MPMoviePlayerController
(jusqu'mais pas y compris iOS 4.3) n'a pas détaillé l'identification des problèmes à partir de ce qui est disponible à partir de la documentation. Il renvoie simplementMPMovieFinishReasonPlaybackError
en cas de problème au sein de la UserInfo deMPMoviePlayerPlaybackDidFinishNotification
.Avec iOS 4.3 nous avons finalement eu la
errorLog
etaccessLog
propriétés contenant étendu et assez d'informations utiles.Voir MPMoviePlayerController De Référence.
Avec iOS 5.0 il y a un
error
clé de venir avec de la notification de la aussi sur l'appareil construit et pas seulement dans le simulateur. Queerror
est une instance deNSError
et fournitures de renseignements très utiles. Malheureusement, cela n'a pas été documentée par Apple, donc il peut changer à n'importe quel version de l'iOS. En outre, il semble y avoir aucune explication sur l'erreur donnée-codes. Par exemple, un État HTTP:404 serait le résultat d'une erreur de code-1100
à l'intérieur de l'erreur donnée d'instance. Cependant, ce serait un exemple de la façon de traiter cette notification, dans le plus adéquat.Que serait un bon gestionnaire de notification:
Dernier mais non le moins, ne pas oublier de retirer la notification du gestionnaire par défaut au centre lors de la libération de l'instance de l'objet que vous manipulez dans.
Étant donné que Apple a retiré de MPMoviePlayer, j'ai l'impression qu'elle est beaucoup plus sûr pari d'utiliser AVFoundation à la place.
OriginalL'auteur Till
J'ai eu le même problème. bien que j'ai été l'enregistrement de la MPMoviePlayerLoadStateDidChangeNotification fonction de rappel et l'obtention de l'erreur à partir de la variable d'userInfo il ne montrait pas l'erreur. J'ai passé beaucoup de temps à chercher à travers les forums et après avoir joué avec le code que j'ai réalisé quel était le problème.
Vous devez d'abord enregistrer la fonction de rappel:
Dans le MovieFinished fonction de rappel vous aurez besoin de:
Ce code va afficher toute erreur liée à l'moviecontroller. Alors.. quel était le problème dans mon code?.. J'ai été en utilisant le [moviecontroller jouer de la méthode] dans les mauvais endroits, afin de vérifier que dans le vôtre.
Bonne chance!
OriginalL'auteur spacebiker
Vous pouvez regarder la valeur derrière le
userinfo
du dictionnaireMPMoviePlayerPlaybackDidFinishReasonUserInfoKey
. Si la valeur estMPMovieFinishReasonPlaybackError
, vous pouvez supposer que quelques choses n'allait pas. Cette méthode est assez durn fiable.OriginalL'auteur beOn