你可能已经知道了,我们最近放出了 V16 BETA 版本的安卓软电话,我们在上面添加了几个重大功能,其中就包括视频通话!可以点击 这里 了解更多并下载测试。
我们在 Play 商店的评价都很不错,但是有一个问题导致我们收到了大量的 1 星评价:推送通知延迟或者根本就没有推送。
因此,我们决定深入研究 Android 的推送机制,并提供一系列支持来解决此问题。
Android 的推送非常棒而且很稳定。当推送没有收到或者延迟时,有可能是以下几个原因:
- Google Firebase 的问题 – Firebase 服务器可能挂了,点击 这里 查看状态。
- 软件的 bug – 在 Google Play 商店报告问题。
- 用户设置问题 – 用户在安卓软电话的时候可能做了一些电池优化导致这个问题。
- 手机制造商的兼容性 – 与 iOS 不同,Android 厂商对于系统有各个层度的定制,有可能是某些行为造成了推送延迟。
本文档主要介绍如何排除下面两个问题:用户设置和厂商兼容问题。
Android 网络问题
当推送失败时,我们注意到 Firebase 服务器的 PUSH 注册是激活状态,但是终端设备没有收到推送。这个时候应该检查是否只有 3CX 软电话出现了该问题,其他的 app 推送有没有受到影响。
如果没有 app 可以受到推送,那么这个问题影响了所有的 app。尝试将手机设置为飞行模式,重启WiFi 或移动数据,实在不行可以试试重启手机。以上操作都是对 Android 网络层面的软重启或者硬重启。如果 3CX 软电话是唯一受到影响的 app,您还可以尝试重装该软件。
电池优化因素
即使谷歌在 Android 中内置了电池优化应用,还是有不少厂家会创建他们自己的电池优化应用。这些应用会尽量降低手机的电量消耗,但是这也会导致很多 app 不稳定。我们建议尽可能保留谷歌的电池优化,关闭其他第三方的这些程序。
后台数据限制
允许一个软件在后台开启 使用数据,意味着即使手机在息屏状态也可以接受数据。比如后台数据同步,app 会随时同步最新的状态和数据。这可能会带来每月的移动数据费用。
为了解决这个问题,Android 采用了后台数据限制,这限制了 app 在设备空闲时利用移动数据。 此限制可能会影响来电的 3CX 通知,因为当有来电时,手机需要处理传入的 PUSH 请求以唤醒应用。 如果数据受到限制,通知将受到限制,应用程序将不会被唤醒。
你可以通过以下路径将 3CX 软电话从后台数据限制名单中移除:“Settings” > “Apps & Notifications” > “3CX” > “Mobile Data” > “Background Restriction” or “Allow background data usage”。
是否开启流量限制
流量限制功能是当手机没有连接 WiFi 时,限制手机通过数据上网的功能,以节省资费。该功能可以帮您节省费用,也有可能让你错过推送。
在 “Settings” > “Connections” > “Data usage” 里可以关闭 “Data saver” 功能。
另外,你也可以开启 “Data saver” 功能,却让 3CX 不受流量的限制。功能在 “Settings” > “Apps & Notifications” > “3CX” > “Mobile Data” > “Allow app while Data saver on”。
睡眠模式优化
放在最后却不是最重要的是 “睡眠模式”,它很有意思。从 Android 6.0(API level 23) 开始有这个功能,可以在设备长时间不使用时延迟应用程序的 CPU 和网络活动,从而减少电池消耗。当您的手机未关闭屏幕时,这会阻止应用程序不必要地进行同步。睡眠是空闲设备的新定义,即它使设备处于暂停的轻睡状态以让设备休息。 这是一项智能 AI 软件优化,可以延长电池寿命并停用不经常使用的后台应用程序。
这也意味着通知和被推迟或批量处理,以便稍后在设备唤醒时进行处理。 这解释了为什么 3CX 推送通知可能迟到或根本没有,即使 3CX 软电话以高优先级发送这些通知以覆盖睡眠模式。 如果推送消息迟到,则呼叫就会迟到。 接听延迟电话将导致幽灵呼叫 – 没有音频的呼叫。 此外,许多设备可能不会足够快地进入和退出睡眠,因此,Android 推送系统和 Push 通知会受到影响。
如果您的通知迟到或者根本没有到达,那么检查是否涉及睡眠的良好测试是将充电器插入您的设备,等待几秒钟,直到您确认设备正在充电然后再进行充电时呼叫。 如果呼叫成功并且 Push 通过,您就知道是睡眠模式的原因,因为充电是立即强制设备退出睡眠模式的唯一操作。 移动设备或打开屏幕可能无法完全退出打盹。
您可以通过进入“设置” > “应用和通知” > “3CX” > “优化电池使用情况”中的电池优化模块,从睡眠模式中排除应用,然后关闭 3CX 旁边的滑块。 这将保证无论睡眠模式是否开启,都将提供 3CX 从设备请求的任何内容。