ウェブアプリをサポートする

ウェブアプリはウェブページを Android アプリに変換し、モバイル デバイスで簡単に見つけ、簡単に使用できるようにします。ウェブアプリは、デバイスのランチャーでネイティブ アプリのように見えます。ウェブページを開くと、ユーザーのデフォルト ブラウザ([設定] > [アプリ] > [デフォルト アプリ] > [ブラウザ アプリ])でレンダリングされ、ブラウザの機能に応じて表示されます。

ウェブアプリは、ネイティブ アプリと同じ方法で配布できます。これには、managed Google Play ストアのコレクションに追加したり、デバイスにリモートでインストールしたりすることが含まれます。


ウェブアプリのコンポーネント

ウェブアプリを作成するには、次の項目を指定する必要があります。

  • デバイスの管理対象の Google Play ストアとランチャーに表示されるタイトル
  • ウェブアプリが開く開始 URL
  • ウェブアプリがデバイスにどのように表示されるかを指定する表示モード

ユーザーがウェブアプリを認識できるように、ウェブアプリのアイコンを設定することもできます。アイコンは省略可能ですが、使用することをおすすめします。

タイトル

タイトルは 30 文字未満にしてください。デバイスのフォーム ファクタによっては、managed Play ストアとデバイスのランチャーでウェブアプリのタイトルが切り捨てられることがあります。そのため、短いタイトルを指定することをおすすめします。

開始 URL

ウェブアプリの開始 URL は、ウェブアプリが開くページを定義します。その後、ユーザーは他の URL に移動できます。

開始 URL は HTTPS または HTTP の URL にする必要があります。表示モードが全画面表示またはスタンドアロンの場合、ウェブアプリの URL には HTTPS スキームが必要です。

Display mode

ディスプレイ モードは、ウェブアプリを開いたときに表示されるブラウザ UI 要素を指定します。

  • ミニマル UI: URL バーが上部に表示され、システム ステータスバーとナビゲーション ボタンが表示されます。HTTP URL の場合、これが唯一の選択肢となります。
  • スタンドアロン: URL バーは表示されず、システムのステータスバーとナビゲーション ボタンが表示されます。
  • 全画面表示: URL バーは表示されず、システム ステータスバーとナビゲーション ボタンは非表示になります。ウェブサイトのインターフェースですべてのナビゲーション コントロールを提供する必要があります。
図 1. 左から右: 最小 UI、スタンドアロン、全画面の表示モード。

表示モードは、開始 URL と同じドメインのページにのみ適用されます。ユーザーが開始 URL とは異なるドメインの URL に移動した場合、この新しいページは Chrome カスタムタブで開き、選択した表示モードに関係なく、新しい URL がユーザーに表示されます。たとえば、開始 URL がすぐに別のドメインの URL にリダイレクトされる場合、そのページは Chrome カスタムタブに表示されます。

ユーザーがウェブアプリを初めて開くと、画面の下部に通知が表示され、ネイティブ アプリではなくブラウザで開いていることをユーザーに知らせます。

図 2. ユーザーがウェブアプリを初めて開いたときに表示される通知。

アイコン

アイコンを指定すると、ユーザーがウェブアプリを識別しやすくなります。アイコンが指定されていないウェブアプリには、同じデフォルトのアイコンが挿入されて表示されます。ユーザーがアプリを簡単に区別できるように、明確で意味のあるアイコンを使用してウェブアプリを作成することを強くおすすめします。

IT 管理者は、managed Google Play iframe で作成したウェブアプリに 1 つのアイコンを設定できます。 API を使用してウェブアプリを作成する場合は、IT 管理者が複数のアイコンを設定できるようにできます。これらのアイコンはすべてウェブアプリの APK に埋め込まれ、Android システムはデバイスのディスプレイ解像度に最も適したアイコンを表示します。管理対象の Google Play ストアには、ウェブアプリに指定された最初のアイコンが常に表示されます。

最初のアイコンは、理想的には 512 x 512 ピクセルの正方形にする必要があります。PNG と JPEG の形式が許可されますが、サイズは 1 MB 以下にする必要があります。この形式に準拠していないアイコンは、管理対象の Google Play ストア エントリ用に再スケーリングされます。また、アイコンは「マスク可能」にする必要があります。これにより、システムごとに形状を調整できます。詳しくは、マスク可能なアイコンをご覧ください。

API を使用する場合は、アイコンデータは base64url 形式でエンコードする必要があります(base64 形式で、ただし「+」は「-」に置き換え、「/」は「_」に置き換えます)。[詳細については、RFC 4648 のセクション 5 をご覧ください]。


ウェブアプリを作成する

ウェブアプリは、managed Google Play iframe を EMM コンソールに埋め込むか、API と統合することで作成できます。どちらのアプローチも互換性があり、デバイス上で同じエンドユーザー エクスペリエンスを提供するため、どのアプローチがソリューションに最適かを判断するのはお客様次第です。

オプション 1: managed Google Play iframe を埋め込む

managed Google Play iframe には、IT 管理者がウェブアプリを作成、編集、削除するためのユーザー インターフェースが含まれています。このオプションでウェブアプリをサポートする場合は、手順に沿って managed Google Play iframe を EMM コンソールに埋め込みます。ウェブアプリの管理画面には、iframe の左側のナビゲーション メニューからアクセスできます。

iframe でウェブアプリが作成された後、インターフェースでアプリを選択できるようになるまでに数分かかることがあります。ウェブアプリが選択されると、ウェブアプリのパッケージ名がイベントに渡され、onproductselect イベントがトリガーされます。

ウェブアプリのパッケージ名を使用して、ユーザーに配布できます。

オプション 2: API と統合する

EMM コンソールでウェブアプリをサポートするもう 1 つの方法は、ウェブアプリ API と統合することです。ウェブアプリを作成するには、メソッド webApps.create を使用します。

API を使用して作成したウェブアプリは、作成直後にポリシーに追加できます。ただし、デバイスにインストールされるか、管理対象の Play ストアでユーザーに表示されるまでには数分かかることがあります。

ウェブアプリを配信する

ウェブアプリは、他のアプリと同様に配布できます。iframe または API から返されたパッケージ名をデバイスのポリシーに追加します。

デバイスがウェブアプリのディスプレイ モードをサポートするには、Google Chrome(パッケージ名 com.android.chrome)がインストールされている必要があります。Chrome がデバイスにインストールされるようにするには、デバイスのポリシーに Chrome を追加し、installTypeFORCE_INSTALLED に設定することをおすすめします。

Google Chrome がデバイスにインストールされていない場合、ウェブアプリを開くと、Google Chrome をインストールする必要があることを示すダイアログが表示されます。

ウェブアプリを更新する

managed Google Play iframe を使用すると、IT 管理者は公開したウェブアプリを編集できます。API を使用すると、webApps.patch を呼び出してウェブアプリのあらゆる要素を更新できます。このメソッドは、webApps.create と同じパラメータに加えて、アプリの名前を受け取ります。

更新がすべてのデバイスに反映されるまでには、アプリの更新の設定に応じて数分から 24 時間ほどかかります。また、ウェブアプリのタイトルの更新がランチャーに反映される前に、デバイスのランチャー アプリからキャッシュを削除することが必要になる場合があります。

また、Google は定期的にウェブアプリを更新して Chrome ラッパーを更新します。この更新は、ウェブアプリのバージョン番号が変更され、次回の都合のよいタイミングでアプリが Play ストアによって自動的に更新されることを除き、企業やそのユーザーには影響しません。

ウェブアプリを削除する

IT 管理者は、managed Google Play iframe を使用してウェブアプリを削除できます。API を使用して webApps.delete を呼び出してウェブアプリを削除できます。ウェブアプリを削除すると、managed Play ストアから削除されますが、デバイスからアンインストールされることはありません。デバイスからウェブアプリをアンインストールするには、デバイスのポリシーでアプリの installTypeBLOCKED に設定します。