美好的一天,
我的应用程序是一个音乐播放程序。 我控制<audio>
-Tag的Javascript。 到目前为止,尚无任何问题,播放,暂停,下一个和上一个按钮是否工作。 当我在iOS 5的备用设备,音乐继续播放,但自动下一首歌曲不起作用。 当它不是待机,它的工作原理。 而在iOS 6中,仅仅按下按钮后,音乐淡出。
在锁定屏幕上的播放/暂停按钮,在iOS 5的工程,但不是在iOS 6中。
美好的一天,
我的应用程序是一个音乐播放程序。 我控制<audio>
-Tag的Javascript。 到目前为止,尚无任何问题,播放,暂停,下一个和上一个按钮是否工作。 当我在iOS 5的备用设备,音乐继续播放,但自动下一首歌曲不起作用。 当它不是待机,它的工作原理。 而在iOS 6中,仅仅按下按钮后,音乐淡出。
在锁定屏幕上的播放/暂停按钮,在iOS 5的工程,但不是在iOS 6中。
与iOS 6开始,你必须在创建的UIWebView之前设置音频会话类别为“播放”。 这是你必须做的。 这是没有必要使会话使用。
这应该是用于HTML视频为好,因为如果不配置会话,您的视频将静音时响铃开关处于关闭状态。
#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框架。
如果使用科尔多瓦,您需要修改该文件是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框架,在解释这个答案 :
open ./platforms/ios/MyApp.xcworkspace/
这个插件可以让你的应用程序忽略静音开关。 它基本上是相同的代码,这是在其他的答案,但它很好地包裹成一个插件,这样你就不必做任何手动Objective C的编辑。
https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio
运行此命令将其添加到您的项目:
cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio.git
斯威夫特语法:
在AppDelegate中:
import AVFoundation
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
do{
let audio = AVAudioSession.sharedInstance()
try audio.setCategory(AVAudioSessionCategoryPlayback)
}catch let error as NSError{
print(error)
}
}
在这里,SWIFT 2.0版本创建的UIWebView之前设置音频会话类别为“播放”。
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
}
catch let error as NSError {
print(error)
}
do {
try AVAudioSession.sharedInstance().setActive(true)
}
catch let error as NSError {
print(error)
}