私は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に取り組んでいる、または回避策を知ることができたことができましたか?
私は同じ問題を抱えていました、私はこれらをconfig.xmlに追加することを解決しました:
<preference name="AllowInlineMediaPlayback" value="true" />
_
これにより、ネイティブコントロールではなくブラウザ提供のコントロールを使用して、メディアの再生が画面レイアウト内でインラインで表示されます。
詳細については、次のようにお読みください。
https://cordova.apache.org/docs/en/5.1.1/guide/platforms/ios/config.html