web-dev-qa-db-ja.com

AndroidアプリをインターネットにアクセスせずにWi-Fiに接続する

IoTデバイスのコンパニオンアプリとして機能するExpoアプリがあります。

デバイスをwifiに接続するには、アプリがデバイスのwifiに接続し、wifi情報を含むネットワークコールを送信する必要があります。

Android 9まではこれで問題ありませんでした。ただし、新しいデバイスでテストを開始したところ、これまでのようにスムーズに動作しないことがわかりました。インターネットにアクセスせずにwifiに接続した場合と同じです。 、「このネットワークはインターネットにアクセスできません。接続を維持しますか?」というメッセージが表示されます。ネットワークコールがデバイスに送信される前に、ユーザーは[再確認しない]を選択し、[はい]を選択する必要があります。

ユーザーがこのポップアップを見逃したり、閉じたりすると、Androidがポップアップに対して「はい」を選択するまですべてのデータ転送をブロックするようになるため、UXは少し賢くなりますユーザーがポップアップを見逃した場合でも、ポップアップにアクセスするための「このwifiにはインターネットにアクセスできません」という通知が表示されます。

だから、問題は:これを回避する方法はありますか?理想的には、事前にユーザーに尋ねることができる許可のようなものですか?この問題以外は何も見つかりません Force Android to use Wifi network with no Internet 似ていますが、私の場合、電話は動作しませんモバイルデータに戻ると、Wi-Fiとアプリの間でデータが転送されないだけです。iOSでも問題なく動作します:/

7
Matija Martic

解決策ではありませんが、まったく同じ問題が発生しています。 Android 9までは、アプリケーションはインターネットなしでWIFIネットワークに接続してトラフィックを通過させることができました。9以降、インターネットなしでwifiネットワークに接続できますが、すべてのトラフィックはモバイルデータ経由で送信されます。

Android 9デバイスをインターネットなしのWIFIネットワークに手動で接続すると、ポップアップ通知が表示されます。インターネットが利用できない可能性があります。2つの選択肢があります。1)モバイルデータに切り替えるか、 2)別のネットワーク。どちらかのオプションを選択すると、インターネットなしでwifiネットワークから切断されます。何もせず(どちらのオプションも選択しないで)、10秒後にポップアップが消える場合、インターネットなしでwifiネットワークに接続したままになります。

アプリケーション内から接続すると、ユーザーにポップアップは表示されず、「モバイルデータに切り替える」オプションを選択した場合と同じように動作します。

Android=チームがすべての状況でインターネットが必要または望まれていたと想定していなかったとしたら、いいでしょう。インターネットにアクセスせずにネットワークに接続し、接続を維持したい場合があります。

考えられる解決策の1つは、モバイルデータを無効にすることです。これは機能しますが、プログラムで許可されているようには見えません。私たちの場合、これはユーザーが1日に複数回設定でモバイルデータを有効/無効にすることを要求します。現在、私たちのアプリケーションはインターネット以外のさまざまなwifiネットワークからデータをフェッチし、その後wifiネットワークから切断して、そのデータをインターネット経由でクラウドサーバーに送信します。

Androidの最新バージョンで解決する方法に関するアイデアはありますか?

2
chaxz