2017-01-23 10 views
1

Я переношу Parse в Firebase, и у меня возникают проблемы с расширенным уведомлением push.Обновления с помощью push-оповещений на основе Firebase

Разбор данных (IOS сторона) была как:

{"ast": 
    {"alert": { 
    {"body": "body_test", 
    "title": "title_test", 
    "description": "description", 
    "endpoint-proposal": "https://.." 
    "launch-image": "https://..." 
    }, 
    "sound": "chime", 
    ... 
} 

Работа с Firebase API аст тег является [ 'уведомление'] [ 'тело'].

Если я пошлю

['notification']['body'] = 'Hello' 

Он отлично работает и генерировать следующий импульс:

{"ast": 
    {"alert": "Hello"} 
}... 

Итак, проблема, мне нужно отправить словарь в этой метки (предупреждение) и I не может этого сделать, потому что firebase задает значение как строку.

Пример в питоне:

alert = dict() 
alert['title'] = 'title' 
alert['description'] = 'description' 
alert['endpoint-proposal'] = 'https://..' 
alert['launch-image'] = 'https://..' 

fcm_payload['notification']['body'] = alert 

send_push() 

И в стороне IOS я получаю:

[AnyHashable("gcm.message_id"): 0:123456789, 
AnyHashable("aps"): { 
    alert = "{\"body\": \"body\", 
       \"launch-image\": \"https://...\", 
       \"endpoint-proposal\": \"https://...\", 
       \"description\": \"description\", 
       \"title\": \"title\"}"; 
}] 

Всегда в виде строки: S

Есть ли способ, чтобы отправить это уведомление в Словаре?

ответ

2

Параметр notificationbody всегда будет обрабатываться FCM как String. Это просто поведение. Что вы должны сделать, это сделать использование data полезной нагрузки и поместить в пользовательских пар ключ-значение:

КСН, если сообщение посылается через APNS, она представляет собой поля данных. Если он отправлен через сервер соединения FCM, он будет представлен в качестве ключевого словаря значений в Приложение AppDelegate: didReceiveRemoteNotification:.

Подробнее см. В этом Receiving Messages in iOS Док. Я думаю, что для вашего случая вам просто нужно использовать параметры notification и data вместе в вашей полезной нагрузке.

0

json.loads() должен получить диктофон.

+0

Уже протестировано. Независимо от того, он всегда устанавливает значение как строку. – giopromolla