Share via


バックグラウンドの直接プッシュ通知を使うロック画面のアプリの作成方法 (HTML)

[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]

このトピックでは、Windows ランタイム アプリで直接プッシュ通知を使う、バックグラウンド ネットワーク通知を受信するための、ロック画面に表示するアプリを作る方法について説明します。 直接プッシュ通知を使うと、ロック画面に表示するアプリがバックグラウンドにある場合に、そのアプリでネットワーク通知を受信できます。

目標: アプリがバックグラウンドにある場合に直接プッシュ通知を使うネットワーク通知を受信する、ロック画面に表示するアプリを作成します。

必要条件

  • 以下の情報は、直接プッシュ通知を使った常時接続のネットワーク接続に依存する、あらゆる接続型 (ネットワーク認識型) の Windows ランタイム アプリに適用されます。このトピックは Windows 8.1、Windows Phone 8.1、および Windows Server 2012 R2 の JavaScript で記述されたアプリに適用されます。

    直接プッシュ通知を使ったバックグラウンド ネットワーク接続は、JavaScript アプリ、C++/XAML で記述されたアプリ、C#、VB.NET、または Managed C++ の .NET Framework 4.5 を使ったアプリでサポートされています。 JavaScript アプリに適用されるバックグラウンドのネットワーク タスクについて詳しくは、「バックグラウンド タスクによるアプリのサポート」をご覧ください。

バックグラウンドの直接プッシュ通知を使ったロック画面に表示するアプリの作成

WNS による直接プッシュ通知を使ってバックグラウンド タスクをアクティブ化する場合は、アプリをロック画面に表示するアプリにしておく必要があります。

アプリをロック画面に配置するよう要求するために、アプリ マニフェストで適切な機能を設定する必要があります。また、アプリにロック画面への追加を要求するコードを含めて、ユーザーがロック画面にアプリを追加した場合またはロック画面からアプリを削除した場合に対処する必要があります。

アプリをロック画面に配置するには、ユーザーの同意を得る必要があります。ロック画面要求 API が呼び出されると、同意のプロンプトが表示されます。ユーザーがアプリにロック画面で実行する権限を与えなかった場合、権限を要求するプロンプトをもう一度表示することはできません。ただし、ユーザーがダイアログを誤って閉じた場合は、プロンプトをもう一度表示できます。

ユーザーは、ロック画面に表示するアプリになる権限を拒否した場合でも、アプリのシステム権限ポップアップを使って、後でそのアプリをロック画面に追加できます。また、ユーザーは [PC 設定] の [パーソナル設定] セクションから、アプリをロック画面に手動で追加することもできます。

アプリをロック画面に配置するよう要求するには、以下の手順を実行する必要があります。アプリ マニフェストは、Microsoft Visual Studio 2013 で package.appxmanifest ファイルを開いて変更することも、手動で変更することもできます。

JJ679949.wedge(ja-jp,WIN.10).gifロック画面に表示するアプリになるための登録を行う

  1. アプリ マニフェストでアプリのタイルにワイド ロゴが関連付けられていることを確認します。アプリ マニフェストで、DefaultTile 要素に WideLogo 属性が設定されていることを確認します。

    次のサンプルでは、アプリ マニフェストの <VisualElements> 要素の下に DefaultTile 要素を追加しています。

        <DefaultTile ShowName="allLogos" WideLogo="images\tile.png" />
    
  2. アプリでバックグラウンド タスクを使うことを示します。アプリ マニフェストでは、バックグラウンド タスクを含む JavaScript ソース ファイルと、バックグラウンド タスクのエントリ ポイントが実装されているクラス名も指定する必要があります。

    WNS で直接プッシュ通知を使う、ロック画面に表示するアプリを構築する場合は、JavaScript ソース ファイルと、バックグラウンド タスクの種類として pushNotification を指定します。これにより、WNS の直接プッシュ通知をアプリで受け取ることができます。

    次のサンプルでは、アプリ マニフェストの <Application> 要素の下に、直接プッシュ通知を追加しています。

      <Extensions>
        <Extension Category="windows.backgroundTasks" StartPage="js\backgroundTask.js">
          <BackgroundTasks>
            <Task Type="pushNotification" />
          </BackgroundTasks>
        </Extension>
      </Extensions>
    
  3. アプリがロック画面に配置されるので、表示できなかった通知を表示する際に使うことができるロック画面用のアイコンも必要です。このアイコンを用意するには、アプリ マニフェストを更新して、LockScreen 要素を含めます。

    次のサンプルは、アプリ マニフェストの <VisualElements> 要素の下に追加された LockScreen 要素を示しています。

        <LockScreen Notification="badge" BadgeLogo="Images\badgelogo.png" />
    
  4. これまでの手順を完了すると、アプリをロック画面に配置するための権限をユーザーに要求できます。Background.BackgroundExecutionManager.RequestAccessAsync メソッドは、アプリをロック画面に追加するよう要求するダイアログ ボックスをユーザーに表示します。ユーザーがこの要求を承認したら、アプリをバックグラウンドで実行し、ロック画面に通知を表示できるようになります。

    次のサンプルでは、ロック画面に配置するための権限を要求しています。

    
        var lockScreenAdded = false;
    
        function ClientInit() {
            // Lock screen is required for raw push notification
            // background code to run.
            //
            if (lockScreenAdded == false) {
                BackgroundExecutionManager.RequestAccessAsync().done(function (result) {
    
                switch (result) {
                    case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
                        //
                        // App is allowed to use RealTimeConnection broker 
                        // functionality even in low power mode.
                        //
                        lockScreenAdded = true;
                        break;
                    case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
                        //
                        // App is allowed to use RealTimeConnection broker 
                        // functionality but not in low power mode.
                        //
                        lockScreenAdded = true;
                        break;
                    case BackgroundAccessStatus.Denied:
                        //
                        // App should switch to polling mode (example: poll for email based on time triggers)
                        //
                        WinJS.log && WinJS.log("Lock screen access is denied", "sample", "status");
                        break;
                }
            }, function (e) {
                WinJS.log && WinJS.log("An error occurred while requesting lock screen access.", "sample", "error");
            });
        }
    

    ロック画面に表示する WNS ベースのアプリを直接プッシュ通知を使って構築する場合、権限が付与されると、アプリの BackgroundAccessStatusAllowedMayUseActiveRealTimeConnectivity に設定されます。AllowedWithAlwaysOnRealTimeConnectivity リアルタイム接続オプションはネットワーク トリガー機能に使われます。直接プッシュ通知を使った WNS ベースのロック画面アプリに影響を及ぼすことはありません。

    アプリがロック画面に追加されたら、[PC 設定][パーソナル設定] セクションにアプリが表示されます。ユーザーは、ロック画面に表示するアプリの一覧からいつでもアプリを削除できます。そのため、ロック画面から削除された場合でも、アプリが常に機能するようにしておく必要があります。

    ロック画面の要求について詳しくは、「ロック画面の概要」およびロック画面のアプリのサンプルに関するページをご覧ください。

要約と次のステップ

プッシュ通知チャネルを登録してサーバーに送信し、直接プッシュ通知によってアクティブ化するバックグラウンド タスクを登録してから、そのチャネルに直接プッシュ通知を送信してバックグラウンド タスクをアクティブ化する手順について詳しくは、「ロック画面のアプリへの直接プッシュ通知の配信に WNS を使う方法」をご覧ください。

直接プッシュ通知を使ったバックグラウンド ネットワーク通知を受信するためにバックグラウンド タスクを記述する方法について詳しくは、「直接プッシュ通知用のバックグラウンド タスクを記述する方法」をご覧ください。

直接プッシュ通知を使うためのガイドラインとチェック リストについて詳しくは、

直接通知のガイドラインとチェック リスト」をご覧ください。

関連トピック

その他のリソース

ネットワーク サポートの追加

バックグラウンド ネットワーク

バッジの概要

直接通知のガイドラインとチェック リスト

ロック画面のアプリへの直接プッシュ通知の配信に WNS を使う方法

直接プッシュ通知用のバックグラウンド タスクを記述する方法

ロック画面の概要

プッシュ通知の概要

バックグラウンド タスクによるアプリのサポート

タイルとタイル通知の概要

トースト通知の概要

バックグラウンドでのデータの転送

ネットワーク接続のトラブルシューティングとデバッグ

リファレンス

HttpClient

HttpClientHandler

IXMLHTTPRequest2

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

サンプル

バックグラウンド タスクのサンプルに関するページ

ロック画面のアプリのサンプルに関するページ

プッシュ通知と定期的な通知のクライアント側のサンプルに関するページ

直接通知のサンプル