您好,能确认的是 push_data 功能是正常的。请问您 push_data 传递的参数是什么呢?
另外,请提供一下发消息时传递的 conv_id ,谢谢

push_data: {"alert": "test", "badge": "Increment", "_profile": "dev"}

conv_id: 5852977467d9a73d949b901a

iOS 问题仍然存在,当离线时,无法收到推送

您好,我看到您 2 月 8 日晚上 21:02:25 在 conversation id 为 5898507161ff4b00684d57b5 有一条实时通信消息,消息 id 为 IgINDDk1SYquMUKBAF2PBg 。其 push_data 为 {"alert": "test", "badge": "Increment", "_profile": "dev"}。该消息有正常触发推送,但该消息的目标用户有两个, deviceToken 分别为 13d66e8959996a57951135d79392e350cabf974a3d5ed98dd0773d6b234fcb60 和 48e050f24a23ce669104dc1974c6a4a3762a67779bc3904d42d828c4e2ec2a0 全部是无效的 token,APNs 有返回明确的拒绝信息,所以推送无法送达。请检查 dev 证书是否和目标收消息设备匹配,不匹配时是不可能收到消息的。

测试时可以在控制台 -> 消息 -> 在线发送下指定 dev 证书去给目标设备发推送。

我在控制台并没有查询到 48e050f24a23ce669104dc1974c6a4a3762a67779bc3904d42d828c4e2ec2a0 的 deviceToken

我在控制台手动发送推送,机器是可以收到推送的,请确认 API 是否使用了 dev 证书去发送推送

抱歉,是我拷贝的时候少了一个 a 正确的如下:
48e050f24a23ce669104dc1974c6a4a3762a67779abc3904d42d828c4e2ec2a0

确认是使用 dev 证书发出的,且确认 APNs 回复了 INVLAID TOKEN,前一个 13 开头的 token 是 BadDeviceToken 这两种情况下是不可能收到消息的。如果您那里在控制台测试能正确收到消息,请将目标设备的 deviceToken 信息以及这条收到的消息在推送记录中的推送 id 贴在这里,我来看原因。

推送 id: UGjQNpdNRCr8RHPW
deviceToken: 13d66e8959996a57951135d79392e350cabf974a3d5ed98dd0773d6b234fcb60

是我搞错了,用的还是 prod 证书发的消息,原因是我这里收到的 push_data 是这样:
{:alert {:alert "test", :badge "Increment", :_profile "dev"}}

是否能确认一下请求中 push_data 是否有多一层 alert 可以去掉外层的 alert 只留内部的 {:alert "test", :badge "Increment", :profile "dev"},另一个是需要确认 push data 内的 " 有没有做转义,是不是形如 "{\"alert\": \"test\", \"badge\" : \"Increment\", \"profile\": \"dev\"}" 这个样子,因为原始的请求我这里看不到,所以我不确认具体是哪一种情况。

或者可以将请求代码贴在这里我来查看。

搞定了,非常感谢 clap laughing

原因是 push_data 内的 " 没有做转义

以前的格式是这样

"push_data": {"alert": "test", "badge": "Increment", "_profile": "dev"}

正确的格式应该是这样

"push_data": "{\"alert\": \"test\", \"badge\": \"Increment\", \"_profile\": \"dev\"}"

我们文档上没有说明清楚,我在做修改,尽快上线。