2015-07-03 39 views
7

我試圖從CCS獲得receipt,但我無法做到。不接收來自GCM CCS的delivery_receipt_notification

下面是我在做什麼:

我有一個go腳本:

package main 

import (
    "fmt" 
    "github.com/brunohenrique/go-gcm/ccs" 
) 

var (
    user = struct { 
     gcmToken string 
    }{"mg0xe56LfjE:APA91bFHtHVQt85iNgyzTeDowovIGPAD_NbBjURppy1LgV9_oaM2R_9zn1fDXNuEeOoALTj7F8e8JmNPI3Md-CbbgTxdvxVrONFVfGz2dOujsaGkZjEhJcBH8sWvRNYZNIp2j2QliAEX"} 
) 


func main() { 
    con := connect() 


    // Sends a message 
    con.Send(&ccs.OutMsg{ 
     To: user.gcmToken, 
     ID: "m-1366082849205", 
     Notification: map[string]interface{}{ 
      "title": "Hey!", 
      "body": "There", 
      "sound": "default", 
     }, 
     TimeToLive: 600, 
     DeliveryReceiptRequested: true, 
     DelayWhileIdle: true, 
    }) 


    // Listen to messages 
    for { 
     m, err := con.Receive() 

     if err != nil { 
      fmt.Printf(">>> Err: %+v \n", err) 
     } 

     go func(m *ccs.InMsg) { 
      fmt.Printf(">>> InMsg: %+v \n", m) 
     }(m) 
    } 
} 

一切似乎好,當我運行該腳本,但沒有收到消息發回:

enter image description here

這就是我在收到通知時所做的事情:

enter image description here

我做錯了什麼或缺少什麼?

+1

呃,那個標記不應該被祕密......是嗎? – Jonathan

+0

不要這麼想,爲了向設備發送通知,您必須使用您的gcm用戶令牌註冊它:) –

回答

0

不確定您是在Android還是iOS上嘗試此操作,因爲它在Android上適用於我,但它並不總是適用於iOS。

iOS的送達回執無法與請求中的notification參數一起使用。我能得到它的純data消息,即與工作負載

{ 
    "to" : <reg id>, 
    "data" : { 
    "hello" : "world", 
    "id" : 123 
    } 
} 

但是,如果我加入了notification有效載荷上面一個也沒有工作。

我會假設因爲需要通過APNS發送notification有效負載消息,所以無法知道消息是否已傳遞,因爲APNS不會返回任何結果。

對於notification消息,因爲只有當應用處於前臺時纔會收到消息,因此他們將能夠驗證消息是否已發送。

+0

我試圖在iOS上實現這一點。我在這裏嘗試過,但它不起作用。順便說一下,我正在嘗試使用XMPP連接。 –

1

感謝您在iOS上嘗試GCM。 不幸的是,遞送收據目前不適用於iOS上的顯示通知。

+0

嗨@TheWonderBird,非常感謝您的回覆。你介意讓我們知道你從哪裏得到這些信息? –

+1

嗨@TheWonderBird,請您在文檔(或其他地方)提供有關該信息的信息嗎?我無法找到任何有關這方面的信息,並希望有一些參考。謝謝。 –