ios - UIWebView:当应用程序进入后台时,HTML5 音频在 iOS 6 中暂停

标签 ios uiwebview ios6 avfoundation html5-audio

你好,

我的应用是一个音乐播放应用。我控制 <audio> - 使用 Javascript 标记。到目前为止没有问题,播放、暂停、下一个和上一个按钮都可以使用。当我在 iOS 5 中待机时,音乐继续播放,但自动下一首歌曲不起作用。当它不处于待机状态时,它会工作。在 iOS 6 中,只需按下按钮,音乐就会淡出。

锁屏上的播放/暂停按钮在 iOS 5 中有效,但在 iOS 6 中无效。

最佳答案

从 iOS 6 开始,您必须在创建 UIWebView 之前将 Audio Session 类别设置为“播放”。这就是您所要做的。无需激活 session 。

这也应该用于 html 视频,因为如果您不配置 session ,您的视频将在铃声开关关闭时静音。

#import <AVFoundation/AVFoundation.h>

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL ok;
NSError *setCategoryError = nil;
ok = [audioSession setCategory:AVAudioSessionCategoryPlayback
                         error:&setCategoryError];
if (!ok) {
  NSLog(@"%s setCategoryError=%@", __PRETTY_FUNCTION__, setCategoryError);
}

确保您的目标链接到 AVFoundation 框架。


如果使用 Cordova,您需要修改的文件是 platforms/ios/MyApp/Classes/AppDelegate.m,最终看起来像这样:

#import "AppDelegate.h"
#import "MainViewController.h"
#import <AVFoundation/AVFoundation.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    BOOL ok;
    NSError *setCategoryError = nil;
    ok = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
    if (!ok) {
        NSLog(@"%s setCategoryError=%@", __PRETTY_FUNCTION__, setCategoryError);
    }

    self.viewController = [[MainViewController alloc] init];
    return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end

此外,如评论中所述,您需要链接 AVFoundation 框架,如 this answer 中所述。 :

  • 用xcode打开你的项目 open ./platforms/ios/MyApp.xcworkspace/
  • Project navigator > target My App > General
  • 滚动到底部找到链接的框架和库

关于ios - UIWebView:当应用程序进入后台时,HTML5 音频在 iOS 6 中暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12680417/

相关文章:

ios - ios 中的 Collection View 动态单元格大小

ios - UIButton 标题和图像的不同对齐方式

objective-c - UITableView 像联系人应用程序编辑模式

iphone - 缩放 UIWebView

ios - 如何改变CGPDFPageRef的背景颜色,以及如何去除页面的阴影

ios - 如何在核心图中设置绘图委托(delegate)

ios - 使用 bitly 一次缩短多个网址

button - Xcode 4.5 iOS6多行按钮中有文本

iphone - iOS TableView 加载数据很慢

ios - Split View Controller 和 UIWebView