良い一日、
私のアプリは音楽再生アプリです。<audio>
-TagをJavascriptで制御します。これまでのところ問題はなく、再生、一時停止、次と前のボタンが機能しています。iOS 5でデバイスをスタンバイすると、音楽は再生され続けますが、自動次の曲が機能しません。スタンバイ状態でないときは動作します。また、iOS 6では、ボタンを押した直後に音楽がフェードアウトします。
ロック画面の[再生/一時停止]ボタンはiOS5では機能しますが、iOS6では機能しません。
良い一日、
私のアプリは音楽再生アプリです。<audio>
-TagをJavascriptで制御します。これまでのところ問題はなく、再生、一時停止、次と前のボタンが機能しています。iOS 5でデバイスをスタンバイすると、音楽は再生され続けますが、自動次の曲が機能しません。スタンバイ状態でないときは動作します。また、iOS 6では、ボタンを押した直後に音楽がフェードアウトします。
ロック画面の[再生/一時停止]ボタンはiOS5では機能しますが、iOS6では機能しません。
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/
このプラグインにより、アプリはミュートスイッチを無視します。これは基本的に他の回答と同じコードですが、プラグインにうまくラップされているため、手動でObjectiveCを編集する必要はありません。
https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio
次のコマンドを実行して、プロジェクトに追加します。
cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio.git
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)
}
}
ここでは、UIWebViewを作成する前に、オーディオセッションカテゴリを「再生」に設定するSWIFT2.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)
}