最近研究手机 APP,因为不懂原生开发,选择了 expo.io 来处理,后面丰富的库给开发提供了帮助。还有很多贴心的小组件。
碰到一个推送的问题,expo 需要我们第三方服务器,里面会有用户的设备 token 跟用户 id,来推送不同信息到他们 expo 的服务器。expo 的服务器负责信息分发到 firebase 和 APNs 服务。 我们信息通过后端到他们服务器,会有一个叫做 push tikect 的东西,但是他的返回不会包括我们用户 id (我们没有办法在推送信息中添加), 而是他们生成的 id 。https://docs.expo.io/push-notifications/sending-notifications/ 官方文档 然后根据这个 tikect 集合来轮训 消息是否到达 firebase 或者 APNs 服务。
因为他们的结果返回只包括他们自己的 id,没有办法知道,这个 id 或者这条信息跟本地设备的关系。支付宝回调会返回支付宝的处理 id 跟我们自己加入的 id 。 不知道有没有老哥做过这样的业务。 根据文档提到的 “The requests above will respond with a JSON object with two optional fields, data and errors. data will contain an array of push tickets in the same order in which the messages were sent (or one push ticket object, if you send a single message to a single recipient).” 返回的 数据,跟推送的数据顺序一样,难道要自己重写个算法来确定 消息推送是否成功么?
Push tickets 返回的例子,id 是 expo 生成的。。
{
"data": [
{ "status": "ok", "id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" },
{ "status": "ok", "id": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" },
{ "status": "ok", "id": "ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ" },
{ "status": "ok", "id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" }
]
}
我的情景是,如果信息没有送达,就不会继续推送。