0

我有一個問題。對於iOS,我們可以在有效負載中同時發送「數據」和「通知」嗎? 「被髮送到GCM.When我加入了兩個,我沒有得到任何通知。我的問題是,如果我想在iOS和Android設備上更新什麼應該是有效載荷?iOS中的GCM(Google Cloud Messaging)(通知和數據負載)

電流負載:

{ 
    "to":"/topics/testTopic", 
    "content_available":true, 
    "priority":"high", 
    "notification": { 
        "body":"Test Message", 
        "title":"test" 
        }, 
    "data": { 
        "title": "Title.D Mixed JSON", 
        "body": "Content.D Mixed JSON", 
       "productId" : "1" 
      } 
    } 

回答

1

你的有效載荷是好的,沒有任何理由,你不應該得到它。但是這兩者之間有一些差異。 "notification""data"之間 差額記錄的官方文件中:當你想GCM處理顯示代表您的客戶端應用程序的通知https://developers.google.com/cloud-messaging/concept-options

使用通知。當您希望您的應用程序來處理顯示或在Android客戶端應用程序處理的消息,或者如果你想將消息發送到iOS設備時,有一個直接的GCM連接

所以,你混合使用數據電文要發送的消息很重要,以瞭解您的應用是在後臺還是在前臺:

在後臺應用程序收到通知托盤中的通知有效內容時,只處理數據有效內容當用戶點擊通知時。 當處於前臺時,您的應用程序會收到一個包含兩種可用有效負載的包。

未收到推送通知的另一個原因是您尚未分配送貨優先權。有兩個選項normalhigh

高優先級。 GCM試圖立即將高優先級的消息,讓GCM服務喚醒一個沉睡的設備時,可能並打開網絡連接到你的應用服務器

普通

普通優先級。這是消息傳遞的默認優先級。普通優先級消息不會睡眠設備上打開的網絡連接,以及它們的交付可能會延遲,以節省電池

嘗試在有效載荷"notification"前右側設置"priority" : "high"

+0

這只是一個示例有效載荷之後,我已經用我正在使用的實際有效載荷編輯了問題。請檢查它。 – abhi1992

+0

爲什麼你的「數據」在「通知」內? 「通知」具有此處描述的參數https://developers.google。com/cloud-messaging/http-server-ref和「data」不是其中之一。您必須在「通知」之外使用「數據」才能訪問它。 – Flipper

+0

數據是在通知之外。看到沒有數據的有效載荷語法json字符串將工作正常。但是當它是數據單獨或數據和通知時,它將不起作用。 – abhi1992

1

不允許複製「通知」和「數據」的內容,當用戶點擊通知時,您可以讀取「通知」內的數據,以下JSON應與您一起工作。

{ 
    "to":"/topics/testTopic", 
    "content_available":true, 
    "priority":"high", 
    "notification": { 
      "body":"Test Message", 
      "title":"test" 
      }, 
    "data": { 
      "productId" : "1" 
      } 
} 
相關問題