【问题标题】:launching video at application launch fails iOS在应用程序启动时启动视频失败 iOS
【发布时间】:2015-06-22 21:23:22
【问题描述】:

我想在用户每次在 iOS 设备上打开应用程序时显示一个小视频(3 秒视频)。 (如果应用是从内存中打开的,则不显示视频)

我将“仪表板”视图作为根视图控制器。

我搜索了 SO 和其他网站上的所有链接,但没有任何帮助。

有时我的视频可以正常播放,但后来应用程序崩溃了。

我的仪表板视图来自“Main.storyboard”,但故事板上没有控件。 只有导航栏的链接是通过情节提要完成的。

这是我的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self showVideo];
}


- (void)showVideo
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSLog(@"video path :- %@",url);
    self.navigationController.navigationBar.hidden = YES;
    self.videoController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    self.videoController.moviePlayer.controlStyle = MPMovieControlStyleNone;
    //[self presentMoviePlayerViewControllerAnimated:videoController];
    [self.navigationController pushViewController:self.videoController animated:NO];

    [self.videoController.moviePlayer play];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:self.videoController];
}

- (void) moviePlayBackDidFinish:(NSNotification*)_notification
{
    self.navigationController.navigationBar.hidden = NO;
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                                  object:nil];

    [self.videoController.view removeFromSuperview];
    [self.videoController.moviePlayer stop];
    self.videoController = nil;

    [self.navigationController popViewControllerAnimated:NO];
    //[self.view removeFromSuperview];
}

nslog 正在正确打印视频路径。 喜欢

video path :- file:///Users/itshastra/Library/Developer/CoreSimulator/Devices/87C93694-66E8-4884-B087-10E1E4CBA4D1/data/Containers/Bundle/Application/DB6C89D4-EE6D-4830-B208-B4AA89FD8E59/Complaint.app/video.mp4

但是应用程序崩溃了, 它既不显示视频,也不显示仪表板,而不是直接显示仪表板。

谁能指导我,我做错了什么。

提前致谢。

如果我错误地错过了 SO 上的任何链接,请同时提供。 谢谢。

【问题讨论】:

  • 你试过调用[self showVideo];来自 viewWillAppear 方法?
  • 是的,我试过了。但它只显示黑屏。应用程序在那里冻结。
  • 您是否将视频添加到 Xcode 目录或复制捆绑资源?
  • 是的,它已添加到那里。我也检查过...
  • @stallone 是闪屏视频吗?问是因为在 MPMoviePlayerController 中显示闪屏视频对用户来说不是那么友好。您可以使用 AVPlayer 显示闪屏视频。

标签: ios objective-c xcode mpmovieplayercontroller


【解决方案1】:

尝试这样调用方法,

- (void)viewDidLoad
{
    [super viewDidLoad];        
    [self performSelector:@selector(showVideo) withObject:nil afterDelay:0.1f]; 
}

【讨论】:

  • 没用。只工作过一次。然后App崩溃了,也没有收到MPMoviePlayerPlaybackDidFinishNotification
  • @RajeshMaurya 而不是这个,你需要将条件放入didFinishLaunchingWithOptions,这对我来说是最好的解决方案
【解决方案2】:

请在以下路径下启用“启用僵尸对象”选项: 编辑方案 -> 诊断 -> 启用僵尸对象

让我知道日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2011-03-07
    相关资源
    最近更新 更多