У меня была проблема с отправкой push-уведомления с сервера FCM.Ранее мы использовали APNS для этой цели, мой сервер и клиенты создают такую полезную нагрузку, как эта.И это сработало очень хорошо.
{
"data": {
"image": "https://premierleague-static-files.s3.amazonaws.com/premierleague/photo/2018/09/24/0e228e97-1644-4fcf-bc18-d7223d8f398f/DreamTeamGW6.png",
"link":"https://stackoverflow.com/"
},
"aps": {
"alert": "This is me",
"sound": "default",
"mutable-content": 1
},
"contentId": "123456"
}
Теперь мы переходим к использованию FCM в качестве замены APNS. Как вы знаете, сервер FCM получит сообщение, преобразует его в формат APNS, а затем отправляет в APNS.сервер, сервер APNS отправит преобразованное сообщение клиентам.Но сначала я должен следовать формату его полезной нагрузки следующим образом.
{
"notification": {
"body": "This is me",
"badge": 1,
"sound": "default",
"mutable-content": 1
},
"delay_while_idle": false,
"data": {
"data": {
"image": "https://premierleague-static-files.s3.amazonaws.com/premierleague/photo/2018/09/24/0e228e97-1644-4fcf-bc18-d7223d8f398f/DreamTeamGW6.png",
"link":"https://stackoverflow.com/"
},
"contentId": "123456"
},
"time_to_live": 10
}
И преобразованное сообщение из FCM в APNS было нежелательным.
{
"data": "{\"image\":\"https:\\\/\\\/premierleague-static-files.s3.amazonaws.com\\\/premierleague\\\/photo\\\/2018\\\/09\\\/24\\\/0e228e97-1644-4fcf-bc18-d7223d8f398f\\\/DreamTeamGW6.png\",\"link\":\"https:\\\/\\\/stackoverflow.com/\\\/\"}",
"aps": {
"alert": "This is me",
"sound": "default",
"mutable-content": 1
},
"contentId": "123456"
}
Как видите, значениеключа «data» не был JSONObject, как раньше, он стал строкой.У меня такой вопрос: как я могу заставить сервер FCM понять, что подчиненный «объект данных» внутри основных «данных» является JSONObject, а не строкой, когда он преобразует мое сообщение в полезную нагрузку APNS?
Спасибо!