# In-App アップデーター (In-App Updater)

In-App アップデーター プラグインは、アプリの再ビルド・再パッケージ化を行わずに、アプリで使用している HTML5 アセットを更新するためのプラグインです。

In-App アップデーター プラグインを使用する場合は、別途、更新ファイルをホストする Web サーバーが必要になります (アプリから、これらのファイルへアクセスできること )。

{% hint style="info" %}
このプラグインを使用するためには、対応するプランへの加入が必要となります。詳細は、 [料金プラン ](https://ja.monaca.io/pricing.html)をご確認ください。
{% endhint %}

{% hint style="info" %}
このプラグインは、カスタムビルドデバッガーでは利用できません。\
&#x20;動作検証を行う場合は、デバッグビルドを行い、実機で確認する必要があります。
{% endhint %}

## サポート対象のプラットフォーム

* Cordova 9 以降
* iOS 11 以降
* Android 5.1 以降 (6.0以降を推奨)

## プラグインの追加方法

1. Monaca クラウド IDE か&#x3089;**`設定 → Cordova プラグインの管理`**&#x3092;選択します。
2. *利用可能なプラグイン* 項目の `InAppUpdater` プラグインにカーソルを置き、`有効`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgOrNtNTuH4BAB2Q6Wq%2F-MgOrwXsCt4a9uwEcJYr%2Fimage.png?alt=media\&token=7e3e9f99-3671-4540-b763-63ffbefab4aa)

&#x20;   3\. 次に、*有効なプラグイン* 項目へ行き、先ほど追加したプラグイン上に、カーソルを置き、`設定`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgOrNtNTuH4BAB2Q6Wq%2F-MgOs3-c9fEUFJPOZusj%2Fimage.png?alt=media\&token=a517d507-be45-434f-b896-cf4fbf8245e7)

1. [CheckUpdate UR](#checkupdate-url)L と [Download URL](#download-url) 欄を適宜入力して、`OK`ボタンをクリックします。

![](https://3046938759-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MfWrOnV1iKerkfShm9O%2F-MgOrNtNTuH4BAB2Q6Wq%2F-MgOsGno4q8GArXB0pIz%2Fimage.png?alt=media\&token=4c9548b3-980b-40f4-8ace-2e6320a67a21)

## 更新用 HTML5 アセットの作成方法

Monaca クラウド IDE から、

* **`ビルド → Androidアプリのビルド → リリース向けビルド → In-App Updater用更新ファイル`**
* **`ビルド → iOSアプリのビルド → リリース向けビルド → In-App Updater用更新ファイル`**

を選択し、`ビルドを開始する`ボタンをクリックします。

## 使い方

In-App アップデーター プラグインは、対象アプリのバージョンに対して、HTML5 アセットを更新します。\
HTML5 アセットを更新する場合は、Web サーバー側の更新ファイルに新しい更新番号の設定を行います。

Web サーバー側の更新ファイルについては、[CheckUpdate URL](#checkupdate-url) を参照ください。

※ Android 9以降ではhttp通信が禁止されているため、通信プロトコルについて[こちら](#android-9-deno)を確認ください。

### プラグインの設定

本プラグインを利用するためには、[CheckUpdate URL](#checkupdate-url) と [Download URL](#download-url) の二つのWeb API（URL）が必要となります。

### CheckUpdate URL

更新ファイル情報を提供する Web API の URL を指定します。更新ファイル情報は、以下のように JSON 形式で作成します。

更新ファイル情報は、[getServerVersion()](#getserverversion) メソッドの Promise によって返される JSON オブジェクトの `updateInfo` パラメータによって取得できます。

```javascript
{
  "ios": {
    "2.1.0": {　// アプリのバージョン
      "1": { // 更新番号
        "date": 20170113,
        "url": "https://hogehoge.com/app/1/ios-v2.1.0.zip" // オプション
      },
      "2": { // 更新番号
        "date": 20170113,
        "url": "https://hogehoge.com/app/2/ios-v2.1.0.zip" // オプション
      }
    },
    "2.2.0": {　// アプリのバージョン
      "1": { // 更新番号
        "date": 20170210,
        "url": "https://hogehoge.com/app/1/ios-v2.2.0.zip" // オプション
      }
    }
  },
    "android": {
    "2.1.0": {　// アプリのバージョン
      "1": { // 更新番号
        "date": 20170113,
        "url": "https://hogehoge.com/app/1/android-v2.1.0.zip" // オプション
      },
      "2": { // 更新番号
        "date": 20170113,
        "url": "https://hogehoge.com/app/2/android-v2.1.0.zip" // オプション
      }
    },
    "2.2.0": {　// アプリのバージョン
      "1": { // 更新番号
        "date": 20170210,
        "url": "https://hogehoge.com/app/1/android-v2.2.0.zip" // オプション
      }
    }
  }
}
```

### Download URL

更新用 HTML5 アセットファイル ( ZIP 形式 ) の URL を指定します。

{% hint style="info" %}
[download()](#download) メソッドでダウンロード URL を設定すると、この設定を省略できます。
{% endhint %}

## API リファレンス

このプラグインの最もシンプルな使用方法は、[autoUpdate()](#autoupdate) を使用して、更新ファイルのダウンロード ( [プラグインの設定](#puraguinno-1) を参照のこと ) とアプリの更新を自動で行うことです。

[getServerVersion()](#getserverversion)、[download()](#download)、[updateAndRestart()](#updateandrestart) などのメソッドを組わせて使用すれば、更新処理をカスタマイズすることもできます。

このプラグインが提供しているメソッドは次のとおりです。

| メソッド                                                      | 解説                                                 |
| --------------------------------------------------------- | -------------------------------------------------- |
| [getServerVersion()](#getserverversion)                   | 更新ファイルの情報をサーバー側から取得します。                            |
| [forceStopGetServerVersion()](#forcestopgetserverversion) | [getServerVersion()](#getserverversion) の処理を中断します。 |
| [getLocalVersion()](#getlocalversion)                     | 現在のアプリの更新番号を確認します。                                 |
| [download()](#download)                                   | 更新用ファイルをダウンロードします。                                 |
| [forceStopDownload()](#forcestopdownload)                 | [download()](#download) の処理を中断します。                 |
| [updateAndRestart()](#updateandrestart)                   | ダウンロードした更新用ファイルを展開し、アプリを再起動します。                    |
| [status()](#status)                                       | プラグインの状態を確認します。                                    |
| [showAlertDialog()](#showalertdialog)                     | ダイアログ ( タイトルとメッセージ ) を表示します。                       |
| [dismissAlertDialog()](#dismissalertdialog)               | 警告ダイアログを閉じます。                                      |
| [showProgressDialog()](#showprogressdialog)               | 進捗表示用ダイアログを表示します。                                  |
| [changeProgressDialog()](#changeprogressdialog)           | 進捗表示用ダイアログを更新します。                                  |
| [dismissProgressDialog()](#dismissprogressdialog)         | 進捗表示用ダイアログを閉じます。                                   |
| [networkStatus()](#networkstatus)                         | ネットワークの状態 ( Wifi、3G/LTE、接続なし など ) を確認します。          |
| [terminateApp()](#terminateapp)                           | アプリを強制終了します。                                       |
| [autoUpdate()](#autoupdate)                               | 更新ファイルのダウンロードとアプリの更新を自動的に行います。                     |

### getServerVersion()

更新ファイルの情報をサーバー側から取得します。

```javascript
monaca.InAppUpdater.getServerVersion([args: JSON object]): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ                | 型  | 解説                                                                                    |
| -------------------- | -- | ------------------------------------------------------------------------------------- |
| `connectDelay`       | 数値 | サーバー接続を開始するまでの待機時間 ( ミリ秒単位 )                                                          |
| `connectTimeout`     | 数値 | ( Android 専用 ) サーバー接続時に適用するタイムアウト時間 ( ミリ秒単位 )                                         |
| `readTimeout`        | 数値 | ( Android 専用 ) サーバーからのレスポンス受信時に適用するタイムアウト時間 ( すべてのレスポンスを受け取るまでの時間、ミリ秒単位 )             |
| `timeoutForRequest`  | 数値 | ( iOS 専用 ) サーバーへのリクエスト送信時に適用するタイムアウト時間。タイムアウトが発生した場合でも、リクエストは自動的に再送信されます。エラーは出力されません。 |
| `timeoutForResponse` | 数値 | ( iOS 専用 ) サーバーからのレスポンス受信時に適用するタイムアウト時間 ( すべてのレスポンスを受け取るまでの時間、ミリ秒単位 )                 |

**戻り値 (Promise)**

* 成功時のコールバックには、次のような内容の JSON オブジェクトが渡されます。

  | プロパティ                | 型           | 解説                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | -------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `needsUpdate`        | 真偽値         | 現在のアプリのバージョンを更新する必要があるかを示します。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
  | `updatable`          | 真偽値         | 現在のアプリのバージョンに適用できる更新ファイルがあるかを示します。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
  | `latestVersion`      | 文字列         | アプリの最新バージョン                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | `myVersion`          | 文字列         | 現在のアプリのバージョン                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | `latestUpdateNumber` | 文字列         | 現在のアプリのバージョンに適用できる最新の更新番号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
  | `myUpdateNumber`     | 文字列         | 現在のアプリのバージョンが使用している更新番号                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | `updateInfo`         | JSON オブジェクト | <p>サーバー側の設定が、次のようになっている場合、</p><p></p><p><code>{</code></p><p>  <code>"ios": {</code></p><p>    <code>"2.1.0": {　// アプリのバージョン</code></p><p>      <code>"1": { // 更新番号</code></p><p>        <code>"date": 20170113,</code></p><p>        <code>"url": "<https://hogehoge.com/app/ios-v2.1.0.zip>" // オプション</code></p><p>      <code>}</code></p><p>    <code>}</code></p><p>  <code>}</code></p><p><code>}</code></p><p></p><p><code>updateInfo</code> は、以下の内容となります。</p><p></p><p><code>updateInfo = {</code></p><p>  <code>"date": 20170113,</code></p><p>  <code>"url": "<https://hogehoge.com/app/ios-v2.1.0.zip>"</code></p><p><code>}</code></p> |
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.getServerVersion().then(
    function(json) {
        alert( JSON.stringify(json) );
        targetVersion = json.myVersion;
        targetUpdateNumber = json.latestUpdateNumber;
        url = json.updateInfo.url;
        alert( targetVersion );
        alert( targetUpdateNumber );
        alert( url );
    } ,
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### forceStopGetServerVersion()

`getServerVersion()` の処理を中断します。

```javascript
monaca.InAppUpdater.forceStopGetServerVersion(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.forceStopGetServerVersion().then(
    function(str) { alert("stop success"); } ,
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### getLocalVersion()

現在のアプリの更新番号を確認します。

```javascript
monaca.InAppUpdater.getLocalVersion(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.getLocalVersion().then(
    function(json) { alert( JSON.stringify(json) ); } ,
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### download()

更新用ファイルをダウンロードします。

```javascript
monaca.InAppUpdater.download(args: JSON object): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ                | 型   | 解説                                                                                                                                           |
| -------------------- | --- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `version`            | 数値  | 対象のアプリのバージョン                                                                                                                                 |
| `updateNumber`       | 数値  | 更新番号                                                                                                                                         |
| `bufferSize`         | 数値  | ( Android 専用 ) バッファーサイズ ( バイト単位 )。デフォルト値は `8192` です。                                                                                         |
| `url`                | 文字列 | 設定された URL から Zip ファイルをダウンロードします。この値を設定しない場合には、[Download URL](#download-url) の値 ( `config.xml` 内の `monaca:updater_DownloadUrl` ) が代わりに使用されます。 |
| `connectDelay`       | 数値  | サーバー接続を開始するまでの待機時間 ( ミリ秒単位 )                                                                                                                 |
| `connectTimeout`     | 数値  | ( Android 専用 ) サーバー接続時に適用するタイムアウト時間 ( ミリ秒単位 )                                                                                                |
| `readTimeout`        | 数値  | ( Android 専用 ) サーバーからのレスポンス受信時に適用するタイムアウト時間 ( すべてのレスポンスを受け取るまでの時間、ミリ秒単位 )                                                                    |
| `timeoutForRequest`  | 数値  | ( iOS 専用 ) サーバーへのリクエスト送信時に適用するタイムアウト時間。タイムアウトが発生した場合でも、リクエストは自動的に再送信されます。エラーは出力されません。                                                        |
| `timeoutForResponse` | 数値  | ( iOS 専用 ) サーバーからのレスポンス受信時に適用するタイムアウト時間 ( すべてのレスポンスを受け取るまでの時間、ミリ秒単位 )                                                                        |

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。
* 進捗表示コールバックには、ダウンロードの進捗状況を示す、次のような JSON オブジェクトが渡されます。

  | 名前      | 型  | 解説                     |
  | ------- | -- | ---------------------- |
  | `count` | 数値 | これまでにダウンロードされたファイルのサイズ |
  | `total` | 数値 | ダウンロードされるファイルの予想サイズ    |

**例**

```javascript
monaca.InAppUpdater.download( { version : targetVersion, updateNumber : targetBuildNumber, url : url } ).then(
    function(json) { alert( JSON.stringify(json) ); } ,
    function(fail) { alert( JSON.stringify(fail) ); } ,
    function(json) { console.log( json.count + "/" + json.total + " are done." ); }
);
```

### forceStopDownload()

`download()` の処理を中断します。

```javascript
monaca.InAppUpdater.forceStopDownload(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.forceStopDownload().then(
    function(str) { alert("stop success"); } ,
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### updateAndRestart()

ダウンロードした更新用ファイルを展開し、アプリを再起動します。

```javascript
monaca.InAppUpdater.updateAndRestart(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。
* 進捗表示コールバックには、展開処理の進捗状況を示す、次のような JSON オブジェクトが渡されます。

  | 名前      | 型  | 解説                           |
  | ------- | -- | ---------------------------- |
  | `count` | 数値 | Zip ファイルを展開して得られた、現在までのファイル数 |
  | `total` | 数値 | 展開予定の更新ファイル数                 |

**例**

```javascript
monaca.InAppUpdater.updateAndRestart().then(
    function() { },
    function(fail) { alert( JSON.stringify(fail) ); },
    function(json) { console.log( json.count + "/" + json.total + " are done." ); }
);
```

### status()

プラグインの状態を確認します。

```javascript
monaca.InAppUpdater.status(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、次のような内容の JSON オブジェクトが渡されます。

  | 名前        | 型   | 解説                         |
  | --------- | --- | -------------------------- |
  | `running` | 真偽値 | プラグインが処理中の場合、`true` を返します。 |
  | `status`  | 文字列 | 処理に関する情報が格納されています。         |
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.status().then(
    function(json) { alert( JSON.stringify(json) ); },
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### showAlertDialog()

ダイアログ ( タイトルとメッセージ ) を表示します。

```javascript
monaca.InAppUpdater.showAlertDialog(args: JSON object): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ　    | 型            | 解説                                                                                                                                                                                                                                                                                                                                    |
| --------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`   | 文字列          | ダイアログのタイトル                                                                                                                                                                                                                                                                                                                            |
| `message` | 文字列          | メッセージ本文                                                                                                                                                                                                                                                                                                                               |
| `button`  | JSON オブジェクト  | <p>ボタンは、次の 2 つの要素で構成されます。 </p><p></p><ul><li><code>label</code>: \[ 文字列 ] ボタンのラベル</li><li><code>handler</code>: ボタンがクリックされたときに呼ばれる関数</li></ul><p>例 : </p><p></p><p><code>{</code></p><p>  <code>label : "OK",</code></p><p>  <code>handler : function() { alert("OK is clicked"); }</code></p><p><code>}</code></p>                   |
| `cancel`  | JSON  オブジェクト | <p>キャンセルボタンは、次の 2 つの要素で構成されます。</p><p></p><ul><li><code>label</code>: \[ 文字列 ] キャンセルボタンのラベル</li><li><code>handler</code>: キャンセルボタンがクリックされたときに呼ばれる関数</li></ul><p>例 :<br></p><p><code>{</code></p><p>   <code>label : "Close",</code></p><p>   <code>handler : function() { alert("Close is clicked"); }</code></p><p><code>}</code></p> |

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.showAlertDialog({
    title : "Title" ,
    message : "Message" ,
    button : { label : "OK" , handler : function() { console.log("OK is clicked"); } },
    cancel : { label : "Cancel" , handler : function() { console.log("Cancel is clicked"); } },
    dismiss : function() { conole.log("Dismissed!"); }
} ).then(
    function(btnLabel) { console.log("open"); },
    function(fail) { console.log(JSON.stringify(fail)); }
);
```

### dismissAlertDialog()

警告 ( Alert ) ダイアログを閉じます。

```javascript
monaca.InAppUpdater.dismissAlertDialog(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
setTimeout( function() {
    monaca.InAppUpdater.dismissAlertDialog().then(
        function(json) { console.log("OK auto close"); },
        function(fail) { console.log(JSON.stringify(fail)); }
    );
} , 1000 );
```

### showProgressDialog()

進捗表示 ( Progress ) 用ダイアログを表示します。こちらのダイアログでは、更新の進捗状況が表示されます。

```javascript
monaca.InAppUpdater.showProgressDialog(args: JSON object): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ　     | 型           | 解説                                                                                                                                                                                                                                                                                                                                       |
| ---------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `title`    | 文字列         | ダイアログのタイトル                                                                                                                                                                                                                                                                                                                               |
| `message`  | 文字列         | メッセージ本文                                                                                                                                                                                                                                                                                                                                  |
| `max`      | 数値          | カウンターの最大値です。ファイルをダウンロードする場合には、ファイル総数となります。                                                                                                                                                                                                                                                                                               |
| `progress` | 数値          | 進捗を示す値です。ファイルをダウンロードする場合には、ダウンロード済みのファイル総数となります。                                                                                                                                                                                                                                                                                         |
| `cancel`   | JSON オブジェクト | <p>キャンセルボタンは、次の 2 つの要素で構成されます。</p><p><br></p><ul><li><code>label</code>: \[ 文字列 ] キャンセルボタンのラベル</li><li><code>handler</code>: キャンセルボタンがクリックされたときに呼ばれる関数</li></ul><p>例 : </p><p><code>{</code></p><p>    <code>label : "Close",</code></p><p>    <code>handler : function() { alert("Close is clicked"); }</code></p><p><code>}</code></p> |
| `dismiss`  | コールバック関数    | ダイアログを閉じたときに呼ばれる関数です。                                                                                                                                                                                                                                                                                                                    |

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.showProgressDialog(
    { title : "Title" ,
    message : "Message" ,
    max : 100 ,
    progress : 50 ,
    cancel : { label : "Cancel" , handler : function() { console.log("cancel handler"); } } ,
    dismiss : function() { console.log("dismissed."); }
    } ).then(
    function(json) {
      console.log(JSON.stringify(json));
    },
    function(fail) {
      console.log(JSON.stringify(fail));
    }
);
```

### changeProgressDialog()

進捗表示 ( Progress ) 用ダイアログを更新します。

```javascript
monaca.InAppUpdater.changeProgressDialog(args: JSON object): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ      | 型  | 解説     |
| ---------- | -- | ------ |
| `progress` | 数値 | 進捗を示す値 |

**戻り値 (Promise)**

* 成功時にも引数は渡しません。
* 失敗時のコールバックはありません。

**例**

```javascript
monaca.InAppUpdater.changeProgressDialog( { progress: progress } ).then(
    function() {
    if (progress < 100) {
        setTimeout( function() { changeProgressDialog(progress+10); } , 500 );
    } else {
        monaca.InAppUpdater.dismissProgressDialog().then(
        function(json) { console.log("complete"); } ,
        function(error) { console.log(JSON.stringify(error)); }
        );
    }
    }
)
```

### dismissProgressDialog()

進捗表示 ( Progress ) 用ダイアログを閉じます。

```javascript
monaca.InAppUpdater.dismissProgressDialog(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、結果を格納した JSON オブジェクトが渡されます。
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
setTimeout( function() {
    monaca.InAppUpdater.dismissProgressDialog().then(
    function(json) { console.log(JSON.stringify(json)); } ,
    function(error) { console.log( JSON.stringify(error) ); }
    );
} , 1000 );
```

### networkStatus()

ネットワークの状態 ( Wifi、3G/LTE、接続なし など ) を確認します。

```javascript
monaca.InAppUpdater.networkStatus(): Promise
```

**パラメーター**

* なし

**戻り値 (Promise)**

* 成功時のコールバックには、次のような内容の JSON オブジェクトが渡されます。

  | 名前        | 型   | 解説                                                                                   |
  | --------- | --- | ------------------------------------------------------------------------------------ |
  | `network` | 真偽値 | 通信事業者のネットワークが利用できる場合には、`true` を返します。                                                 |
  | `wifi`    | 真偽値 | WiFi が利用できる場合には、`true` を返します。                                                        |
  | `mobile`  | 真偽値 | ネットワーク接続 ( 通信事業者のネットワークまたは WiFi ) を利用できる場合には `true` を返します。利用できない場合には、 `false` を返します。 |
* 失敗時のコールバックには、エラーを示す JSON オブジェクトが渡されます。

**例**

```javascript
monaca.InAppUpdater.networkStatus().then(
    function(json) { alert( JSON.stringify(json) ); },
    function(fail) { alert( JSON.stringify(fail) ); }
);
```

### terminateApp()

アプリを強制終了します。

{% hint style="info" %}
このメソッドは、旧 `InAppUpdater` ( Cordova 5 向けの v2.0.4 ) との互換性を維持するために提供されているメソッドです。
{% endhint %}

{% hint style="danger" %}
こちらはクラッシュに相当するので、iOS での使用は推奨しません。Apple 側から申請をリジェクトされる可能性があります。&#x20;
{% endhint %}

```javascript
monaca.InAppUpdater.terminateApp()
```

**パラメーター**

* なし

**戻り値 (Promise)**

* なし

**例**

```javascript
monaca.InAppUpdater.terminateApp();
```

### autoUpdate()

更新ファイルのダウンロードとアプリの更新を自動的に行います。

```javascript
monaca.InAppUpdater.autoUpdate(options: JSON object): Promise
```

**パラメーター ( JSON オブジェクト)**

| プロパティ            | 型           | 解説                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `connectDelay`   | 数値          | サーバー接続を開始するまでの待機時間 ( ミリ秒単位 )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `dialogMessages` | JSON オブジェクト | <p>アプリの更新時に表示されるダイアログ。次の変数が使用できます。<br></p><ul><li><code>confirm3G</code>: \[ 文字列 ] 更新ファイルのダウンロード時に、WiFi の代わりに通信事業者のネットワークを使用している場合に表示されるテキストです。</li><li><code>prepare</code>: \[ JSON オブジェクト ] 2 つの変数を格納したオブジェクトです。変数は、 <code>title</code> と <code>message</code> です。更新ファイルのダウンロードを開始 ( 準備 ) するときに表示されます。</li><li><code>download</code>: \[ JSON オブジェクト ] 2 つの変数を格納したオブジェクトです。変数は、 <code>title</code> と <code>message</code> です。更新ファイルをダウンロードしているときに表示されます。</li></ul><p> 例 : </p><p><code>{</code></p><p>  <code>confirm3G : 'These updates will be downloaded with your mobile data.',</code></p><p>  <code>prepare : {</code></p><p>    <code>title : 'Preparing to Dowload the Updates',</code></p><p>    <code>message : 'Now checking the server version ...'},</code></p><p>  <code>download : {</code></p><p>     <code>title : 'Dowloading the Updates',</code></p><p>     <code>message : 'Now downloading ...'}</code></p><p><code>}</code></p> |
| `nextTask`       | コールバック関数    | 更新成功時に呼ばれる関数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `failTask`       | コールバック関数    | 更新失敗時に呼ばれる関数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |

**戻り値 (Promise)**

* なし

**例**

```javascript
monaca.InAppUpdater.autoUpdate( {
    connectDelay : 0000,
    connectTimeout : 30000,
    readTimeout: 300000,
    nextTask : function(res) {
    if (res.requireRestart) {
        monaca.InAppUpdater.updateAndRestart().then(
        function() { },
        function(fail) { alert( JSON.stringify(fail) ); }
        );
    } else {
        alert("App is started!");
    }
    },
    failTask : function(res) {
    monaca.InAppUpdater.showAlertDialog(
        { title : "Error Code "+res.error.code ,
        message : res.error.message ,
        button : { label : "OK" , handler : function() { } }
        } ).then(
        function(json) {  },
        function(fail) { }
    );
    }
});
```

## Android 9 以降での注意点

Android 9 以降では、http プロトコルでの通信が原則禁止されています。\
そのため、アップデートファイルを `https` プロトコルで取得するように修正する必要があります。

動作テストなどで http プロトコルでの通信が必要となる場合は、以下のように、`config.xml` の `widget` タグに `andorid 名前空間` 設定を追加し、`usesCleartextTraffic` 設定を追加する必要があります。

```markup
<widget xmlns:android="http://schemas.android.com/apk/res/android">

<platform name="android">
  <edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
    <application android:usesCleartextTraffic="true" />
  </edit-config>
</platform>
```

## CustomSchemeの設定 (iOSのみ)

{% hint style="info" %}
カスタムスキームは、Cordova 10以降 および 本プラグインのバージョン 6.1.0以降で設定いただけます。
{% endhint %}

本プラグインは、iOSの場合、単体でschemeとhostnameを設定することが可能です。(アプリロジック暗号化プラグインとは共通です。)

まず、デフォルトのschemeとhostnameの下記設定を削除します。これが指定されている場合、ビルドエラーとなります。

```markup
<preference name="scheme" value="monaca-app"/>
<preference name="hostname" value="localhost"/>
```

次に`config.xml`に以下のようにschemeとhostnameを設定していきます。この例では、schemeを`monacax-app`、hostnameを`monacax.io`としています。

```markup
<preference name="monaca:scheme" value="monacax-app"/>
<preference name="monaca:hostname" value="monacax.io"/> 
```

schemeは，小文字で始まる文字列で構成されます。 小文字で始まり，その後に、次の任意の組合せが続く小文字の文字列です。

* 文字
* 数字
* プラス ("+")
* ピリオド (".")
* ハイフン ("-")

また、`monaca:scheme` と `moanca:hostname` を省略 した場合、それぞれ `monaca-plugin` と `monaca.plugin` になります。

## バージョン履歴

<table><thead><tr><th width="166">バージョン</th><th width="598.4285714285713">変更点</th></tr></thead><tbody><tr><td>7.1.2</td><td>Cordova Android 13をサポート</td></tr><tr><td>7.1.1</td><td>cordova-ios 7.1.0対応</td></tr><tr><td>6.2.3</td><td>大文字のスキーム、ホスト名を自動で小文字して認識</td></tr><tr><td>6.2.2</td><td>外部サイトからjsonファイルを取得するときの不具合を修正</td></tr><tr><td>6.2.1</td><td>プログレスバースタイルの修正</td></tr><tr><td>6.2.0</td><td>cordova-android10系以降に対応 (cordova-android 9系サポート終了)</td></tr><tr><td>6.1.0</td><td>CustomSchemeに対応</td></tr><tr><td>6.0.0</td><td>Cordova10サポート (Cordova9 サポート終了)</td></tr></tbody></table>

## プライバシーマニフェスト

このプラグインで必要となるプライバシーマニフェストは以下のようになります。(cordova-ios 7.1.0以上)

```xml
<platform name="ios">
  <privacy-manifest>
    <key>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyTrackingDomains</key>
    <array/>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
    <dict>
      <key>NSPrivacyAccessedAPIType</key>
      <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
      <key>NSPrivacyAccessedAPITypeReasons</key>
      <array>
      <string>CA92.1</string>
      </array>
    </dict>
    <dict>
      <key>NSPrivacyAccessedAPIType</key>
      <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
      <key>NSPrivacyAccessedAPITypeReasons</key>
      <array>
      <string>0A2A.1</string>
      </array>
    </dict>
    </array>
    <key>NSPrivacyCollectedDataTypes</key>
    <array/>
  </privacy-manifest>
</platform>
```

マニフェストの記述方法について詳しくは [https://ja.docs.monaca.io/release\_notes/ios-privacy-manifest#puraibashmanifesutono](https://ja.docs.monaca.io/release_notes/ios-privacy-manifest) を参照して下さい。
