gpt4 book ai didi

ios - MPMoviePlayerController播放失败时如何获取错误描述

转载 作者:技术小花猫 更新时间:2023-10-29 10:59:41 26 4
gpt4 key购买 nike

如果视频播放失败,我想显示一个 UIAlert。所以我为我的电影播放器​​注册了 MPMoviePlayerPlaybackDidFinishNotification:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];

在我的 myMovieFinishedCallback 中:我检查用户信息字典中是否有一个名为 error 的对象。在我的真实设备上,我没有收到此错误(无网络错误,文件 404 错误)。在 iPhone 模拟器上我收到错误。

当我收到 MPMoviePlayerPlaybackDidFinishNotification 时,如何正确检查原因?

最佳答案

不幸的是,MPMoviePlayerController(直到但不包括 iOS 4.3)没有从文档中可用的内容中详细识别问题。如果 MPMoviePlayerPlaybackDidFinishNotification 的 UserInfo 中出现任何问题,它只会返回 MPMovieFinishReasonPlaybackError

在 iOS 4.3 中,我们终于获得了 errorLogaccessLog 属性,其中包含扩展且非常有用的信息。参见 MPMoviePlayerController Reference .

在 iOS 5.0 中,有一个 error 键随该通知一起出现在设备构建中,而不仅仅是在模拟器中。 errorNSError 的一个实例,提供了非常有用的信息。不幸的是,Apple 尚未对此进行记录,因此它可能会在 iOS 的任何版本中发生变化。此外,似乎没有对给定错误代码的解释。例如,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];

关于ios - MPMoviePlayerController播放失败时如何获取错误描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com