再会,
我的应用程序是一个音乐播放应用程序。我<audio>
用 Javascript 控制 -Tag。到目前为止没有问题,播放、暂停、下一个和上一个按钮都可以正常工作。当我在 iOS 5 中待机设备时,音乐继续播放,但自动下一首歌曲不起作用。当它不处于待机状态时,它可以工作。而在 iOS 6 中,只需按下按钮,音乐就会淡出。
锁屏上的播放/暂停按钮适用于 iOS 5,但不适用于 iOS 6。
再会,
我的应用程序是一个音乐播放应用程序。我<audio>
用 Javascript 控制 -Tag。到目前为止没有问题,播放、暂停、下一个和上一个按钮都可以正常工作。当我在 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 框架。
如果使用 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 框架,如本答案所述:
open ./platforms/ios/MyApp.xcworkspace/
此插件将使您的应用忽略静音开关。它与其他答案中的代码基本相同,但它被很好地包装在插件中,因此您不必进行任何手动目标 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)
}