调用 UNUserNotificationCenter.current().getPendingNotificationRequests 在 iPhone SE iOS 10.1.1 上崩溃
Calling UNUserNotificationCenter.current().getPendingNotificationRequests crashes on iPhone SE iOS 10.1.1
使用 iOS 10.1.1.
在 iPhone SE 上调用 UNUserNotificationCenter getPendingNotificationRequests 崩溃
这似乎是一个边缘案例 - 我已经确认这适用于具有相同 iOS 版本 - 10.1.1. 的 iPhone 5s iPhone 5 秒时 iOS 也崩溃了。
"funny" 不仅应用程序崩溃了,跳板似乎也崩溃了 - 我们没有转到主屏幕,而是锁定屏幕(在看到旋转动画几秒钟后) .似乎 iOS 内部的某些东西 - 在这个 iPhone SE 上 - 坏了......我们可能在我们的应用程序中做错了什么,但它似乎归结为对 UNUserNotificationCenter.current().getPendingNotificationRequests
。我猜没有人 运行 喜欢这个?正如我所说,到目前为止,我们只在这台 iPhone SE 设备上看到过这种情况,我们已经使用了大约 10 或 20 台其他设备,没有问题。
此外,这通常在跳板崩溃之前打印在调试控制台中:
[Common] Terminating since there is no system app.
我会继续寻找罪魁祸首...最后我可能会尝试将所述设备更新到最新的 iOS (10.3.1 atm),看看是否效果更好。
更新 1: 这似乎是 iOS 中的错误,介于 10.0 和 10.1 之间,可能会在 iOS 10.2 中修复。我现在还不能更新这个 iPhone SE,我想我可能需要解决这个问题...
更新 2: 制作一个新的简单应用程序,基本上只在 iPhone SE 上调用 UNUserNotificationCenter.current().getPendingNotificationRequests
和 运行 它不会导致崩溃...情节变浓了...可能在某些情况下我在我的真实应用程序中使用 UNUserNotificationCenter 导致它崩溃。
更新三:不知为何,似乎与当前的app bundle identifier有关。如果我为我们当前的应用程序更改它,问题似乎就消失了。这很奇怪。我还没有确认这是否真的适用于处于完整状态的当前应用程序——我目前已经删除了几乎所有其他代码,只是测试这个通知行。即使那样,它也会崩溃,使用我们的默认包标识符。 更新内更新: 确认如果我只更改包标识符,成熟的应用程序就可以工作。奇怪的。但即使它现在可以正常工作,也没有人说它会在稍后开始崩溃。我们的第一个包标识符应该没有问题。毕竟,它只是一个字符串。这很可能是 iOS 中的错误(我之前知道,但只是说)。我还没有找到解决方法。当前政策是支持 iOS 9... 因此,对于 iOS 10.0~10.1 用户,此应用程序很可能会崩溃几个百分点。
更新 4: 经过更多测试后发现 iOS 10.1.1 上的 iPhone 5s 也会使应用程序和跳板崩溃完全相同的方式。不确定之前发生了什么,其他人正在测试此设备...
更新 5: UNUserNotificationCenter.current().add()
也崩溃了。我尝试在查看是否存在通知之前添加通知,但添加功能也崩溃了 iOS。这是个好主意。
经过大量测试后,我发现一段代码似乎可以神奇地修复所有问题。事不宜迟
UNUserNotificationCenter.current.removeAllPendingNotificationRequests()
在第一次启动应用程序时调用它。而已。不过,它还需要更多测试,但目前看来还可以。
使用 iOS 10.1.1.
在 iPhone SE 上调用 UNUserNotificationCenter getPendingNotificationRequests 崩溃这似乎是一个边缘案例 - 我已经确认这适用于具有相同 iOS 版本 - 10.1.1. 的 iPhone 5s iPhone 5 秒时 iOS 也崩溃了。
"funny" 不仅应用程序崩溃了,跳板似乎也崩溃了 - 我们没有转到主屏幕,而是锁定屏幕(在看到旋转动画几秒钟后) .似乎 iOS 内部的某些东西 - 在这个 iPhone SE 上 - 坏了......我们可能在我们的应用程序中做错了什么,但它似乎归结为对 UNUserNotificationCenter.current().getPendingNotificationRequests
。我猜没有人 运行 喜欢这个?正如我所说,到目前为止,我们只在这台 iPhone SE 设备上看到过这种情况,我们已经使用了大约 10 或 20 台其他设备,没有问题。
此外,这通常在跳板崩溃之前打印在调试控制台中:
[Common] Terminating since there is no system app.
我会继续寻找罪魁祸首...最后我可能会尝试将所述设备更新到最新的 iOS (10.3.1 atm),看看是否效果更好。
更新 1: 这似乎是 iOS 中的错误,介于 10.0 和 10.1 之间,可能会在 iOS 10.2 中修复。我现在还不能更新这个 iPhone SE,我想我可能需要解决这个问题...
更新 2: 制作一个新的简单应用程序,基本上只在 iPhone SE 上调用 UNUserNotificationCenter.current().getPendingNotificationRequests
和 运行 它不会导致崩溃...情节变浓了...可能在某些情况下我在我的真实应用程序中使用 UNUserNotificationCenter 导致它崩溃。
更新三:不知为何,似乎与当前的app bundle identifier有关。如果我为我们当前的应用程序更改它,问题似乎就消失了。这很奇怪。我还没有确认这是否真的适用于处于完整状态的当前应用程序——我目前已经删除了几乎所有其他代码,只是测试这个通知行。即使那样,它也会崩溃,使用我们的默认包标识符。 更新内更新: 确认如果我只更改包标识符,成熟的应用程序就可以工作。奇怪的。但即使它现在可以正常工作,也没有人说它会在稍后开始崩溃。我们的第一个包标识符应该没有问题。毕竟,它只是一个字符串。这很可能是 iOS 中的错误(我之前知道,但只是说)。我还没有找到解决方法。当前政策是支持 iOS 9... 因此,对于 iOS 10.0~10.1 用户,此应用程序很可能会崩溃几个百分点。
更新 4: 经过更多测试后发现 iOS 10.1.1 上的 iPhone 5s 也会使应用程序和跳板崩溃完全相同的方式。不确定之前发生了什么,其他人正在测试此设备...
更新 5: UNUserNotificationCenter.current().add()
也崩溃了。我尝试在查看是否存在通知之前添加通知,但添加功能也崩溃了 iOS。这是个好主意。
经过大量测试后,我发现一段代码似乎可以神奇地修复所有问题。事不宜迟
UNUserNotificationCenter.current.removeAllPendingNotificationRequests()
在第一次启动应用程序时调用它。而已。不过,它还需要更多测试,但目前看来还可以。