22

炎上して死ぬ前に、オーディオファイルを自動的にダウンロードすることに対するAppleの懸念のため、これは現在機能していないことを知っています。

しかし、私の質問は次のとおりです。誰かが狡猾な回避策をまだ見つけましたか?ゲームの起動時に起動音を再生したいのですが、現在、音声を再生する前に、ユーザーがどこかをクリックするのを待つ必要があります。あなたの賢いチャップスの一人は、これを今までに機能させたに違いありませんか?

4

4 に答える 4

17

モバイル ブラウザで自動再生が機能する可能性はありません。Android と iOS では許可されていません。個人的には、それは実行可能な監禁だと思います。あなたが開いているすべての秒のウェブサイトを想像してみてください。

しかし、少しハックして、ユーザーがアプリケーションの音声を現在開始していることを言わないようにすることができます。

  1. オーディオを開始するには、ユーザーの操作が必要です。そのため、アプリやゲームには、メインメニューに移動したりゲームを開始したりするためにクリックが必要なスタート画面やウェルカム ボタンが含まれている可能性があります。ユーザー イベント (受け入れられるイベントは「クリック」、「タッチエンド」、「ダブルクリック」、「キーダウン」) にバインドし、<audio>.

  2. の「canplaythrough」イベントにバインドし<audio>ます。このイベントは、ソースの再生準備が整ったときにトリガーされます。ここで、play()、pause() を呼び出したり、他のインタラクションを待機したりできます。これでオーディオの準備が整いましたが、いつサウンドを開始または停止するかを完全に制御できます。

  3. また、モバイル クライアントではオーディオ スプライトを使用することをお勧めします。iOS (および Android?) は、Singleton を介して内部的にオーディオ サポートを実装しました。つまり、デスクトップ ブラウザーのように、10 個のオーディオ要素を持ち、異なるサウンドを一度に再生することはできません。再生できるファイルは 1 つだけです。そのため、さまざまなサウンドのソースを変更するには、多くの時間がかかります。オーディオ スプライトを使用すると、ユーザーが最初に Web サイトまたはゲームを操作したときにスプライトを開始できます。スプライトを一時停止し、サウンドを再生する必要がある場合は、 currentTime をスプライトの先頭に設定し、ファイルの currentTime がスプライトの最後に達したときにスプライトを一時停止する必要があります。スプライトの currentTime を確認できる timeupdate イベントがあります。

もっと興味があれば、JavaScript オーディオ スプライト プレーヤーを用意できます!!

于 2013-02-27T09:24:24.833 に答える
4

これまでに見た唯一の解決策は、シェル アプリを作成し、Web アプリを UIWebView 内に配置することです。

http://flowz.com/2011/03/apple-disabled-audiovideo-playback-in-html5/

UIWebView.allowsInlineMediaPlayback = YES;
UIWebView.mediaPlaybackRequiresUserAction = NO;

また、昔ながらの Web アプリでこれを行う方法を本当に知りたいです。

于 2013-01-30T22:04:47.513 に答える
0

自分のアプリでこれを解決したと思います。

手順、

コントローラがロードされ、

次に....viewDidLoadで

Web ビューに HTML をロードさせます: loadHTMLString:htmlFile baseURL:[self getBasePath]];

THEN... webview で mediaPlaybackRequiresUserAction = NO を設定します。

設定が早すぎると、html の負荷でリセットされると思います。

于 2014-07-24T02:06:44.010 に答える