iOS 通知声音中断
iOS notification sound cut off
我有一个使用 Swift 4 在 iOS 10+ 上发布本地通知的应用程序。在我的测试和个人设备上一切正常,但是我有一些用户报告自定义通知声音一秒钟后就被切断了。
我不知道 iOS API 中的任何设置甚至可以让我控制它或它如何发生。有问题的用户已尝试删除并重新安装该应用程序(以防出现某种损坏的声音文件),但这似乎无济于事。
设备解锁后,声音播放正常。这仅在设备锁定时发生。
任何想法表示赞赏!
对我来说,这个问题是由网络竞争条件引起的。
有问题的应用程序在服务器向设备发送 VOIP APNs 通知的情况下工作,这实际上会唤醒应用程序(与不会唤醒应用程序的标准 APNs 通知相反)。然后,该应用程序将 post 收到信息的本地通知。当用户打开应用程序时,它会清除应用程序发出的所有本地通知post。
我不确定这是什么时候开始发生的,但事实证明,当应用程序被远程通知唤醒时,在我的初始视图中是 运行 ViewDidAppear
函数控制器,即使该应用程序在后台 运行 并且未启动或在屏幕上不可见。
此函数中的代码负责清除通知,但只有在它与服务器核实以确保允许这样做之后。
因此,我们得到了一个奇怪的延迟(由于网络延迟),这将导致应用程序在通知出现后立即清除它们。
这只是有时会发生,因为通知总是安排在未来 1 秒后,所以如果网络调用发生得足够快,它就没有要清除的通知。
我的解决方案是将清除通知的逻辑放在 DidBecomeActive
处理程序而不是 ViewDidAppear
中。这立即解决了问题。
我有一个使用 Swift 4 在 iOS 10+ 上发布本地通知的应用程序。在我的测试和个人设备上一切正常,但是我有一些用户报告自定义通知声音一秒钟后就被切断了。
我不知道 iOS API 中的任何设置甚至可以让我控制它或它如何发生。有问题的用户已尝试删除并重新安装该应用程序(以防出现某种损坏的声音文件),但这似乎无济于事。
设备解锁后,声音播放正常。这仅在设备锁定时发生。
任何想法表示赞赏!
对我来说,这个问题是由网络竞争条件引起的。
有问题的应用程序在服务器向设备发送 VOIP APNs 通知的情况下工作,这实际上会唤醒应用程序(与不会唤醒应用程序的标准 APNs 通知相反)。然后,该应用程序将 post 收到信息的本地通知。当用户打开应用程序时,它会清除应用程序发出的所有本地通知post。
我不确定这是什么时候开始发生的,但事实证明,当应用程序被远程通知唤醒时,在我的初始视图中是 运行 ViewDidAppear
函数控制器,即使该应用程序在后台 运行 并且未启动或在屏幕上不可见。
此函数中的代码负责清除通知,但只有在它与服务器核实以确保允许这样做之后。
因此,我们得到了一个奇怪的延迟(由于网络延迟),这将导致应用程序在通知出现后立即清除它们。
这只是有时会发生,因为通知总是安排在未来 1 秒后,所以如果网络调用发生得足够快,它就没有要清除的通知。
我的解决方案是将清除通知的逻辑放在 DidBecomeActive
处理程序而不是 ViewDidAppear
中。这立即解决了问题。