दुर्भाग्यवश, MPMoviePlayerController
(जब तक आईओएस 4.3 सहित नहीं) तक दस्तावेज़ों से उपलब्ध समस्याओं से कोई वर्बोज़ पहचान नहीं है। यह MPMoviePlayerPlaybackDidFinishNotification
के UserInfo के भीतर किसी भी समस्या के मामले में MPMovieFinishReasonPlaybackError
देता है।
आईओएस 4.3 के साथ हमें अंत में errorLog
और accessLog
गुणों को विस्तारित और बहुत उपयोगी जानकारी मिली। MPMoviePlayerController Reference देखें।
आईओएस 5.0 के साथ एक error
कुंजी उस अधिसूचना के साथ आती है जिसमें डिवाइस पर भी निर्माण होता है न कि केवल सिम्युलेटर के भीतर। error
NSError
का एक उदाहरण है और बहुत उपयोगी जानकारी प्रदान करता है। दुर्भाग्य से ऐप्पल द्वारा दस्तावेज नहीं किया गया है, इसलिए यह आईओएस की किसी भी रिलीज में बदल सकता है। इसके अतिरिक्त, दिए गए त्रुटि-कोड पर कोई स्पष्टीकरण नहीं है। उदाहरण के लिए एक HTTP-Status: 404 परिणामस्वरूप त्रुटि उदाहरण के भीतर त्रुटि-कोड -1100
का परिणाम देगा। हालांकि, यह एक उदाहरण होगा कि इस अधिसूचना को सबसे उचित तरीके से कैसे संभाला जाए।
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleMPMoviePlayerPlaybackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
कि एक उचित अधिसूचना हैंडलर होगा:
- (void)handleMPMoviePlayerPlaybackDidFinish:(NSNotification *)notification
{
NSDictionary *notificationUserInfo = [notification userInfo];
NSNumber *resultValue = [notificationUserInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
MPMovieFinishReason reason = [resultValue intValue];
if (reason == MPMovieFinishReasonPlaybackError)
{
NSError *mediaPlayerError = [notificationUserInfo objectForKey:@"error"];
if (mediaPlayerError)
{
NSLog(@"playback failed with error description: %@", [mediaPlayerError localizedDescription]);
}
else
{
NSLog(@"playback failed without any given reason");
}
}
}
अंतिम लेकिन कम से कम, मत भूलना नहीं डिफ़ॉल्ट के केंद्र से कि अधिसूचना हैंडलर दूर करने के लिए जब वस्तु आप इसे संभाल रहे हैं के उदाहरण को रिहा भीतर।
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
यह बहुत ही दयालु है, लेकिन ऐसा लगता है कि यह टूट गया है। आईओएस 8.1 और मेरे MPMoviePlayer.url का उपयोग 404 त्रुटि प्राप्त हो रहा है, लेकिन यह [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (playbackDidFinish :) नाम: MPMoviePlayerPlaybackDidFinishNotification ऑब्जेक्ट: nil]; – Lombas
यह देखते हुए कि ऐप्पल ने MPMoviePlayer को बहिष्कृत कर दिया है, मुझे लगता है कि इसके बजाय AVFoundation का उपयोग करने के लिए यह एक अधिक सुरक्षित शर्त है। – Till