FlutterAppDelegate使iOS应用程序打开未调用URL

dtcbnfnu  于 2023-03-04  发布在  Flutter
关注(0)|答案(1)|浏览(172)

我正在将Flutter SDK导入到我的原生iOS项目中。
https://docs.flutter.dev/development/add-to-app/ios/add-flutter-screen?tab=no-engine-vc-uikit-objc-tab
在本指南中,建议我们从FlutterAppDelegate继承

但是在这样做之后,我发现我的源应用程序中的方法委托如下

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler

这些方法将不会被调用,这使得我的应用程序不工作时,从safari或任何其他应用程序调用。
不管怎样,要解决这个问题吗?

gc0ot86w

gc0ot86w1#

好吧,我知道答案了:
TLDR:handleOpenURLopenURL:sourceApplication:已弃用,使用openURL:options:将使事情变得正确
第一次

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

从FlutterAppDelegate继承AppDelegate时,将不会调用这两个过时的API。请改用此API

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options

第二,当代码包含application:openURL:options:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler

可以正常调用并且工作良好

相关问题