你好,
我的应用是一个音乐播放应用。我控制 <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/