在关机后给 iPhone 推一条 APNs,再开机却没有收到; 微信是可以的。 苹果文档上这么写的:If APNs attempts to deliver a notification but the device is offline, the notification is stored for a limited period of time, and delivered to the device when it becomes available. 有知道的么?望指教
1
jiangzhuo 2017-05-09 10:54:35 +08:00
苹果会隔段时间重试,重试间隔一次比一次长,最后就不试了。反正苹果没说推送策略,也可能在 1s 内重试 1 次就不重试了,反正苹果没有许诺保证什么。
|
3
paradoxs 2017-05-09 10:59:01 +08:00
apns 里面加一个 token 手机收到后用接口传一下 代表收到了 不传的话 XX 时间内重发
|
5
paradoxs 2017-05-09 11:06:40 +08:00
@binauyang
{ "aps" : { "alert" : "message" }, "UserInfo" : [ "key", "value" ] } userinfo 里面加个 key, 作为这一次推送的 id, 在手机收到推送后, 解开 userinfo,把 key 拿出来, 然后往接口传一下, 代表这次推送完成了. |
6
binauyang OP @paradoxs 但是如果不打开客户端的话,客户端一直是被杀死的状态,也就无法去做解析 userinfo 这样的操作了呀。
|
8
binauyang OP @paradoxs 那这样不就会重复给客户端推送了么...你的意思我了解,就是客户端收到推送后告诉后台“我收到了”,如果在规定时间内后台没有收到客户端的“收到回复”,则重发;但是客户端其实一直被杀死的状态,所以无论是否收到推送都无法告知后台...
|
9
paradoxs 2017-05-09 11:18:15 +08:00
@binauyang 不会重复推送的啊. deviceToken 和账号的登录状态是绑定的. 你是给账号推, 又不是给客户端推.
|
11
mornlight 2017-05-09 11:26:00 +08:00 1
@paradoxs #9 楼主说的事情和客户端无关。
这个问题我不能给出确定的答案,Remove notification 有 Priority 和 Expiration date 这两个标记,也许有关。 |
13
binauyang OP 我用的是 pushy( https://github.com/relayrides/pushy)
SimpleApnsPushNotification 的构造方法中有个参数是 Date invalidationTime,意义是:the time at which Apple's servers should stop trying to deliver this message. 即该条推送的有效期,如果不设置的话,只会尝试投递一次。 |
14
13036101641 2017-05-10 09:39:52 +08:00
你这个 expire date 设置了多久?
|
15
binauyang OP @13036101641 #14 看你自己啊,我设置了一天,如果一天都不开机,就不给他推了 2333
|