我正在使用flutter_live_activities
在我的应用上添加对Live Activities的支持。最近我注意到一个不一致的异常:
NSInternalInconsistencyException
Sending a message before the FlutterEngine has been run.
通过进一步的调查,我意识到这个异常是从flutter_live_activities
的侦听器抛出的,该侦听器是在Flutter主应用程序处于后台时引发的。此侦听器调用使用FlutterEventSink
协议创建的FlutterEventSink
流。当尝试添加到此流时,应用程序崩溃,出现上述异常。下面是重现问题的调用堆栈:
- 应用程序进入后台
- 在这里,
- 引发异常
看起来流必须以某种方式处理,但插件似乎在这里正确地实现了流处理:
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
if let args = arguments as? String{
if (args == "urlSchemeStream") {
urlSchemeSink = events
} else if (args == "activityUpdateStream") {
activityEventSink = events
}
}
return nil
}
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
if let args = arguments as? String{
if (args == "urlSchemeStream") {
urlSchemeSink = nil
} else if (args == "activityUpdateStream") {
activityEventSink = nil
}
}
return nil
}
在这种情况下,什么应该被处理,而它没有被处理?
1条答案
按热度按时间vql8enpb1#
当引擎被破坏时,通过在插件iOS端处理Flutter接收器和侦听器来修复该问题。
请参阅https://github.com/flutter/flutter/issues/135613以获得更深入的解释和其他详细解释此问题的有用链接。