# 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` プラグインにカーソルを置き、`有効`ボタンをクリックします。

![](/files/-MgOrwXsCt4a9uwEcJYr)

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

![](/files/-MgOs3-c9fEUFJPOZusj)

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

![](/files/-MgOsGno4q8GArXB0pIz)

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

Monaca クラウド IDE から、

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

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

## 使い方

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

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

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

### プラグインの設定

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

### CheckUpdate URL

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

更新ファイル情報は、[getServerVersion()](/reference/power_plugins/in-app_updater.md#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()](/reference/power_plugins/in-app_updater.md#download) メソッドでダウンロード URL を設定すると、この設定を省略できます。
{% endhint %}

## API リファレンス

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ja.docs.monaca.io/reference/power_plugins/in-app_updater.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
