深层链接URL方案未调用任何函数(交换)

问题描述 投票:0回答:3

im实现深层链接是iOS。我已经在Project-Setting-> Info-> Url类型中配置了URL SchemeURL方案:洗车角色:查看者

[当我键入carwash://时,浏览器要求打开应用程序,但在应用程序中没有任何调用,我处理应该采取的措施。

Apple文档说您应该在AppDelegate中覆盖应用程序(打开url),但是深层链接会调用它,并且应用程序将以最后状态打开

这是我的代码,不起作用

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

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        if let url = launchOptions?[UIApplication.LaunchOptionsKey.url] as? URL {
           /// some
            fatalError()
        }
    GMSServices.provideAPIKey("")

    return true
} 

swift 5模拟器:iOS 13

ios swift deep-linking
3个回答
0
投票
示例:

<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>CFBundleURLName</key> <string>carwash</string> // your identifier <key>CFBundleURLSchemes</key> <array> <string>carwash</string> // schema </array> </dict> </array>


0
投票
请注意,您的方法中没有

return语句

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { print("Got from URL: \(url)" return true } 模拟器中的链接最好通过终端进行

xcrun simctl openurl booted “carwasher://deeplink”

0
投票
您应该覆盖SceneDelegate中的以下功能,该功能在iOS 13中可用:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { if let url = URLContexts.first?.url{ print(url) } }

© www.soinside.com 2019 - 2024. All rights reserved.