【问题标题】:YouTube Autoplay Possibilities In IOSIOS 中的 YouTube 自动播放可能性
【发布时间】:2012-03-15 01:48:24
【问题描述】:

我已经创建了一个 webView:

videoView.delegate = self;
videoView.userInteractionEnabled = true;
[videoView loadRequest:[[NSURLRequest alloc]initWithURL:[[NSURL alloc]   initWithString:@"website"]]];

我有 html/javascript 来处理视频的加载以及自动播放和下一个视频。这一切都有效,但我的问题是IOS自动加载类似quicktime的播放器,这也是一件好事,但我不知道如何控制它,也不知道一旦发生这种情况如何让视频播放。我希望播放器中显示的按钮自动播放。我希望在加载新视频时发生这种情况。

JS 代码是这样工作的。我接受了一个列表,那是我的播放列表。我不从 YouTube 加载播放列表,我只是制作自己的列表,当调用视频结尾时,我通过 id 加载新视频。我还自动播放视频,这给了我 IOS 在视频加载时提供的按钮。此外,我正在使用 iframe 来完成所有这些工作,而 YouTube api 就是我控制 js 方面的方式。

问:有没有办法通过代码来控制播放?如果是这样,那么当播放器已经加载并且我加载另一个视频时,我怎样才能让它自动播放?

我找到了答案:

如果您将webView.mediaPlaybackRequiresUserAction=FALSE; 放在webViewDidFinishLoad 中,那么它会自动播放并且仍然允许您使用其他按钮。这就像一个魅力,并建议使用它。

【问题讨论】:

  • 你好 rob,你能创建一个 Xcode 示例来展示你的工作方式吗?

标签: ios iframe uiwebview webview youtube


【解决方案1】:

我找到了答案:如果你放

webView.mediaPlaybackRequiresUserAction=FALSE; 在 webViewDidFinishLoad: 中,它会自动播放并且仍然允许您使用其他按钮。这就像一个魅力,建议使用它。

【讨论】:

  • 嘿,我也有同样的问题——视频不能自动播放;我试过你的解决方案,还是不行。有什么想法吗?
  • 小问题是我不再为那家公司工作,似乎找不到网站或代码。它可能在你的js中。您可能想检查您的代码是否允许使用 youtube api 自动播放。很抱歉无法访问代码,因为我可以据此检查您的代码。
【解决方案2】:

为了检查播放是否完成,我使用了以下方法:

首先,将 webview 的委托设置为 self 并实现:

- (void)webViewDidFinishLoad:(UIWebView *)_webView {
    UIButton *b = [self findButtonInView:_webView];
    [b sendActionsForControlEvents:UIControlEventTouchUpInside]; //autoplay :)
    [[[[[UIApplication sharedApplication] keyWindow] subviews] lastObject] setTag:1234];  //tag it 
}

然后启动一个计时器:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];

并检查:

BOOL playing;
- (void)onTimer:(NSTimer *)t {
    id _topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
    if ([_topView tag]==1234)
    {
         playing=YES;
    }
    else {
        if (playing==YES) { //was playing, but now not anymore
            //dismiss your view, or do other things.
            [t invalidate];
            playing=NO;
        }
    }
}

【讨论】:

  • 解决方案已经在我的问题中了。我对其进行了编辑,并找到了一种更简单的方法来让视频自动播放。即设置 mediaPlaybackRequiresUserAction = FALSE;这是在 webViewDidFinishLoad 中设置的。这是正确且最直接的方式,因为它不会在窗口/堆栈中添加或搜索任何内容。其余部分在 jave 脚本方面处理。不过感谢您的回复。
猜你喜欢
  • 2017-04-21
  • 1970-01-01
  • 2023-04-09
  • 2014-10-18
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
相关资源
最近更新 更多