objective-c - iOS 11 与 bundleProxy 崩溃!= 使用 UNUserNotificationCenter 时出现 nil 错误

标签 objective-c crash ios11 unusernotificationcenter

以下代码行是我们的应用程序在 iOS 11/11.0.1/11.0.2/11.1.1/11.2.2 上对某些用户突然开始崩溃的地方:

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

我们在 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]

它显然来自 iOS。还有其他人遇到同样的错误吗?知道发生了什么事吗?

最佳答案

我不确定这是否适用于所有人,但我已经为我的用例找到了它。我已经创建了 iOS 应用程序使用的框架。该框架使用 UNUserNotificationCenter 设置警报。似乎出于某种原因,当从框架内部使用此代码时,“ bundle ”未正确初始化。有时有效,有时无效。这个 bundleProxy,从事物的声音来看,是通知框架所依赖的某种代理。由于代码是从框架内部执行的,可能在运行时找不到这个包,系统返回 nil。尝试从包位置不正确的框架加载资源时,我通常遇到过这个问题。

无论如何,我的解决方案是在启动时在应用程序的委托(delegate)中存储对 [UNUserNotificationCenter currentNotificationCenter] 的引用,然后将其传递给任何想要使用它的方法。当应用程序完成启动时,如果调用代码是应用程序的二进制文件本身,则此 proxy 似乎已正确加载。这似乎已经为我解决了。

关于objective-c - iOS 11 与 bundleProxy 崩溃!= 使用 UNUserNotificationCenter 时出现 nil 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595434/

相关文章:

uitableview - -[UITableView _addScrollViewScrollObserver :] while using large title navigation ios 11 中的断言失败

crash - SFML sf::RenderWindow::createWindow()使程序崩溃

ios - 在飞行模式下,CTCarrier 中的 isoCountryCode 不返回 nil

permissions - 简化 iOS 11 中的位置权限提示

ios - 指定任务之间的时间 - iOS

javascript - javascript中大数组是否有项目限制

拍照时 iOS 应用程序崩溃

iphone - 从 objective-c 中的方法返回一个整数

ios - 保存 UILabel 信息?

objective-c - 使用UIImage作为@“picture”共享Facebook对话框