2017-10-31 38 views
2

Appleは、iOS 11および新しいデスクトップSafariのWebRTCをサポートすると主張しています。しかし、 "WebRTC"が本当にサポートされているかどうかは、メディア再生のロックアウトの回数が問題になります。SafariおよびiOS 11でWebRTCメディアストリームを再生する方法

私のアプリケーションは、以前はこれらのデバイスで動作していました。今それはしません。

コードは、他の場所で動作します:リンゴから

GlobalRTCObject.onaddstream = function(event){ 
    Player.srcObject = event.stream; 
    Player.play(); 
}; 

エラーメッセージ:

Unhandled Promise Rejection: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.

をAppleがストリームを受信するための方法を承認していますか?ユーザーはすでにこの点に達するためにあらゆる種類のボタンをクリックしています。アップルが人々を自分たちから守るためにこれらのアプリを壊し続けているのは本当にばかげている。バックボタンと赤いXがあり、不要なページを残して音を出す。

また、修正があると仮定すると、「機能をサポートしているので、すべてが機能しない」という機能がブラウザに保存されていますか?すべてのユーザーが100個のボタンをクリックして作業する必要はありませんが、ちょうどユーザーエージェントよりも正確に機能の検出を行うと思います。

今後、ユーザーの入力なしに追加される可能性のあるメディアストリームには、理想的な修正が適用されます。いくつかのイベントは、時間内に発生した年ではありません。天気予報やライブテレビイベントなどのことを考えてください。ユーザーは、最終的にこれらのことを再生するページにとどまることができます。

+0

「Player」はhtml5オーディオタグであることを明確にする必要があります。 – Justin

+0

もう一度「お会いして」よかった;-) WebRTC **はAppleが本当にサポートしています**。 [最新のアダプタ](https://webrtc.github.io/adapter/adapter-latest.js)を使用していますか?テストするために、私は[codelab](https://github.com/googlecodelabs/webrtc-web)をGoogleから使用しましたが、それはいくつかの例外を除いて正常に動作します。これらの例外については、[my post](https://stackoverflow.com/questions/47462247/webrtc-most-of-the-times-connecting-safari-with-chrome-is-not-working)を参照してください。私にとっては、少なくともサファリ・サファリはすべての場合に機能します。私はこの情報をお手伝い願います! –

答えて

0

これは私がこれまで行ってきたことですが、あまりにも多くのユーザーの介入が伴うため、これを正しいとマークしません。

html5audio.play()でAppleメディアのロックアウトの約束拒否エラーが発生し、実際に再びクリックしたくない場合でも、クリックした後にストリームを聞きたい場合でも、何かをクリックすることができます。 ICEの候補者が片方向のストリームであるにもかかわらず提供されるように、マイクアクセスを許可することを含めて、彼らはクリックしなければならなかったので、クリックするのが本当にうんざりです。本当に貧弱なユーザーエクスペリエンス、そしてこの記事を読んだ後にAppleがこれをもう一度打ち破ると、私は文字通り泣くだろう。

<script> 
// Play audio stream once it arrives 
    GlobalRTCObject.onaddstream = function(event){ 
    Player.srcObject = event.stream; 
    var AppleHack = Player.play(); 

    if (AppleHack !== undefined){ 

    AppleHack.catch(function(error){ 

    document.getElementById("UserControl").innerHTML = '<div id="StartPlaying">Play</div>'; 
    document.getElementById("StartPlaying").addEventListener("click", StartPlaying, true); 
    }).then(function(){ 
    // If you want to do something every time it starts playing 
    }); 
    } 
}; 
</script> 

これは何かのオフに基づいている私は、ユーザーは、彼らがより多くのものをクリックする必要が実現ので、私はまた、物事を説明するテキストの大きな赤いブロブを持っしばらく前のiOS約11のオンライン

を見つけました。

ネイティブのHTML5オーディオコントロールが起動時に必ずしも信頼できるとは限りません。さらに興味深いことに、ネイティブコントロールを再生/一時停止すると、音量レベルが実質的に高くなります。これは、増幅前のヘッドフォンを使用しないと、ソフトになりすぎて役に立たないためです。

私はこれが他の人に役立つことを願っていますが、もっと良い解決策を望みます。

関連する問題