无法从发布/订阅接收正确的订阅消息

时间:2019-03-18 18:51:50

标签: notifications publish-subscribe subscription

当我从Google Pub / Sub收到实时通知时,我正在尝试从Google检索订阅信息。 Google Pub / Sub以以下格式向我发送订阅令牌:

{"message":{"data":"REALLY LONG STRING","messageId":"468103560112704","message_id":"468103560112704","publishTime":"2019-03-18T17:19:01.444Z","publish_time":"2019-03-18T17:19:01.444Z"},"subscription":"my/pubsub/subscriptions/path"}

我不认为这应该是订阅令牌的格式,当我将其发送到Google以使用HTTP GET命令检索信息时,我什么也没有,没有错误,也没有数据。我认为这只是一般性信息。我认为我做对了所有事情,因为当我期望在测试过程中收到消息时,实际上是在收到消息,而对它们却无能为力。关于如何将这些转换为真实消息的任何想法?

1 个答案:

答案 0 :(得分:0)

此问题花了很长时间才弄清楚,解决方案却非常简单。令我惊讶的是,有两个星期,谷歌没人能为我找到这个问题的答案。事实证明,这是发布/订阅消息的正确格式。我从PubSub接收到的JSON消息与我根据Google Play文档所期望的格式非常不同,并且基本上只有一个看起来像令牌的“数据”字段,但事实并非如此。实际上,我不得不深入研究PubSub文档,并在“数据”字段上找到了一个晦涩的注释-它是base64编码的字符串。如果您对“数据”字段voila!进行解码,则会得到一个JSON字符串,其中包含需要在Google Play中查询订阅信息的订阅PurchaseToken。

因此,在此JSON消息的内部有一个JSON消息,但是它是base64编码的,您只需要对其进行解码即可进入内部的期望宝藏。