ドキュメント

App Clipでの通知の有効化

App Clipで通知のスケジュールと受信を有効化して、通知を一時的または長期にわたり受信できるよう設定します。

概要

価値あるサービスを提供するために、App Clipによっては通知のスケジュールを設定したり、通知の受信を有効にすることが必要な場合があります。ユーザーが料理のデリバリーを注文できるApp Clipを考えてみましょう。通知を送信することで、App Clipはデリバリーの予定到着時間をユーザーに知らせます。App Clipの機能において通知が重要な場合は、起動後最大8時間まで、通知のスケジュールを設定するか、通知を受信できるようにします。なお、App Clipを複数のビジネス向けに開発する場合は、必ず通知ペイロードに変更を加えてください。

一時的な通知のスケジュールまたは受信設定

App Clip起動後8時間以内の通知のスケジュールまたは受信を設定するには、まずはNSAppClip(英語)キーをApp ClipのInfo.plistファイルに追加し、型をDictionaryに設定します。次に、このディクショナリに、NSAppClipRequestEphemeralUserNotification(英語)をキーとするエントリを追加します。型をBooleanに、その値をtrueに設定します。

もしくは、プロパティリストエディタでInfo.plistファイルを開き、キーのリストからApp Clipを選択してエントリを追加します。これにより、キーがNSAppClipで、Boolean型の2つのエントリ「Requests ephemeral user notifications(一時的なユーザー通知のリクエスト)」および「Requests location confirmation(位置情報の確認リクエスト)」がディクショナリに追加されます。デフォルトでは、両方のエントリの値はNOです。「Requests ephemeral user notifications(一時的なユーザー通知のリクエスト)」の値をYESに変更します。

App Clipが通知を短期間送信できるようにするエントリのあるInfo.plistファイル。

これにより、App Clipを呼び出すと表示されるApp Clipカードに、App Clipの通知の受信またはスケジュール機能をユーザーに知らせるメモが表示されます。この権限はデフォルトで有効になっていますが、ユーザーはApp Clipカードのメモをタップして無効にすることもできます。

通知を送信できるApp ClipのApp Clipカード。

ユーザーがApp Clipカードで通知を無効にできるため、App Clipに通知のスケジュール設定や受信を行う権限があるかどうかを確認するコードを追加します。次のコードは、短期間にわたる通知の送信をユーザーが許可しているかどうかを確認します。


let center = UNUserNotificationCenter.current()
center.getNotificationSettings { (settings) in {
    if settings.authorizationStatus == .ephemeral {


        // The user didn’t disable notifications in the App Clip card.
        // Add code for scheduling or receiving notifications here.
        return
    }
}

通知を送信するための明示的な許可のリクエスト

1日以上にわたり継続する機能の場合は、通知を送信するためのユーザーの許可を明示的にリクエストします。たとえば、レンタカー会社のApp Clipの場合、借りた車の返却期限を知らせる通知を送信するための許可をユーザーにリクエストすることができます。

ただし、この許可をリクエストするかどうかは慎重に検討してください。ユーザーがリクエストを拒否した場合、起動後8時間以内のApp Clipからの通知の受信やスケジュール設定をオーバーライドすることになります。

詳細については、「通知を使用する許可のリクエスト(英語)」を参照してください。

通知ペイロードへの変更の追加

単一のApp Clipを複数のビジネス向けに開発する場合があります。たとえば、レストラン向けのプラットフォームプロバイダとして、さまざまなレストランで利用されるApp Clipを開発するケースを考えてみましょう。ユーザーがそのApp Clipを異なる複数のビジネス向けに短時間に連続して起動した場合、App Clipの複数のインスタンスがデバイス上に存在する可能性があります。

このようなケースでは、通知の受信時に、システムが通知を適切なApp Clipインスタンスに渡す必要があります。そのため、通知ペイロードにはターゲットコンテンツIDとしてURLを含める必要があります。次のコードは、複数のビジネスで利用されるApp Clipの通知ペイロードを示しています。


{
    "aps" : {
        "alert" : {
            "title" : "Order Status",
            "subtitle" : "Restaurant A",
            "body" : "Your order is ready."
        },
        "category" : "order_status",
        "target-content-id" : "https://example.com/restaurants/restaurant_a/order/1234"
    }
} 

target-content-idの値は、それぞれのビジネスに対応する高度なApp Clip体験に一致するURLでなければなりません。先ほどのレストランの例で、次の両方のURLをApp Store Connectに登録するとします。

  • https://example.com/restaurants/restaurant_a

  • https://example.com/restaurants/restaurant_b

その場合、呼び出しURLとターゲットコンテンツIDは、以下のようにすることができます。

  • https://example.com/restaurants/restaurant_a/order/1234

  • https://example.com/restaurants/restaurant_b/order/5678

一般的に、できるだけ具体的なターゲットコンテンツIDを使用します。同様に、App Clipでローカル通知のスケジュールを有効化する場合は、たとえばtargetContentIdentifier(英語)を使用して、通知ペイロードのターゲットコンテンツIDを設定します。

詳細については、「App Clipの起動体験の構成」、「リモート通知の生成(英語)」、「Appからのローカル通知のスケジュールを設定する(英語)」を参照してください。