我们在 App Store 上有一个基于 Swift 的应用程序,其中包括一个团队信使。
我们在一些后台推送通知的可传递性方面遇到问题。
如果我们在 iOS 和 Android 设备上使用相同的帐户登录,则所有推送通知都会显示在 Android 设备上,而只有部分推送通知会显示在 iOS 设备上。
基于此,该问题似乎与后端无关。通过 Swift 代码,一切似乎都很好——我们也收到了一些推送通知。
设置:
- 我们通过 APNS 直接从后端 (node.js) 向 iOS 设备发送推送通知。我们不使用任何介于两者之间的提供程序(例如 Pusher)。
问题描述:
- 在 3 台设备上进行测试(电池充满电、蓝牙关闭、请勿打扰禁用、未安装可能阻止推送通知的应用程序等)。
- 设备 A:iOS 10.3.3 上的 iPhone5 - 7GB 可用空间。
- 设备 B:iOS 10.3.3 上的 iPhone5 - 9GB 可用空间。
- 设备 C:iOS11 上的 iPhone5S。
在慢速 wifi 连接上进行测试(即使速度测试显示下载速度为 22Mbps):
- 所有 3 台设备上的所有 10 个字符的推送通知都通过了。
- +20 个字符的推送通知仅显示在设备 B + C 上。
- +30 个字符以上,设备 B + C 上没有收到推送通知。
测试更快的 wifi 连接:
- 使用相同的设备 A 和 B。不包括设备 C。
- 在设备 A + B 上接收并显示最多 497 个字符的推送通知。
- 两个设备中的任何一个都不会收到超过 509 个字符的推送通知。
- 未收到“509 字符消息”后立即发送的短消息(少于 10 个字符) --> 好像通知被暂时屏蔽了。大约一分钟后,会收到并再次显示简短的推送通知(例如 10 个字符)。所有较短的消息都会被接收并显示,直到我们再次发送一条长消息,从而阻止推送通知的传递。
再次测试较慢的 wifi 连接 - 现在体验与较快连接相同的行为。最多显示大约 500 个字符的推送通知,而字符较多的推送通知无法通过,并且似乎会阻止随后发送的较小推送通知的传递。
有效负载大小不应该是问题:由于我们在设备 A 上最初在慢速 wifi 连接上没有收到超过 +20 个字符的推送通知,但能够在更快的 wifi 连接上在同一设备上接收到 497 个字符的推送通知,我想我们应该可以排除这个问题与payload的大小有关。你同意吗?
难道这三个参数的组合会影响推送通知是否被传递?
- 消息长度 + wifi 连接速度 + 可用空间
有关如何解决此问题以确保传递所有推送通知并避免我们遇到的临时阻塞/未传递的任何建议?
提前致谢,
安德烈亚斯