注册

iOS离线消息及推送的一些问题

这两天在测试环信SDK的时候发现几个iOS离线消息及推送相关的问题,请帮忙解答下。谢谢。
 
1、用户离线的情况下,我们的服务后台调用环信的API创建了群聊,并把用户添加进群聊,向群聊发送了系统消息。iOS的用户这时启动app登录环信,但发现有很大概率登录环信后无法立刻接收到该群聊的消息。无论是自动登录还是调用接口重新登录都一样。用户自己在群里边发送消息也不能触发环信后台把之前的群聊消息发送到客户端上。只有群聊里边的其他用户发送消息时,环信后台才把之前的消息加上新消息一并发给用户。
 
2、我们的服务后台在创建群聊后会发送几条消息给用户。但是在iOS上看,用户离线收到的APNs推送数量少于我们后台推送的消息数量。而且丢失的消息还比较随机。
 
3、当其他用户向iOS离线用户发送大量的消息时,app的角标数字会出现来回跳变。在还在接收推送消息的时候,用户启动app登录,并且在app内接收完所有消息后将app kill掉,过一会发现环信又继续推送已经接收过的消息。再次启动app没发现接收到任何新消息。这个问题是概率出现的,不过这两天测试时都出现过。不知道环信后台是怎么处理这些推送消息的?是所有消息并发向APNs推送,还是逐条按顺序推送的?
已邀请:
1.首先,苹果不保证所有远程推送的到达率。这个可以看苹果官方文档。
Because the delivery of remote notifications is not guaranteed, never include sensitive data or data that can be retrieved by other means in your payload.
2.我们只保证,把离线消息执行远程推送,发给苹果服务器。苹果服务器是否能够百分之百把所有推送送达到指定移动端,这个根据苹果的策略,当 APNs 向你发送了多条推送,你的设备在 APNs 那里下线了,这时 APNs 到你的手机的链路上有多条任务堆积,APNs 的处理方式是,只保留最后一条消息推送给你,然后告知你推送数。那么其他消息会被APNs丢弃。
3.我们保证的是离线消息,当用户重新登录时,可以都接收到。
4. 如果需要查询离线消息(前提接收方已绑定deviceToken)是否成功,需要提供离线消息的messageId,接收方环信id
5.我们的推送角标,是接收方的在服务端的离线消息数。
https://developer.apple.com/library/prerelease/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW1
这是官方文档
 
谢谢你对于推送部分的答复。请问能继续回答一下我的第一个问题么?
对于推送部分,我想针对问题3再请教下。从我测试的结果来看上线接收完消息后还在持续推送的不止一两条消息。按道理,如果这部分消息是之前积压在APNs上的话,那么Apple给我推送的应该是“您有xx条yyy app的消息”类似的通知。这个我在上线收消息前确实有见到过。但是我在上线收完消息之后再收到的无效离线推送却是每条都独立的消息,大概十来条间断的在1、2分钟内推送过来。从这个现象看,感觉就是环信的后台在用户上线后没有在给APNs发送的离线推送缓存中去掉该用户的消息一样。用户上线了,but anyway 环信还是将消息推给APNs了。这个纯属我个人猜测,不知道对错与否。

要回复问题请先登录注册