web-dev-qa-db-fra.com

Le schéma d'URL de lien profond n'appelle aucune fonction (Swift)

im implémentant un lien profond est iOS. J'ai configuré le schéma d'URL dans Project-Setting-> Info-> Schémas d'URL de type URL: rôle carwash: Viewer

lorsque je tape carwash: // quelque chose que le navigateur demande pour ouvrir l'application, mais rien n'est appelé dans Application que je gère pour que l'action se produise.

La documentation Apple indique que vous devez remplacer l'application (URL ouverte) dans AppDelegate mais que le lien profond l'appelle et l'application s'ouvre dans le dernier état

application: openURL: options: 'n'est pas appelé

c'est mon code et la dose ne fonctionne pas

 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
} 

Simulateur Swift 5: iOS 13

6
Arvin Rezaei

Vous devez configurer vos liens profonds dans le fichier Info.plist

Exemple:

<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

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

Notez que vous n'avez aucune instruction return dans votre méthode

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    print("Got from URL: \(url)"
    return true
}

Liens dans le simulateur à effectuer via le terminal

xcrun simctl openurl booted “carwasher://deeplink”
0
Iliya Kisliy