Ricerca…


Osservazioni

  1. Quando supporti i collegamenti universali, gli utenti di iOS 9 possono toccare un collegamento al tuo sito Web e essere reindirizzati senza problemi all'app installata senza passare attraverso Safari. Se la tua app non è installata, toccando un link al tuo sito web si apre il tuo sito web in Safari.
  2. In generale, qualsiasi link supportato cliccato in Safari o in istanze di UIWebView / WKWebView dovrebbe aprire l'app.
  3. Per iOS 9.2 e meno, funziona solo su un dispositivo. iOS 9.3 supporta anche il simulatore.
  4. iOS ricorda la scelta dell'utente all'apertura di Universal Links. Se toccano il breadcrumb in alto a destra per aprire il collegamento in Safari, tutti gli altri clic li porteranno su Safari e non sull'app. Possono tornare all'apertura dell'app per impostazione predefinita, scegliendo Apri nel banner dell'applicazione sul sito Web.

Setup Server

Devi avere un server in esecuzione online. Per associare in modo sicuro la tua app iOS con un server, Apple richiede di rendere disponibile un file di configurazione, chiamato apple-app-site-association . Questo è un file JSON che descrive il dominio e le rotte supportate.

Il file apple-app-site-association deve essere accessibile tramite HTTPS , senza reindirizzamenti, all'indirizzo https: // {domain} / apple-app-site-association .

Il file ha il seguente aspetto:

{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "{app_prefix}.{app_identifier}",
            "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
        },
        {
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        }
    ]
}
}

NOTA : non aggiungere .json al nome file di apple-app-site-association .

Le chiavi sono le seguenti:
apps : dovrebbe avere un array vuoto come valore e deve essere presente. Questo è il modo in cui Apple lo vuole.
details : una serie di dizionari, uno per ogni app iOS supportata dal sito web. Ogni dizionario contiene informazioni sull'app, sul team e sugli ID bundle.

Ci sono 3 modi per definire i percorsi:
Static : l'intero percorso supportato è hardcoded per identificare un collegamento specifico, ad esempio / static / terms
Wildcards : A * può essere utilizzato per abbinare percorsi dinamici, ad esempio / libri / * può corrispondere al percorso della pagina di qualsiasi autore. ? all'interno di componenti specifici del percorso, ad es. libri / 1? può essere utilizzato per abbinare qualsiasi libro il cui ID inizia con 1.
Exclusions : la preimpostazione di un percorso con NOT esclude tale percorso dall'abbinamento.

L'ordine in cui i percorsi sono menzionati nell'array è importante. Gli indici precedenti hanno una priorità più alta. Una volta che un percorso corrisponde, la valutazione si interrompe e altri percorsi vengono ignorati. Ogni percorso è sensibile al maiuscolo / minuscolo.


# Codice del sito

Il codice del sito Web può essere trovato nella sezione gh-pages su https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages

Supporto di più domini

Ogni dominio supportato nell'app deve rendere disponibile il proprio file di associazione sito Apple-app. Se il contenuto servito da ciascun dominio è diverso, anche il contenuto del file cambierà per supportare i rispettivi percorsi. In caso contrario, è possibile utilizzare lo stesso file, ma deve essere accessibile in tutti i domini supportati.

Firma del file App-Site-Association

Nota : è possibile saltare questa parte se il server utilizza HTTPS per servire il contenuto e passare alla guida alla configurazione dell'applicazione.

Se la tua app è indirizzata a iOS 9 e il tuo server utilizza HTTPS per pubblicare i contenuti, non è necessario firmare il file. In caso contrario (ad esempio quando si supporta Handoff su iOS 8), è necessario firmarlo utilizzando un certificato SSL da un'autorità di certificazione riconosciuta.

Nota : questo non è il certificato fornito da Apple per inviare la tua app all'App Store. Dovrebbe essere fornito da una terza parte e si consiglia di utilizzare lo stesso certificato che si utilizza per il proprio server HTTPS (sebbene non sia richiesto).

Per firmare il file, devi prima creare e salvare una semplice versione .txt. Quindi, nel terminale, eseguire il seguente comando:

cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association

Questo produrrà il file firmato nella directory corrente. example.com.key , example.com.pem e intermediate.pem sono i file resi disponibili dalla tua autorità di certificazione.

Nota : se il file non è firmato, dovrebbe avere un Content-Type of application/json . Altrimenti, dovrebbe essere application/pkcs7-mime .

Convalida il tuo server con lo strumento di convalida della ricerca di app Apple
Metti alla prova la tua pagina web per le API di ricerca di iOS 9. Inserisci un URL e Applebot eseguirà la scansione della tua pagina Web e mostrerà come ottimizzare i risultati migliori https://search.developer.apple.com/appsearch-validation-tool/

Imposta l'applicazione iOS (Abilitazione di collegamenti universali)

L'installazione sul lato dell'app richiede due cose:

  1. Configurare l'autorizzazione dell'app e abilitare i collegamenti universali attivando la funzionalità Domains associati nel progetto.
  2. Gestire i collegamenti in entrata nel tuo AppDelegate .

1. Configurazione dell'accreditamento dell'app e attivazione di collegamenti universali.

Il primo passaggio nella configurazione delle titolarità della tua app è abilitarlo per il tuo ID app. Fai questo nel Centro per gli sviluppatori degli sviluppatori Apple. Fare clic su Certificati, Identificatori e Profili e quindi Identificatori. Seleziona il tuo ID app (crealo prima se necessario), fai clic su Modifica e attiva la titolarità dei domini associati.

Successivamente, ottieni il prefisso e il suffisso ID app facendo clic sul rispettivo ID app.

Il prefisso e il suffisso ID app devono corrispondere a quello nel file associazione sito-apple-app.

Successivamente in Xcode , seleziona la destinazione della tua app, fai clic su Capacità e attiva i domini associati. Aggiungi una voce per ogni dominio supportato dalla tua app, con prefisso dei link delle app:

Ad esempio, collegamenti app: YourCustomDomainName.com

Che assomiglia a questo per l'app di esempio:

Nota : assicurarsi di aver selezionato la stessa squadra e di aver inserito lo stesso ID bundle dell'ID app registrato nel Centro membri. Assicurati inoltre che il file delle autorizzazioni sia incluso in Xcode selezionando il file e in File Inspector, assicurati che il tuo target sia selezionato.


2. Gestire i collegamenti in entrata nel tuo AppDelegate

Tutti i reindirizzamenti da Safari all'app per i collegamenti universali passano attraverso il metodo seguente nella classe AppDelegate dell'applicazione. Analizzi questo URL per determinare l'azione corretta nell'app.

[UIApplicationDelegate application: continueUserActivity: restorationHandler:]

Objective-C

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    ///Checking whether the activity was from a web page redirect to the app.
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
        ///Getting the URL from the UserActivty Object.
        NSURL *url = userActivity.webpageURL;
        UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UINavigationController *navigationController = (UINavigationController *)_window.rootViewController;
        if ([url.pathComponents containsObject:@"home"]) {
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeScreenId"] animated:YES];
        }else if ([url.pathComponents containsObject:@"about"]){
            [navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"AboutScreenId"] animated:YES];
        }
    }
    return YES;
}  

Swift:

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
      if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
          let url = userActivity.webpageURL!
          //handle url
      }
      return true
  }

Codice applicazione iOS

Il codice app può essere trovato qui .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow