2017-01-23 119 views
1

我正在將解析遷移到Firebase,並且遇到增強推送通知問題。解析爲Firebase增強推送通知

解析數據(iOS的側)是象:

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

與火力地堡API工作的AST標籤是[ '通知'] [ '體']

如果我送

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

它完美並生成以下推:

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

所以,問題就在這裏,我要送一本字典在標籤(警報)和我不能這樣做,因爲firebase將該值設置爲字符串。

例在python:

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有效載荷,並在您的自定義鍵 - 值對:

在iOS上,如果通過APNS發送消息,其表示自定義數據字段。如果通過FCM連接服務器發送,則會在AppDelegate應用程序中顯示爲鍵值字典:didReceiveRemoteNotification:

更多細節可以在這Receiving Messages in iOS文檔中看到。我認爲對於您的情況,您只需在您的有效負載中一起使用notificationdata參數。

0

json.loads()應該給你一個字典。

+0

已經過測試。無論如何,它始終將值設置爲字符串。 – giopromolla