附件資料格式

新增鄰近分享通知附件最簡單的方法, Google Beacon 資訊主頁。 此外,您可以使用 Proximity Beacon API 和下方所述的附件資料格式。

鄰近分享通知功能的附件必須使用 com.google.nearby 命名空間,以及由兩個字母組成的類型 以及選用的 -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 長度不得超過 title 個字元 ,且不得超過 50 個字元。理想情況下 當使用者加入行動號召例如 Order with your phone, skip the line Set up your thermostatLearn more about sea otters
  • url - 應用程式、網站或服務的網址。
  • 指定目標 — 限制通知顯示設定的選用規則 卻會根據裝置情境顯示內容

網址格式

「鄰近分享通知」支援三種網址格式:

網址

網址就是正常的網址。收到網址時, 系統會提示使用者在預設瀏覽器中開啟該網址。沒有特殊應用程式 必須選取設定網址必須使用 HTTPS,且格式為 一般網址:

  https://www.example.com

如果網址無法觸發通知,最有可能的原因如下:

  • 使用 HTTP 而非 HTTPS
  • 禁止連結至應用程式商店,例如 play.google.com。網頁 本身,以及 。

應用程式意圖

應用程式意圖網址是用來在應用程式中觸發意圖。應用程式意圖時 收到網址後,相關聯的應用程式就會回應 網址 (前提是有對應的應用程式意圖篩選器)。如果應用程式 未安裝,系統會將使用者帶往 Play 商店安裝應用程式。更新後 安裝完成後,使用者即可啟動應用程式並繼續使用功能 開發人員指定的設定應用程式意圖網址的格式如下:

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

如要進一步瞭解如何設定意圖網址的格式,請參閱 搭配 Chrome 使用 Android 意圖。 請注意,系統不會傳送意圖額外項目。

您也可以建立意圖,然後使用 intent.toUri(Intent.URI_INTENT_SCHEME)、 如下所示:

    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));

任意形式的應用程式意圖

這個選項應用於不符合配置、路徑、 以及套件名稱的格式除非您確定意圖網址是 格式正確

您可以選擇將使用者導向特定網址,而非位於 Play 商店的網址 加入 S.browser_fallback_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 支援四種指定目標規則:

日期

dateStartdateEnd 可用來指定日期範圍 附件會以 ISO 8601 格式顯示。 以下範例顯示 2017 年 1 月的通知:

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

時段

「timeOfDayStart」和「timeOfDayEnd」用於指定 附件,格式為 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"主要用於根據應用程式設定附件的瀏覽權限 安裝狀態。僅適用於應用程式意圖網址。下列 在使用者未安裝應用程式時顯示通知。

    {
      "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"
        }
      ]
    }

在應用程式中新增意圖篩選器

應用程式必須設定為處理指定網址的配置、主機和路徑。 方法是在 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>

詳情請參閱: 處理應用程式連結