未收到GCM CCS的递送回执通知

7

我正在尝试从CCS获取收据receipt,但是我无法成功。

这是我的操作:

我有一个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
不是这样的,为了向设备发送通知,您必须使用您的 GCM 用户令牌将其注册 :) - Rafael Garcia
2个回答

1

感谢您在iOS上尝试使用GCM。 不幸的是,目前iOS上无法显示通知的交付回执。


嗨@TheWonderBird,谢谢您的回复。您介意告诉我们这些信息是从哪里获取的吗? - Rafael Garcia
1
嗨@TheWonderBird,你能否在文档(或其他地方)中指出相关信息吗?我找不到任何关于这个的内容,希望能够得到一些参考。谢谢。 - Rafael Garcia

0

不确定您是在Android还是iOS上尝试此操作,因为它在我的Android上可以工作,但在iOS上并不总是有效。

iOS的交付收据与请求中的notification参数不兼容。我能够使其适用于普通的data消息,即使用有效载荷。

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

但是,如果我将notification负载添加到上面的内容中,它就不起作用了。

我会认为,由于notification负载消息需要通过APNS发送,因此他们无法知道消息是否已经被送达,因为APNS不返回任何结果。

对于没有notification消息,由于只有当应用程序在前台时才接收到消息,因此他们将能够验证消息是否已传递或未传递。


我正在尝试在iOS上实现这个。我在这里尝试过,但它不起作用。顺便说一下,我正在尝试使用XMPP连接来完成这个。 - Rafael Garcia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接