良い一日、
私のアプリは音楽再生アプリです。私は<audio>
- 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フレームワークにリンクしていることを確認します。
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 Frameworkをリンクする必要があります。
open ./platforms/ios/MyApp.xcworkspace/
でプロジェクトを開きますSwift構文:
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)
}
}
このプラグインは、アプリにミュートスイッチを無視させます。基本的には他の回答にあるものと同じコードですが、プラグインにうまくラップされているため、手動でObjective Cを編集する必要はありません。
https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio
次のコマンドを実行して、プロジェクトに追加します。
cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio.git
ここでは、UIWebViewを作成する前に、オーディオセッションカテゴリを「再生」に設定するためのSwift 2.0バージョンです。
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)
}