2016-10-02 2 views
1

私はFirebaseサーバにデータを送信するAndroidアプリケーションを作成しています。私が行うことができないのは、Firebaseサーバへの接続に使用されているパブリックIPアドレスを取得することです。ユーザーが3Gにいるとき、以下のコードは、ユーザーがモバイルデータで3Gに接続するたびに変更されるので、役に立たないプライベートIPを与えます。 したがって、Firebaseサーバにリクエストするために使用されているパブリックIPアドレスを取得したいとします。AndroidデバイスからFirebaseへの接続に使用されるIPアドレスを取得します。

私が間違っていない場合、以下のコードはプライベートIPアドレスを与えます。

WifiManager wifiMan = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiInfo wifiInf = wifiMan.getConnectionInfo(); 
int ipAddress = wifiInf.getIpAddress(); 

答えて

1

デバイスがネットワークサービスプロバイダーのセルラーデータに接続されている場合、探している動作が得られない場合があります。彼らの内部ルータは、そのIPを共有している場合もありませんし、特定のネットワークトラフィックをブロックしている場合もあります。

でも、この情報を提供できる外部サイトにアクセスできます。

次のいずれかを試してみてください:

  1. WhatIsMyIP.comこの種のもののための開発者向けAPIを提供しています。

    https://www.whatismyip.com/api-documentation/

    だけでサーバー自体を打つよりも簡単。それは、ほとんどの生の形式だで

  2. http://ifcfg.me/ip

    はそれだけでIPアドレスを返します。

うまくいけば、これらのうちの1つが適切なパスに表示されます。

関連する問題