app测试的时候好好的,上线之后经常推送延迟或者根本收不到

ios
标签: #<Tag:0x00007fb85fe679d0>

#2

1、收不到消息的问题:请提供推送的消息的msgid(MessageID)和收不到这条消息的设备的registrationID(在客户端获取,无论以何种方式做推送,该信息必须提供)

为什么要求一定要提供 registrationID 给我,因为你很有可能别名下有很多个目标,别名设置失败,推送的AppKey和设备对应的AppKey不一致等等,只有通过registrationID才能确确实实的查询到具体的设备收不到的原因!

这两个信息如何获取: 极光产品相关提问简要说明

2、有延迟是正常可能出现的情况

  • 一般是 Apple服务器由于处理数据多而有延迟,Apple服务器对于apns消息的下发不保证 100% 的送达

  • 我们在iOS的apns通知上用的是Apple原生的,以便于在杀死时也能收到消息,同时提供在前台才能收到的应用内消息,直接走极光服务器

  • 极光服务器在高峰期的处理会有延迟


(大腿qiao) #4

msgid 51791397671768672 registrationID:121c83f7601b95823d8


#5

消息发送时间2017-12-14 17:48:10

设备注册时间 2017-12-18 11:22:05

怎么可能收的到???


(大腿qiao) #7

registrationID不是只能在控制台看到吗?我拿不到那条推送的设备的registrationID 只能调试打印了。。。。。。


#8

registrationID 只能在客户端获取,线上的需要你们先获取后,再上传给你自己的服务器保存,这样线上的才拿得到ID .
我这里查询是必须得这个 ID 才知道具体情况的


(大腿qiao) #9

今天遇到了收不到的情况,大概就是登录之后一段时间是可以收到,但一两天之后再推送就收不到了。。这是第一天登录后推送并成功收到的Message ID:51791397736914639 这个是时间久了之后收不到的推送的Message ID:65302197312458281 同一台设备 这样可以查出原因吗


#10

你这个之前成功的ID后来不成功的ID是 regid : 101d855909787bc18c0

不成功的原因是环境不一致了

你前后推送的都是生产的消息,但是后一条消息推送时,你这个 App 的环境改变了,应该是

你在 apsForProduction:isProduction 初始化的这里填的值是false 导致的


(大腿qiao) #11

嗯嗯 这个是我弄错了 不好意思。。还有个问题想问一下 就是我一个账号对应一个别名,但是我在测试的时候向一个别名推送通知,推送历史现实有3个目标成功3是什么情况?


#12

iOS 卸载重装,会产生新的ID,会导致目标数增加,具体的阅读:


(大腿qiao) #13

哦哦明白了,谢谢。哎 贼难受

我们公司做支付app的,这周上了新版本又出现了支付成功收不到推送到情况,很难受,测试的时候好好的,刚安装登录推送也是很迅速,但是过一段时间就会出现收不到的情况。

今天又出现一例,之前也没把registrationID上传到我们后台,现在也复现不了这种情况,主管让我想办法。。。。我现在是真的郁闷,收不到也就算了,这种情况真的难受。


#14

这个就需要拿具体的信息查才知道了,如果用的别名需要考虑别名在当时是否是成功设置的。

以及 apns 系统级别的通知 在Apple 服务器那边,是不保证 100% 送达的,有个网络波动什么的,消息没发下去就没了。

像你们这种应用内的提醒(用户要支付肯定处于 App前台),可以用我们JPush的Message(应用内消息)去实现,会有保证一些。我们会保留 5 条离线消息等待上线后下发的。

可以阅读:


(大腿qiao) #15

我们也有二维码支付 不一定要前台。。Message ID 65302197360989204
registrationID 1517bfd3f7f8a032543 帮我查一下吧 我在测生产环境的推送 收不到


#16

我们这里显示的是成功的,代表已经成功发给了 Apple 服务器

你如果确认没收到,是Apple服务器没有下发,几个原因:
1、网络异常,无法连接到Apple服务器(此处与你是否手机可以正常上网是不一样的),Apple服务器对断连期间 的推送,只会保留1条,其他会丢弃。 可尝试切换网络
2、手机-通知栏提醒-提醒样式
3、调用了反注册代码 [[UIApplication sharedApplication] unregisterForRemoteNotifications];或者
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]
4、注册apns代码中有提供类型选择:
entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound; 你没有写上alert
5、iOS10以下,处于前台,收到消息是不会展示的,log会打印,iOS10以上才有提供接口,在前台展示通知
6、push Notification没开
7、App端配置的通配证书
8、高峰期Apple下发有延迟
9、检查清除角标的方法是否影响了消息的展示,角标清除,通知栏信息就没了。
10、不要特别频繁的快速的间隔很小的推送消息,再重测一下看看。

另外,现在新增了送达统计

iOS的送达统计是新增的一个统计项,需要iOS10,且集成新版SDK(3.0.7及以上),且你实现该功能了才有

集成文档: https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/#_11
API文档: https://docs.jiguang.cn/jpush/client/iOS/ios_api/#notification-service-extension
此前,你们看成功数就行了


(大腿qiao) #17

调用这个会影响推送??


#18

这个是反注册的,相当于关掉了推送。


(大腿qiao) #19

那如果必须调用这个方法怎么办。。。


#20

为什么?你们要实现推送,为什么要调反注册的代码,在什么场景下满足什么需求?


(大腿qiao) #21

这个是跳转到苹果的设置页面的方法啊。。。。


(大腿qiao) #22

额 我应该没说错吧。。。


#23
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]

是可以进入应用设置页面使用户可以手动变更是否允许通知的设置。不手动操作不会直接关掉推送,漏了一句话,之前没注意区分,单单调这个方法没问题的。

[quote=“Lris, post:16, topic:23457”]
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
[/quote]这个是反注册的,在代码层面进行关掉推送的。

你检查下其他的地方