Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon SNS unterstützt die Verwendung der FCM-HTTP-v1-API zum Senden von Benachrichtigungen an Android-, iOS- und Webpush-Ziele. Dieses Thema enthält Beispiele für die Payload-Struktur beim Veröffentlichen von mobilen Push-Benachrichtigungen über die CLI oder die Amazon SNS SNS-API.
Sie können die folgenden Nachrichtentypen in Ihre Payload aufnehmen, wenn Sie eine FCM-Benachrichtigung senden:
-
Datennachricht — Eine Datennachricht wird von Ihrer Client-App verarbeitet und enthält benutzerdefinierte Schlüssel-Wert-Paare. Wenn Sie eine Datennachricht erstellen, müssen Sie den
data
Schlüssel mit einem JSON-Objekt als Wert angeben und dann Ihre benutzerdefinierten Schlüssel-Wert-Paare eingeben. -
Benachrichtigungsnachricht oder Anzeigenachricht — Eine Benachrichtigung enthält einen vordefinierten Satz von Schlüsseln, die vom FCM SDK verarbeitet werden. Diese Schlüssel variieren je nach Gerätetyp, an den Sie liefern. Weitere Informationen zu plattformspezifischen Benachrichtigungsschlüsseln finden Sie im Folgenden:
Weitere Informationen zu FCM-Nachrichtentypen finden Sie unter Nachrichtentypen
Verwenden der FCM v1-Payload-Struktur zum Senden von Nachrichten
Wenn Sie zum ersten Mal eine FCM-Anwendung erstellen oder die Funktionen von FCM v1 nutzen möchten, können Sie sich dafür entscheiden, eine FCM v1-formatierte Payload zu senden. Dazu müssen Sie den Schlüssel der obersten Ebene angeben. fcmV1Message
Weitere Informationen zum Erstellen von FCM v1-Payloads finden Sie unter Migration von Legacy-FCM APIs zu HTTP v1
FCM v1-Beispielnutzlast, die an Amazon SNS gesendet wurde:
Anmerkung
Der im folgenden Beispiel verwendete GCM
Schlüsselwert muss als Zeichenfolge kodiert werden, wenn eine Benachrichtigung mit Amazon SNS veröffentlicht wird.
{
"GCM": "{
\"fcmV1Message\": {
\"validate_only\": false,
\"message\": {
\"notification\": {
\"title\": \"string\",
\"body\": \"string\"
},
\"data\": {
\"dataGen\": \"priority message\"
},
\"android\": {
\"priority\": \"high\",
\"notification\": {
\"body_loc_args\": [\"string\"],
\"title_loc_args\": [\"string\"],
\"sound\": \"string\",
\"title_loc_key\": \"string\",
\"title\": \"string\",
\"body\": \"string\",
\"click_action\": \"clicky_clacky\",
\"body_loc_key\": \"string\"
},
\"data\": {
\"dataAndroid\": \"priority message\"
},
\"ttl\": \"10023.32s\"
},
\"apns\": {
\"payload\": {
\"aps\": {
\"alert\": {
\"subtitle\": \"string\",
\"title-loc-args\": [\"string\"],
\"title-loc-key\": \"string\",
\"loc-args\": [\"string\"],
\"loc-key\": \"string\",
\"title\": \"string\",
\"body\": \"string\"
},
\"category\": \"Click\",
\"content-available\": 0,
\"sound\": \"string\",
\"badge\": 5
}
}
},
\"webpush\": {
\"notification\": {
\"badge\": \"5\",
\"title\": \"string\",
\"body\": \"string\"
},
\"data\": {
\"dataWeb\": \"priority message\"
}
}
}
}
}"
}
Achten Sie beim Senden einer JSON-Nutzlast darauf, das message-structure
Attribut in Ihre Anfrage aufzunehmen und es auf zu setzen. json
CLI-Beispiel:
aws sns publish --topic $TOPIC_ARN --message '{"GCM": "{\"fcmV1Message\": {\"message\":{\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"android\":{\"priority\":\"high\",\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"data\":{\"customAndroidDataKey\":\"custom key value\"},\"ttl\":\"0s\"},\"apns\":{\"payload\":{\"aps\":{\"alert\":{\"title\":\"string\", \"body\":\"string\"},\"content-available\":1,\"badge\":5}}},\"webpush\":{\"notification\":{\"badge\":\"URL\",\"body\":\"Test\"},\"data\":{\"customWebpushDataKey\":\"priority message\"}},\"data\":{\"customGeneralDataKey\":\"priority message\"}}}}", "default": "{\"notification\": {\"title\": \"test\"}"}' --region $REGION --message-structure json
Weitere Informationen zum Senden von Payloads im FCM v1-Format finden Sie in der Firebase-Dokumentation von Google:
Verwenden der veralteten Payload-Struktur zum Senden von Nachrichten an die FCM v1-API
Bei der Migration zu FCM v1 müssen Sie die Payload-Struktur, die Sie für Ihre älteren Anmeldeinformationen verwendet haben, nicht ändern. Amazon SNS wandelt Ihre Payload in die neue FCM v1-Payload-Struktur um und sendet sie an Google.
Payload-Format der Eingabe-Nachricht:
{
"GCM": "{\"notification\": {\"title\": \"string\", \"body\": \"string\", \"android_channel_id\": \"string\", \"body_loc_args\": [\"string\"], \"body_loc_key\": \"string\", \"click_action\": \"string\", \"color\": \"string\", \"icon\": \"string\", \"sound\": \"string\", \"tag\": \"string\", \"title_loc_args\": [\"string\"], \"title_loc_key\": \"string\"}, \"data\": {\"message\": \"priority message\"}}"
}
Nachricht an Google gesendet:
{
"message": {
"token": "***",
"notification": {
"title": "string",
"body": "string"
},
"android": {
"priority": "high",
"notification": {
"body_loc_args": [
"string"
],
"title_loc_args": [
"string"
],
"color": "string",
"sound": "string",
"icon": "string",
"tag": "string",
"title_loc_key": "string",
"title": "string",
"body": "string",
"click_action": "string",
"channel_id": "string",
"body_loc_key": "string"
},
"data": {
"message": "priority message"
}
},
"apns": {
"payload": {
"aps": {
"alert": {
"title-loc-args": [
"string"
],
"title-loc-key": "string",
"loc-args": [
"string"
],
"loc-key": "string",
"title": "string",
"body": "string"
},
"category": "string",
"sound": "string"
}
}
},
"webpush": {
"notification": {
"icon": "string",
"tag": "string",
"body": "string",
"title": "string"
},
"data": {
"message": "priority message"
}
},
"data": {
"message": "priority message"
}
}
}
Potenzielle Risiken
-
Die Zuordnung von Legacy zu Version 1 unterstützt weder den Apple Push Notification Service (APNS)
headers
noch diefcm_options
Schlüssel. Wenn Sie diese Felder verwenden möchten, senden Sie eine FCM v1-Payload. -
In einigen Fällen benötigt FCM v1 Nachrichtenkopfzeilen, um stille Benachrichtigungen an Ihre Geräte zu senden. APNs Wenn Sie derzeit stille Benachrichtigungen an Ihre APNs Geräte senden, funktionieren diese mit dem älteren Ansatz nicht. Stattdessen empfehlen wir, die FCM v1-Payload zu verwenden, um unerwartete Probleme zu vermeiden. Eine Liste der APNs Header und wofür sie verwendet werden, findest du unter Kommunizieren mit APNs
im Apple Developer Guide. -
Wenn Sie beim Senden Ihrer Benachrichtigung das
TTL
Amazon SNS SNS-Attribut verwenden, wird es nur imandroid
Feld aktualisiert. Wenn Sie dasTTL
APNS-Attribut festlegen möchten, verwenden Sie die FCM v1-Payload. -
Die
webpush
Schlüsselandroid
apns
, und werden zugeordnet und mit allen bereitgestellten relevanten Schlüsseln gefüllt. Wenn Sie beispielsweise angeben, was ein Schlüssel isttitle
, der von allen drei Plattformen gemeinsam genutzt wird, füllt die FCM-v1-Zuordnung alle drei Plattformen mit dem von Ihnen angegebenen Titel auf. -
Bei einigen von Plattformen gemeinsam genutzten Schlüsseln werden unterschiedliche Werttypen erwartet. Beispielsweise
apns
erwartet derbadge
Schlüssel, an den übergeben wurde, einen Integer-Wert, während derbadge
Schlüssel, an den übergeben wurde, einen String-Wertwebpush
erwartet. In Fällen, in denen Sie denbadge
Schlüssel angeben, füllt die FCM v1-Zuordnung nur den Schlüssel auf, für den Sie einen gültigen Wert angegeben haben.
Ereignisse, die bei der FCM-Zustellung fehlschlagen
Die folgende Tabelle enthält den Amazon SNS SNS-Fehlertyp, der den Fehler-/Statuscodes entspricht, die von Google für FCM v1-Benachrichtigungsanfragen erhalten wurden. Alle beobachteten Fehlercodes, die von der FCM v1-API empfangen wurden, stehen Ihnen zur Verfügung, CloudWatch wenn Sie die Versandstatusprotokollierung für Ihre Anwendung einrichten.
FCM-Fehler-/Statuscode | Amazon SNS SNS-Fehlertyp | Fehlernachricht | Ursache und Abhilfemaßnahme |
---|---|---|---|
|
|
Das dem Endpunkt zugeordnete Plattformtoken ist nicht gültig. |
Das an Ihren Endpunkt angehängte Geräte-Token ist veraltet oder ungültig. Amazon SNS hat Ihren Endpunkt deaktiviert. Aktualisieren Sie den Amazon SNS SNS-Endpunkt auf das neueste Geräte-Token. |
|
|
Der Text der Benachrichtigung ist ungültig. |
Das Geräte-Token oder die Nachrichten-Payload sind möglicherweise ungültig. Stellen Sie sicher, dass Ihre Nachrichten-Payload gültig ist. Wenn die Nachrichten-Payload gültig ist, aktualisieren Sie den Amazon SNS SNS-Endpunkt auf das neueste Geräte-Token. |
|
|
Das dem Endpunkt zugeordnete Plattform-Token ist nicht gültig. |
Die mit dem Geräte-Token verknüpfte Plattformanwendung ist nicht berechtigt, an das Geräte-Token zu senden. Stellen Sie sicher, dass Sie die richtigen FCM-Anmeldeinformationen in Ihrer Amazon SNS-Plattformanwendung verwenden. |
|
|
Die Abhängigkeit ist nicht verfügbar. |
FCM konnte die Anfrage nicht rechtzeitig bearbeiten. Alle von Amazon SNS ausgeführten Wiederholungen sind fehlgeschlagen. Sie können diese Nachrichten in einer Warteschlange (Dead-Letter Queue, DLQ) speichern und sie zu einem späteren Zeitpunkt erneut versenden. |
|
|
Unerwarteter Fehler. Bitte wenden Sie sich an Amazon. Fehlerphrase [Interner Fehler]. |
Beim Versuch, Ihre Anfrage zu bearbeiten, ist auf dem FCM-Server ein Fehler aufgetreten. Alle von Amazon SNS ausgeführten Wiederholungen sind fehlgeschlagen. Sie können diese Nachrichten in einer Warteschlange (Dead-Letter Queue, DLQ) speichern und sie zu einem späteren Zeitpunkt erneut versenden. |
|
|
Die Anmeldeinformationen für die Plattformanwendung sind nicht gültig. |
Eine Nachricht, die an ein iOS-Gerät oder ein Webpush-Gerät gerichtet war, konnte nicht gesendet werden. Stellen Sie sicher, dass Ihre Entwicklungs- und Produktionsanmeldedaten gültig sind. |
|
|
Die Anfrage wurde von [gcm] gedrosselt. |
Ein Nachrichtenratenkontingent, ein Gerätenachrichtenratenkontingent oder ein Themen-Nachrichtenratenkontingent wurde überschritten. Informationen zur Behebung dieses Problems finden Sie ErrorCode |
|
|
Der Text der Benachrichtigung ist ungültig. |
Im |