web-dev-qa-db-ja.com

ディープリンクURLスキームが関数を呼び出さない(Swift)

ディープリンクの実装はiOSです。 Project-Setting-> Info-> Url type URL SchemesでURLスキームを設定しました:carwash role:Viewer

carwash:// somethingと入力すると、ブラウザはアプリケーションを開くように求めますが、アプリケーションで何も呼び出されず、どのようなアクションが発生するかを処理します。

Appleのドキュメントには、AppDelegateでapplication(open url)をオーバーライドする必要があると記載されていますが、ディープリンクでそれを呼び出し、アプリケーションは最後の状態で開きます

application:openURL:options: 'が呼び出されていません

これは私のコードであり、機能しません

 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

6
Arvin Rezaei

Info.plistファイルでディープリンクを設定する必要があります

例:

<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
Piotrek Demi

application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Boolを使用する必要があります

メソッドに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
Iliya Kisliy