Titanium版本:3.1.3。
我仍在使用MQTT for Android,一切都运行良好,直到几个星期前(可能直到mqtt on acs被弃用)。但我读到仍然可以使用MQTT(而不是gcm)。根据appcelerator上的另一篇文章,我只需要在tiapp.xml中定义mqtt,但这不起作用。
这是我的tiapp.xml的一部分
<property name="acs-push-type-development" type="string">mqtt</property>
<property name="acs-push-type-production" type="string">mqtt</property>
<property name="acs-push-type" type="string">mqtt</property>
...
<module platform="android" version="2.3.2">ti.cloudpush</module>
<module platform="android" version="2.1.2">ti.map</module>
<module platform="commonjs" version="2.3.7">ti.cloud</module>
这是我从appcelerator日志中得到的:
`"response": {"push_log_details": [
{
"created_at": "2014-05-12T13:02:35.389Z",
"updated_at": "2014-05-12T13:02:31.094Z",
"type": "android",
"android_type": 1,
"app_id": "52724d7cd72ec85152039256",
"channel": "stickin",
"_id": "5370c66be511ea7ab99881d4",
"token": "ND1M2IX8RU8RGJDICW13I9V",
"push_id": "5370c6641316e90db2311567",
"send_status": 2,
"sent_at": "2014-05-12T13:02:30.996Z",
"error_message": "argument cannot be null",
"msg_id": "fa89cfb6-f2d2-4222-b442-a47d2625b419"
},
{
"created_at": "2014-05-12T13:02:35.389Z",
"updated_at": "2014-05-12T13:02:31.094Z",
"type": "android",
"android_type": 1,
"app_id": "52724d7cd72ec85152039256",
"channel": "stickin",
"_id": "5370c66be511ea7ab99881d6",
"token": "ND13ST3OA0MHE079H6EYV8P",
"push_id": "5370c6641316e90db2311567",
"send_status": 2,
"sent_at": "2014-05-12T13:02:30.996Z",
"error_message": "argument cannot be null",
"msg_id": "77fc5c7f-9703-46e5-a433-7be0796421f2"
}, .....
`
“参数不能为空”似乎是一个gcm响应代码。我尝试删除gcm的apiKey和发送者ID并仅保存应用程序包名称(MQTT),但后来我得到错误gcm_apiKey为null。如果我在tiapp.xml中定义mqtt,我认为push不使用gcm?顺便说一句,在iOS上一切正常,但当然没有使用mqtt。
答案 0 :(得分:0)
检查以下
您使用的CloudPush模块版本应低于3.2.0
您应该指定&#39; android&#39;订阅推送通知时的类型。 (在GCM的情况下,你必须使用&#39; gcm&#39;)
然而 Appcelerator已从2014年3月15日起删除了MQTT支持。。 因此,最新的CloudPush模块将不再支持MQTT。 请参见下面的屏幕截图您可以在ACS服务器上看到此信息。您需要将应用程序升级到GCM以解决问题,并且升级到GCM非常简单。我之前已经做过了。我建议您将应用升级到GCM支持。
另请访问Appcelerator博客中的Android Push Notification: Deprecating MQTT in favor of GCM。