因此,在UIKit中处理openURL调用的旧方法是在AppDelegate中使用以下内容:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { ...

不幸的是,新的@main SwiftUI被重定向到了

.onOpenUrl { url in ...

因此,我们错过了字典OpenUrlOptions键.sourceApplication,我想确定哪个应用程序被称为我的,然后可以采取适当的行动,因为我有一个需要限制某些方案URL被第三方应用程序使用,而不是其他应用程序使用的用例.

这样做的最佳实践是什么?

推荐答案

所以我设法在app delegate中使用了这个:

func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
    let sceneConfig = UISceneConfiguration(name: nil, sessionRole: connectingSceneSession.role)
    sceneConfig.delegateClass = SceneDelegate.self 
    return sceneConfig
}

在scenedelegate中设置:

    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
       // get url and sourceApp out of first URLContext here
       }

不幸的是,如果URL的发送者不是来自您的团队,那么在UIOpenURLContext中您将得到nil.sourceApp

所以,如果你想在你的团队应用程序之间创建RPC,你可以.

Ios相关问答推荐

AlGolia InstantSearch Swift Package Manager引发编译错误

如何在SWIFT中处理不可发送的类型?

在选项卡内列出导航内视图断开导航标题的动画

如何在不将应用程序留在SwiftUI上的情况下更改语言?

如何在 Flutter 应用程序中测试来自 App/Play Store 的移动深层链接?

当任何 TextEditor 有多于一行时,所有 TextEditor 都会调整大小

SwiftUI DatePicker 格式在每个设备上都不一样,如何让它总是显示相同的 Select 版本?

如何使用 Swift 文档注释

NSFetchedResultsController 由字符串的第一个字母创建的部分

本月使用 iOS 的天数?

不变违规:应用程序 AwesomeProject 尚未注册使用静态 jsbundle 为 iOS 设备构建时

如何在 OS X 或 iOS(不使用格式塔)中确定运行时的操作系统版本?

如何在 iOS 中判断暗模式?

命令 /Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 失败,退出代码为 1

如何使用 AFNetworking 设置超时

如何找到 UILabel 的实际行数?

使用 swift 3 在 UIView 上添加阴影

如何为 UILabel 的背景 colored颜色 设置动画?

Xcode中的终端窗口?

未找到符号:kUTTypeImage