瞭解推送通知裝載結構 :headding-anchor:push-payload
Adobe Campaign可讓您在iOS和Android行動裝置上,將個人化和分段的推播通知傳送至行動應用程式(行動應用程式)。
行動應用程式收到的每個推播通知都會攜帶一些資訊,在傳送警報推播通知時,應用程式會使用這些資訊來顯示推播通知,而且極有可能還會進行一些進一步計算,尤其是在傳送無訊息推播通知時。
行動應用程式程式碼會在事件處理常式中接收這項資訊,指出已收到推播通知。 從Adobe Campaign Standard傳送推播通知時,行動應用程式中收到的資訊也可能包含Campaign Standard特定資訊,這些資訊可用來運用Campaign Standard提供的某些功能。 此外,裝載可包含行動應用程式可使用的自訂資料。
本檔案說明當推送通知成功從Adobe Campaign Standard傳送至應用程式時,行動應用程式中收到的裝載結構。
推播裝載結構 :headding-anchor:push-payload-structure
本節詳細說明各種行動平台的裝載範例結構,並說明其中所含的主要屬性。 這是行動應用程式程式碼中接收的裝載結構,在事件處理常式中指出已收到推播通知。
裝載屬性及其值會因推播通知進階選項中提供的設定而異。 本節也提供Campaign Standard UI中這些設定與裝載中屬性之間的對應,以釐清在Campaign Standard中設定選項時裝載會發生什麼變更。
適用於iOS行動應用程式 :headding-anchor:payload-structure-ios
從Adobe Campaign傳送到iOS應用程式的 範例承載:
{
"aps":{
"alert":{
"body":"This is the content of my push notification",
"title":"Push Notification Title"
},
"content-available":1,
"category":"NEW_MESSAGE_CATEGORY",
"badge":2,
"mutable-content":1,
"sound":"default"
},
"custom_field1":"custom_value1",
"custom_field2":"custom_value2",
"media-attachment-url":"https://2.img-dpreview.com/files/p/articles/9440145363/Creative_Cloud.jpeg",
"uri":"https://mydeeplinkurl.com",
"_dId":"56c4",
"_mId":"h138a"}
要與iOS APNS Tester 搭配使用的JSON裝載範例
{
"aps": {
"alert": {
"title": "Push Notification Title",
"body": "body of push"
},
"badge": 33,
"sound": "default"
},
"custom_field1": "custom_value1",
"uri": "https://mydeeplinkurl.com"
}
裝載中最重要的部分是aps字典,它包含Apple定義的索引鍵,並用來決定接收通知的系統應如何提醒使用者(如果有的話)。 本節包含行動應用程式用來制定推播通知行為的預先定義金鑰。
您可以在Apple開發人員檔案中找到aps內屬性的深入詳細資料: 建立遠端通知承載。
適用於Android應用程式 :headding-anchor:payload-structure-android
從Adobe Campaign傳送至Android應用程式的裝載範例
{
"collapseKey": "1476005",
"priority": "high",
"data": {
"_dId": "d57fd6",
"_mId": "h1685a5",
"body": "adobe body 123",
"category": "adobe category 123",
"custom key 1": "value 1",
"custom key 2": "test value 2",
"custom key 3": "foo bar android",
"media-attachment-url": "http://adobegiphy.com?test=123",
"sound": "http://testcampaign.instance.com/r/?id=s1685a5,d57fd6,d57ff5",
"title": "adobe title 123",
"uri": "http://testcampaign.instance.com/r/?id=d1685a5,d57fd6,d57ff6",
"badge": 1817
}
}
使用Google FCM測試器 的JSON範例承載
{
"to": "<==========ENTER your device token==============>",
"collapseKey": "1476005",
"priority": "high",
"data": {
"_dId": "d57fd6",
"_mId": "h1685a5",
"title": "adobe title 123",
"body": "adobe body 123",
"category": "adobe category 123",
"custom key 1": "value 1",
"custom key 2": "test value 2",
"custom key 3": "foo bar android",
"media-attachment-url": "http://adobegiphy.com?test=123",
"sound": "http://testcampaign.instance.com/r/?id=s1685a5,d57fd6,d57ff5",
"uri": "http://testcampaign.instance.com/r/?id=d1685a5,d57fd6,d57ff6",
"badge": 1817
}
}
裝載包含資料訊息,其中包含所有推播通知傳送內容,包括自訂索引鍵/值組,而使用者端應用程式必須處理該訊息以建置和顯示推播通知(如果需要)或新增任何其他商業邏輯。
若要瞭解Android裝載的各個層面,請參閱傳訊概念與選項(fcm)。
Campaign Standard設定與裝載屬性之間的對應 :headding-anchor:mapping-payload
訊息本文
警示→本文
內文
標題和正文索引鍵提供警示的內容。
類別索引鍵可協助系統將該類別的動作顯示為警示介面中的按鈕。
(僅適用於iOS 10或更新版本)
在提供此URL的值時,可變內容旗標會自動傳送至裝載。
(僅適用於iOS 10或更新版本)
(僅適用於iOS 10或更新版本)
(僅適用於iOS 10或更新版本)
(僅適用於Android)
_dId
_dId
如果您的應用程式想要呼叫追蹤回傳,以追蹤何時點選/開啟推播通知,則需要這些屬性。 此資訊由應用程式伺服器內部計算及傳送,使用者毋須另行干預。
回傳資訊可在此頁面中找到。
如何在行動應用程式程式碼中擷取裝載資訊 :headding-anchor:payload-information
行動應用程式程式碼會在事件處理常式中接收應用程式伺服器傳送的裝載資訊,指出已收到推播通知。 此事件會因使用的行動平台而異,也會因應用程式是在前景或背景執行而有所不同。 以下檔案可協助您根據使用案例來識別您要處理的事件處理常式。
- iOS應用程式: 正在處理遠端通知中的遠端通知 區段。
- Android應用程式: 在Android使用者端應用程式上接收訊息
iOS行動應用程式的 範例
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSDictionary *apsDict = [userInfo objectForKey:@"aps"];
NSDictionary *alertDict = [apsDict objectForKey:@"alert"];
NSString *title = [alertDict objectForKey:@"title"];
NSString *body = [alertDict objectForKey:@"body"];
NSString *category = [apsDict objectForKey:@"category"];
NSString *deliveryId = userInfo[@"_dId"];
NSString *broadlogId = userInfo[@"_mId"];
NSString *mediaAttachmentURL = userInfo[@"media-attachment-url"];
NSString *deeplinkURL = userInfo[@"uri"];
NSString *customValue1 = userInfo[@"custom_field1"];
}
Android Mobile FCM應用程式的 範例
public void onMessageReceived(RemoteMessage message) {
Map<String, String> dataMap = message.getData();
String title = dataMap.get("title");
String body = dataMap.get("body");
String category = dataMap.get("category");
String deliveryId = dataMap.get("_dId");
String broadlogId = dataMap.get("_mId");
String mediaAttachmentURL = dataMap.get("media-attachment-url");
String deeplinkURL = dataMap.get("uri");
String customValue1 = dataMap.get("custom_field1");
}