cordova-plugin-network-information
このプラグインは、古いバージョンのネットワーク情報APIの実装を提供します。デバイスの携帯電話およびWi-Fi接続に関する情報、およびデバイスがインターネットに接続されているかどうかを提供します。
プラグインの使用方法についていくつかのアイデアを得るには、このページの下部にあるサンプルを確認するか、リファレンスの内容に直接進んでください。
インストール
cordova plugin add cordova-plugin-network-information
サポートされているプラットフォーム
- Android
- ブラウザ
- iOS
- Windows
接続
navigator.connection
を介して公開されるconnection
オブジェクトは、デバイスの携帯電話およびWi-Fi接続に関する情報を提供します。
プロパティ
- connection.type
定数
- Connection.UNKNOWN
- Connection.ETHERNET
- Connection.WIFI
- Connection.CELL_2G
- Connection.CELL_3G
- Connection.CELL_4G
- Connection.CELL
- Connection.NONE
connection.type
このプロパティは、デバイスのネットワーク接続状態と接続の種類を迅速に判断するための簡単な方法を提供します。
クイック例
function checkConnection() {
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';
alert('Connection type: ' + states[networkState]);
}
checkConnection();
iOS特有の動作
- iOS7より前は、携帯電話ネットワーク接続の種類を検出できません。
- すべての携帯電話データに対して、
navigator.connection.type
はConnection.CELL
に設定されます。
- すべての携帯電話データに対して、
Windows特有の動作
- Phone 8.1エミュレーターで実行している場合、常に
navigator.connection.type
をConnection.ETHERNET
として検出します。
ブラウザ特有の動作
- ブラウザはネットワーク接続の種類を検出できません。オンラインの場合、
navigator.connection.type
は常にConnection.UNKNOWN
に設定されます。
ネットワーク関連イベント
offline
アプリケーションがオフラインになり、デバイスがインターネットに接続されていない場合に、このイベントが発生します。
document.addEventListener("offline", yourCallbackFunction, false);
詳細
offline
イベントは、接続されていたデバイスがネットワーク接続を失い、アプリケーションがインターネットにアクセスできなくなった場合に発生します。これはConnection APIと同じ情報に依存しており、connection.type
の値がNONE
になったときに発生します。
アプリケーションは通常、deviceready
イベントが発生した後にイベントリスナーをアタッチするためにdocument.addEventListener
を使用する必要があります。
クイック例
document.addEventListener("offline", onOffline, false);
function onOffline() {
// Handle the offline event
}
特有の動作
このプラグインは、バックグラウンドではイベントをブロードキャストできません。resumeイベントでnavigator.connection.type
を使用して接続状態を確認してください。
iOS特有の動作
初回起動時、最初のofflineイベント(該当する場合)は、発生するまでに少なくとも1秒かかります。
online
アプリケーションがオンラインになり、デバイスがインターネットに接続された場合に、このイベントが発生します。
document.addEventListener("online", yourCallbackFunction, false);
詳細
online
イベントは、接続されていなかったデバイスがネットワーク接続を受け取り、アプリケーションがインターネットにアクセスできるようになった場合に発生します。これはConnection APIと同じ情報に依存しており、connection.type
がNONE
から他の値に変更されたときに発生します。
アプリケーションは通常、deviceready
イベントが発生した後にイベントリスナーをアタッチするためにdocument.addEventListener
を使用する必要があります。
クイック例
document.addEventListener("online", onOnline, false);
function onOnline() {
// Handle the online event
}
特有の動作
このプラグインは、バックグラウンドではイベントをブロードキャストできません。resumeイベントでnavigator.connection.type
を使用して接続状態を確認してください。
iOS特有の動作
初回起動時、最初のonline
イベント(該当する場合)は、発生するまでに少なくとも1秒かかります。その前までは、connection.type
はUNKNOWN
です。
サンプル:ネットワーク状態に応じてファイルをアップロードする
このセクションのコード例は、onlineおよびofflineイベントとネットワーク接続状態を使用してアプリの動作を変更する例を示しています。
まず、サンプルデータに使用する新しいFileEntryオブジェクト(data.txt)を作成します。この関数をdeviceready
ハンドラーから呼び出します。
注記 このコード例では、Fileプラグインが必要です。
var dataFileEntry;
function createSomeData() {
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {
console.log('file system open: ' + fs.name);
// Creates a new file or returns an existing file.
fs.root.getFile("data.txt", { create: true, exclusive: false }, function (fileEntry) {
dataFileEntry = fileEntry;
}, onErrorCreateFile);
}, onErrorLoadFs);
}
次に、deviceready
ハンドラーでonlineおよびofflineイベントのリスナーを追加します。
document.addEventListener("offline", onOffline, false);
document.addEventListener("online", onOnline, false);
アプリのonOnline
関数は、onlineイベントを処理します。イベントハンドラーで、現在のネットワーク状態を確認します。このアプリでは、Connection.NONEを除くすべての接続タイプを良好な状態として扱います。接続がある場合は、ファイルをアップロードしようとします。
function onOnline() {
// Handle the online event
var networkState = navigator.connection.type;
if (networkState !== Connection.NONE) {
if (dataFileEntry) {
tryToUploadFile();
}
}
display('Connection type: ' + networkState);
}
上記のコードでonlineイベントが発生した場合は、アプリのtryToUploadFile
関数を呼び出します。
アップロードに失敗した場合は、アプリのofflineWrite
関数を呼び出して現在のデータをどこかに保存します。
注記 簡単にするために、ファイルの読み書きは省略しました。ファイル処理の詳細については、cordova-plugin-fileのドキュメントを参照してください。
function tryToUploadFile() {
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
var fileURL = getDataFileEntry().toURL();
getFileBlobSomehow(fileURL, function(fileBlob) {
var success = function (r) {
console.log("Response = " + r.response);
display("Uploaded. Response: " + r.response);
};
var fail = function (error) {
console.log("An error has occurred: Code = " + error.code || error.status);
offlineWrite("Failed to upload: some offline data");
}
var xhr = new XMLHttpRequest();
xhr.onerror = fail;
xhr.ontimeout = fail;
xhr.onload = function() {
// If the response code was successful...
if (xhr.status >= 200 && xhr.status < 400) {
success(xhr);
}
else {
fail(xhr)
}
}
// Make sure you add the domain of your server URL to the
// Content-Security-Policy <meta> element in index.html.
xhr.open("POST", encodeURI(SERVER));
xhr.setRequestHeader("Content-Type", "text/plain");
// The server request handler could read this header to
// set the filename.
xhr.setRequestHeader("X-Filename", fileURL.substr(fileURL.lastIndexOf("/") + 1));
xhr.send(fileBlob);
});
};
offlineWrite
関数のコードを次に示します。
注記 このコード例では、Fileプラグインが必要です。
function offlineWrite(offlineData) {
// Create a FileWriter object for our FileEntry.
dataFileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log("Successful file write...");
display(offlineData);
};
fileWriter.onerror = function (e) {
console.log("Failed file write: " + e.toString());
};
fileWriter.write(offlineData);
});
}
offlineイベントが発生した場合は、ユーザーに通知するなどを行います(この例では、単にログに記録します)。
function onOffline() {
// Handle the offline event
console.log("lost connection");
}