str*_*mes 9 crash objective-c unusernotificationcenter ios11
以下代码行是我们的应用程序突然开始在iOS 11/11.0.1/11.0.2/11.1.1/11.2.2上针对某些用户崩溃的地方:
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
Run Code Online (Sandbox Code Playgroud)
我们有这个didFinishLaunchingWithOptions.崩溃报告说:
Fatal Exception: NSInternalInconsistencyException
Invalid parameter not satisfying: bundleProxy != nil
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x1869b3d38 __exceptionPreprocess
1 libobjc.A.dylib 0x185ec8528 objc_exception_throw
2 CoreFoundation 0x1869b3c0c +[NSException raise:format:]
3 Foundation 0x187342c24 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4 UserNotifications 0x18fcc973c -[UNUserNotificationCenter initWithBundleProxy:]
5 UserNotifications 0x18fcc950c __53+[UNUserNotificationCenter currentNotificationCenter]_block_invoke
6 libdispatch.dylib 0x186339048 _dispatch_client_callout
7 libdispatch.dylib 0x18633c710 dispatch_once_f$VARIANT$mp
8 UserNotifications 0x18fcc94ac +[UNUserNotificationCenter currentNotificationCenter]
Run Code Online (Sandbox Code Playgroud)
它来自iOS清楚.还有其他人遇到同样的错误吗?知道发生了什么事吗?
我不确定这是否适用于每个人,但是我已经为我的用例找到了它。我创建了一个 iOS 应用程序使用的框架。该框架UNUserNotificationCenter用于设置警报。似乎出于某种原因,当从框架内部使用此代码时,“捆绑包”没有正确初始化。有时它有效,有时它不起作用。此bundleProxy,通过对事物的声音,是某种在通知中的框架依赖于代理的。由于代码是从框架内部执行的,可能在运行时找不到这个包,系统返回 nil。在尝试从包位置不正确的框架加载资源时,我通常会遇到这个问题。
无论如何,我的解决方案是[UNUserNotificationCenter currentNotificationCenter]在启动时在应用程序的委托中存储对的引用,然后将其传递给任何想要使用它的方法。当应用程序完成启动时,proxy如果调用代码是应用程序的二进制文件本身,这似乎可以正确加载。这似乎为我修复了它。
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |