Monacaアプリでモバイル端末のIPアドレスを取得する
はじめに
MonacaアプリでIPアドレスを画面のアプリに表示します。
実装にあたって
cordovaプラグインcordova-plugin-networkinterfaceを使用すると以下の情報を取得可能です。
- WiFiに割り当てられたIPアドレス
- キャリアから割り当てられたIPアドレス
- プロキシ情報
しかしながら、このプラグインではどうやら ルーターの外側のアドレス をこのプラグインでは取得することができないようです。
そのため、ipifyというFreeのAPIサービスを利用して、 ルーターの外側のアドレス を取得しています。
使用中のIPアドレス表示のWebAPI版みたいなものです。
実装の手順
- Cordovaプラグインの設定画面から、URL
https://github.com/salbahra/cordova-plugin-networkinterface
を指定してインポート
- 表示先の画面要素を追加
- ソース例を参考にスクリプトを作成。
ソース例
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta http-equiv="Content-Security-Policy" content="default-src * msnavi: data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
<script src="components/loader.js"></script>
<script src="components/monaca-jquery/jquery.js"></script>
<script src="lib/onsenui/js/onsenui.min.js"></script>
</head>
<body>
<div>
<dl>
<dt>IPアドレス</dt>
<dd id="ipAddress">unknown</dd>
<dt>WiFi IPアドレス</dt>
<dd id="wifiIpAddress">unknown</dd>
<dt>Carrier IPアドレス</dt>
<dd id="carrierIpAddress">unknown</dd>
<dt>プロキシタイプ</dt>
<dd id="proxyInfo">unknown</dd>
</dl>
</div>
</body>
スクリプト
https://github.com/salbahra/cordova-plugin-networkinterface
を指定してインポートindex.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta http-equiv="Content-Security-Policy" content="default-src * msnavi: data: gap: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
<script src="components/loader.js"></script>
<script src="components/monaca-jquery/jquery.js"></script>
<script src="lib/onsenui/js/onsenui.min.js"></script>
</head>
<body>
<div>
<dl>
<dt>IPアドレス</dt>
<dd id="ipAddress">unknown</dd>
<dt>WiFi IPアドレス</dt>
<dd id="wifiIpAddress">unknown</dd>
<dt>Carrier IPアドレス</dt>
<dd id="carrierIpAddress">unknown</dd>
<dt>プロキシタイプ</dt>
<dd id="proxyInfo">unknown</dd>
</dl>
</div>
</body>
プロキシ情報は配列で返ってくるので注意が必要です。
app.js
//WiFiルーター外側のIPアドレスをWebAPI経由で取得して表示
$.ajax({
url:"https://api.ipify.org?format=json",
type:"GET",
dataType:"json"
})
.done(function(data, textStatus, xhr){
$("#ipAddress").text(data.ip)
})
//Cordovaプラグインで取得した情報を表示
networkinterface.getWiFiIPAddress(
function(info){ $("#wifiIpAddress").text(info.ip); },
function(error){ $("#wifiIpAddress").text(error) }
);
networkinterface.getCarrierIPAddress(
function(info){ $("#carrierIpAddress").text(info.ip); },
function(error){ $("#carrierIpAddress").text(error) }
);
networkinterface.getHttpProxyInformation(
"www.example.com", //apiへのルートがプロキシかを判定
function(proxy){ $("#proxyInfo").text("Type:" + proxy[0].type + " Host:" + proxy[0].host + " Port:" + proxy[0].port); },
function(error){ $("#proxyInfo").text(error) }
);
Author And Source
この問題について(Monacaアプリでモバイル端末のIPアドレスを取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/nomori/items/fc2e12f80c630a8a8c4b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .