想要新增鄰近分享通知,最簡單的方法是使用 Google 信標資訊主頁。或者,您也可以使用 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
的長度必須少於 40 個字元,且必須少於 50 個字元。理想情況下,您應該提供行動號召。例如,Order with your phone, skip the line
、Set up your thermostat
或Learn more about sea otters
。 - 網址 - 應用程式、網站或服務的網址。
- target:指定規則,能夠根據裝置情況限制通知的瀏覽權限。
網址格式
「鄰近分享」通知支援三種網址格式:
網址
確切網址,就是一般網址。收到網址時,系統會提示使用者在預設瀏覽器中開啟網址。無需進行特殊的應用程式設定。網址必須使用 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));
任意形式的應用程式意圖
這個選項適用於無法比對配置、路徑和套件名稱格式的應用程式意圖。只有在您確定意圖網址的格式正確時,才能使用這個選項。
如果應用程式並未安裝 S.browser_fallback_url 參數,您可以選擇在不安裝應用程式的情況下,將使用者傳送至指定網址,而非 Play 商店:
intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui; \
S.browser_fallback_url=http%3A%2F%2Fm.yoursite.com%2Fpath%2F%;end;
內容比對
規則
「鄰近分享」通知支援四種指定規則:
日期
dateStart
和 dateEnd
是用來指定顯示附件的日期範圍,採 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」可用來指定能夠顯示附件的星期幾。格式為 1(星期一) 到 7(星期日),採 ISO 8601 格式。 以下是週六和週日的通知範例:
{
"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 進行 AND 運算。以下範例顯示了週六到週日上午 9 點到下午 5 點的通知。
{
"title": "Weekend and work time",
"url": "https://www.example.com",
"targeting":[
{
"startTimeOfDay": "9:00",
"endTimeOfDay": "17:00"
"anyOfDaysOfWeek": [6, 7]
}
]
}
不同指定物件的規則會以 OR 結合 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>
詳情請參閱處理應用程式連結一文。