web-dev-qa-db-ja.com

WebView内のHTMLオーディオ要素のためのiOS 13 WebAudioは完全に壊れています

私はwkwebviewを使ってCordovaを使ってモバイルゲームを構築しています、そして私はiOS 13(具体的にiPados 13.2.2)で動作していないオーディオに関する大きな問題を抱えています。 AudioContextに接続されているHTMLオーディオ要素がいくつかあり、コンテキストが再開された後に1つを再生すると、JSエラーはありません、そしてすべてがJS側から良く見えます。ただし、それはサウンドを再生しません、そしてネイティブIOS側ではこのエラーをスローします。

2019-11-15 18:27:09.610800-0500 MyApp[9045:99562] [assertion] Error acquiring assertion: <NSError: 0x2811ddfe0; domain: RBSAssertionErrorDomain; code: 2; reason: "Client is missing required entitlement"> {
    userInfo = {
        RBSAssertionAttribute = <RBSLegacyAttribute: 0x111048cf0; requestedReason: MediaPlayback; reason: MediaPlayback; flags: PreventTaskSuspend | PreventTaskThrottleDown | WantsForegroundResourcePriority>;
    }
}
2019-11-15 18:27:09.610840-0500 MyApp[9045:99562] [ProcessSuspension]  0x108ee7138 - ProcessAssertion() PID 9045 Unable to acquire assertion for process with PID 9045
2019-11-15 18:27:09.610894-0500 MyApp[9045:99269] [ProcessSuspension] 0x108ee7138 - ProcessAssertion::processAssertionWasInvalidated()
 _

私はXcodeのBackground Modesタブにある「オーディオ、エアプレイ、画像」と「背景処理」のフラグを追加しましたが、効果はありませんでした。他の注意事項:それでもエラーをスローしてもシミュレータ内のオーディオを再生しますが、実際のデバイスで再生できません。また、オーディオはAudioBufferを使用して正しく再生されます。影響を受けるオーディオ要素だけです。残念ながら、私はサウンドトラックのためにAudiobuffersを使うことはできません。彼らは短いサウンドのためだけに設計されていて、完全な長さの曲をロードするには時間がかかり過ぎます。

私はこれをWebkitのバグとして提出しました: https://bugs.webkit.org/show_bug.cgi?id=204261

誰もがiOS 13に取り組んでいる、または回避策を知ることができたことができましたか?

8
frodo2975

私は同じ問題を抱えていました、私はこれらをconfig.xmlに追加することを解決しました:

<preference name="AllowInlineMediaPlayback" value="true" />
 _

これにより、ネイティブコントロールではなくブラウザ提供のコントロールを使用して、メディアの再生が画面レイアウト内でインラインで表示されます。

詳細については、次のようにお読みください。

https://cordova.apache.org/docs/en/5.1.1/guide/platforms/ios/config.html

0
David Fumo