添付ファイルのデータ形式

Nearby Notifications 添付ファイルを追加する最も簡単な方法は、Google ビーコン ダッシュボードを使用することです。 また、Proximity Beacon API と以下で説明する添付ファイルのデータ形式を使用することもできます。

Nearby Notifications 機能の添付ファイルは、com.google.nearby 名前空間と、2 文字の言語コードとオプションの -debug サフィックスで構成される型を使用する必要があります。

添付ファイルは JSON を使用してフォーマットする必要があります。例:

    {
      "title": "Example",
      "url": "https://www.example.com"
    }

必要に応じて、JSON 形式を使用すると、次のように特定のターゲティングが可能になります。

    {
      "title": "Example",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31",
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00",
          "anyOfDaysOfWeek": [1, 2, 3, 4, 5, 6, 7],
          "anyOfAppInstallStates": ["INSTALLED", "NOT_INSTALLED"]
        }
      ]
    }

ここで

  • title - コンテンツのタイトル。title の長さは 40 文字未満で、50 文字未満にする必要があります。ユーザーに行動を促すものが理想的です。たとえば、Order with your phone, skip the lineSet up your thermostatLearn more about sea otters です。
  • url - アプリ、ウェブサイト、またはサービスの URL。
  • ターゲティング - デバイスのコンテキストに基づいて通知の公開設定を制限するルール(省略可)。

URL 形式

Nearby Notifications では、次の 3 つの URL 形式がサポートされています。

ウェブ URL

ウェブ URL とは、まさに通常の URL です。ウェブ URL を受信すると、デフォルトのブラウザでその URL を開くように求められます。特別なアプリ構成は必要ありません。ウェブ URL は HTTPS を使用し、通常の URL の形式にする必要があります。

  https://www.example.com

ウェブ URL で通知が表示されない場合は、次の原因が考えられます。

  • HTTPS の代わりに HTTP を使用する
  • play.google.com などのアプリストアへのリンクは禁止されています。ウェブページは独立しており、有用な情報やアクションをランディング ページに直接記載する必要があります。

アプリのインテント

アプリ インテント URL は、アプリ内のインテントをトリガーするために使用されます。アプリ インテントの URL を受信すると、対応するアプリ インテント フィルタが存在する場合、関連付けられたアプリはその URL に含まれるパラメータに応答します。アプリがインストールされていない場合、ユーザーは Play ストアにリダイレクトされ、そのアプリをインストールします。アプリをインストールした後、アプリを起動してデベロッパーが提供する機能に進みます。アプリ インテントの URL の形式は次のとおりです。

  intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui;end;

インテント URL の形式について詳しくは、Chrome での Android インテントをご覧ください。 インテント エクストラは渡されません。

次に示すように、インテントを作成してから intent.toUri(Intent.URI_INTENT_SCHEME) を使用して、URL を正しく作成することもできます。

    Intent intent = new Intent()
        .setData(new Uri.Builder()
            .scheme("yourscheme")
            .authority("host")
            .appendPath("path")
            .build())
        .setPackage("com.yourapp.ui");
    Log.i(TAG, "Use this intent url: " + intent.toUri(Intent.URI_INTENT_SCHEME));

自由形式のアプリのインテント

このオプションは、スキーム、パス、パッケージ名の形式と一致しないアプリのインテントに使用します。このオプションは、インテント URL が正しくフォーマットされている場合にのみ使用してください。

アプリがインストールされていない場合は、Play ストアではなく、指定された URL にユーザーを転送することもできます。その場合は、インテントに S.browser_フォールバック_url パラメータを追加します。

intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui; \
  S.browser_fallback_url=http%3A%2F%2Fm.yoursite.com%2Fpath%2F%;end;

コンテンツ ターゲティング

ルール

Nearby Notifications では、次の 4 つのターゲティング ルールがサポートされます。

日付

dateStartdateEnd は、添付ファイルを表示する期間を ISO 8601 形式で指定するために使用されます。次の例は、2017 年 1 月中の通知を示しています。

    {
      "title": "January 2017",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31"
        }
      ]
    }

時間帯

「timeOfDayStart」と「timeOfDayEnd」は、添付ファイルを表示する 1 日あたりの期間を ISO 8601 形式で指定するために使用されます。次の例は、毎日午前 9 時から午後 5 時までの通知を示しています。

    {
      "title": "Work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

曜日

「anyOfDaysOfWeek」は、添付ファイルを表示する曜日を指定する場合に使用します。形式は ISO 8601 の 1(月曜日)から 7(日曜日)までです。 次の例は、土曜日と日曜日の通知を示しています。

    {
      "title": "Weekends",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

アプリのインストール状態

「anyOfAppInstallStates」は、アプリのインストール状態に基づいて添付ファイルの公開設定を設定するためのものです。これはアプリ インテントの URL でのみ機能します。次の例は、アプリがインストールされていない場合の通知を示しています。

    {
      "title": "App not installed",
      "url": "intent://host/path#Intent;package=com.example",
      "targeting":[
        {
          "anyOfAppInstallStates": ["NOT_INSTALLED"]
        }
      ]
    }

ルールの組み合わせ

各添付ファイルには、複数のターゲティング ルールを含めることができます。同じターゲット オブジェクトのルールは AND で結合されます。次の例は、土曜日と日曜日の午前 9 時から午後 5 時までの通知を示しています。

    {
      "title": "Weekend and work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

異なるターゲティング オブジェクトのルールは OR で結合されます。次の例は、月曜日から金曜日の毎日午前 9 時から午後 5 時までと、土曜日と日曜日の終日の通知を示しています。

    {
      "title": "Weekend or work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        },
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

アプリにインテント フィルタを追加する

指定された URL のスキーム、ホスト、パスを処理するようにアプリを構成する必要があります。これを行うには、以下のように AndroidManifest.xml に要素を追加して、スキーム、ホスト、パスに一致する <intent-filter> を宣言し、カテゴリ フィルタで閲覧可能としてマークする必要があります。

  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
     <!-- both categories below are required -->
     <category android:name="android.intent.category.BROWSABLE"/>
     <category android:name="android.intent.category.DEFAULT"/>
    <data android:host="host"
          android:pathPrefix="/path"
          android:scheme="yourscheme"/>
  </intent-filter>

詳しくは、アプリリンクの処理をご覧ください。