1 回答

TA貢獻1836條經驗 獲得超13個贊
我遇到了同樣的問題,這個 repo 中有一個問題我設法從中嘗試了一些解決方案
這個解決方案對我有用
data = {
"title": 'New Notification fired',
"body": 'I just fired a new notification'
}
kwargs = {
"content_available": True,
'extra_kwargs': {"priority": "high", "mutable_content": True, 'notification': data },
}
for device in devices:
if device.type == 'ios':
device.send_message(sound='default', **kwargs)
else:
device.send_message(data=data)
試試這個,我相信它會像我在所有項目中使用的那樣工作
然后用這個增強它
devices.objects.filter(type='ios').send_message(sound='default', **kwargs)
devices.objects.exclude(type='ios').send_message(data=data)
編輯“更多說明”
在 iOS 中,為了提供后臺通知,發送到 firebase 的 JSON 必須有一個鍵“content_available”:true 和其他問題,通知上沒有聲音。這是我的工作 json,帶有 iOS 的聲音和背景通知。
{
"data":{
"key":"...firebaseserverkey..."
},
"content_available" : true,
"notification":{
"sound": "default",
"title": "...",
"body":"..."
},
"to":"...devicetoken..."
}
只需嘗試使用帶有此 URL https://fcm.googleapis.com/fcm/send的郵遞員向該正文發送一個帖子請求, 這將執行 fcm-django 的操作
content_available- 在 iOS 上,使用此字段表示APNs 有效負載中的可用內容。當發送通知或消息并將其設置為 true 時,將喚醒非活動客戶端應用程序,并通過 APNs 作為靜默通知發送消息,而不是通過 FCM 連接服務器。請注意,APN 中的靜默通知不保證會傳遞,并且可能取決于用戶打開低功耗模式、強制退出應用程序等因素。在 Android 上,默認情況下數據消息會喚醒應用程序。在 Chrome 上,目前不支持。
priority(也來自文檔):
設置消息的優先級。有效值為“正?!焙汀案摺薄T?iOS 上,這些對應于 APN 優先級 5 和 10。
默認情況下,通知消息以高優先級發送,數據消息以普通優先級發送。正常優先級可優化客戶端應用程序的電池消耗,除非需要立即交付,否則應使用此優先級。對于具有正常優先級的消息,應用程序可能會以未指定的延遲接收消息。
當以高優先級發送消息時,它會立即發送,并且應用程序可以顯示通知。
如此處所述Firebase 消息傳遞-whats "content_available" :是 的,您也可以閱讀文檔以獲取更多信息
添加回答
舉報