继承FlutterAppDelegate后iOS原生App的openURL等方法未触发如何解决?
解决FlutterAppDelegate覆盖原生AppDelegate方法不调用的问题
继承FlutterAppDelegate后,父类已实现这些系统代理方法,导致原生子类的同名方法默认不会触发。可以通过以下方式兼顾Flutter和原生逻辑:
- 重写
handleOpenURL方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // 优先让FlutterAppDelegate处理相关逻辑 BOOL flutterHandled = [super application:application handleOpenURL:url]; // 这里添加你原来的URL处理代码(比如自定义Scheme跳转、第三方登录回调等) return flutterHandled || YES; // 根据实际处理结果返回 }
- 重写
continueUserActivity方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler { // 调用父类方法确保Flutter侧的用户活动处理正常 BOOL flutterHandled = [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; // 添加你原来的Universal Link或其他用户活动处理代码 return flutterHandled || YES; // 根据实际处理结果返回 }
如果还有其他被覆盖的AppDelegate方法,都可以采用这种「先调用super实现,再执行原生业务逻辑」的方式处理,既能保证Flutter相关功能正常运行,又不影响原生项目原有逻辑。
内容的提问来源于stack exchange,提问作者ximmyxiao
相关产品推荐
相关产品推荐

