【发布时间】:2015-05-25 09:13:24
【问题描述】:
我正在尝试用 python 编写一个简单的 XMPP 推送通知 3rd 方服务器,并且我正在使用 SleekXMPP。
当我的应用发送上游消息时,我会收到类似
的消息<message id="3" type="error" to="123456789@gcm.googleapis.com/ABC">
<gcm xmlns="google:mobile:data">
{ Json Arrays }
</gcm>
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
InvalidJson: JSON_PARSING_ERROR : Missing Required Field: message_id\n
</text>
</error>
</message>
但是阅读 SleekXMPP 的文档对于理解我应该使用什么来获取此标签 <gcm xmlns="google:mobile:data"> 的内容并将其更改为 json 以便我可以进一步使用它并没有太大帮助。
我的理解是我必须实现我的自定义节模板,但是我写的,它总是返回空:
class GCMMessage(ElementBase):
name = 'gcm'
namespace = 'google:mobile:data'
plugin_attrib = 'gcm'
interfaces = {'to', 'message_id',
'data', 'time_to_live',
'delay_if_idle',
'delivery_receipt_requested'
}
sub_interfaces = interfaces
结果是:
GCMMessage(xml=msg.find('{google:mobile:data}gcm')).keys()
返回
['to', 'time_to_live', 'delay_if_idle', 'delivery_receipt_requested', 'data', 'message_id', u'lang']
而这些键的所有值都是 ""。
GCMMesage(xml=msg).get('to) = None
我什至尝试使用:
GCMMessage(xml=msg.xml.getchildren()[0])
但话又说回来,keys() 返回我的推送通知键,但 get 返回 None。
**我应该如何使用定义我的自定义节以及我应该如何使用它们?由于它没有命名空间,我怎样才能得到错误节? **
非常感谢任何帮助。
提前致谢。
【问题讨论】:
标签: android python push-notification xmpp google-cloud-messaging