iOS
Deep linking in iOS
Ricerca…
Osservazioni
Documentazione Apple utile con esempi e chiarimenti.
Aprire un'app basata sul suo schema URL
Per aprire un'app con schema URL definito todolist://
:
Objective-C
NSURL *myURL = [NSURL URLWithString:@"todolist://there/is/something/to/do"];
[[UIApplication sharedApplication] openURL:myURL];
veloce
let stringURL = "todolist://there/is/something/to/do"
if let url = NSURL(string: stringURL) {
UIApplication.shared().openURL(url)
}
HTML
<a href="todolist://there/is/something/to/do">New SMS Message</a>
Nota: è utile verificare se il collegamento può essere aperto per visualizzare altrimenti un messaggio appropriato all'utente. Questo può essere fatto usando
canOpenURL:
method.
Aggiunta di uno schema URL alla tua app
Supponiamo che tu stia lavorando su un'app chiamata MyTasks
e desideri consentire agli URL in entrata di creare una nuova attività con un titolo e un corpo. L'URL che stai progettando potrebbe essere simile a questo:
mytasks://create?title=hello&body=world
(Naturalmente, i parametri del text
e del body
sono usati per popolare il nostro compito che stiamo creando!)
Ecco i grandi passaggi per aggiungere questo schema URL al tuo progetto:
- Registra uno schema URL nel file
Info.plist
della tua app, in modo che il sistema sappia quando indirizzare un URL alla tua app. - Aggiungi una funzione al tuo
UIApplicationDelegate
che accetta e gestisce gli URL in arrivo. - Esegui qualsiasi attività che deve essere eseguita quando viene aperto quell'URL.
Fase uno: registrare uno schema URL in Info.plist:
Per prima cosa, dobbiamo aggiungere una voce "Tipi di URL" al nostro file Info.plist. Fai clic sul pulsante (+) qui:
... quindi inserisci un identificativo univoco per la tua app, nonché lo schema URL che desideri utilizzare. Sii specifico! Non vuoi che lo schema URL sia in conflitto con l'implementazione di un'altra app. Meglio essere troppo lungo qui che troppo breve!
Passaggio 2: gestire l'URL in UIApplicationDelegate
Dobbiamo implementare l' application:openURL:options:
sul nostro UIApplicationDelegate
. Ispezioneremo l' URL
arrivo e vediamo se c'è un'azione da intraprendere!
Un'implementazione sarebbe questa:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if url.scheme == "mytasks" && url.host == "create" {
let title = // get the title out of the URL's query using a method of your choice
let body = // get the title out of the URL's query using a method of your choice
self.rootViewController.createTaskWithTitle(title, body: body)
return true
}
return false
}
Passaggio 3: eseguire un'attività in base all'URL.
Quando un utente apre la tua app tramite un URL, probabilmente si aspettava che succedesse qualcosa . Forse sta navigando verso un contenuto, forse sta creando un nuovo elemento: in questo esempio, creeremo una nuova attività nell'app!
Nel codice sopra, possiamo vedere una chiamata a self.rootViewController.createTaskWithTitle(:body:)
- così, supponendo che il tuo AppDelegate
abbia un puntatore al suo controller di visualizzazione radice che implementa correttamente la funzione, sei pronto!
Impostazione di deeplink per la tua app
La configurazione del deep linking per la tua app è semplice. Basta un piccolo url con cui vuoi aprire la tua app.
Segui i passaggi per configurare il deep-linking per la tua app.
Consente di creare un progetto e denominarlo DeepLinkPOC.
Ora seleziona il tuo obiettivo di progetto.
Dopo aver selezionato il bersaglio, seleziona la scheda "Informazioni".
Scorri verso il basso fino a quando non vedi un'opzione di Tipi di URL
Fai clic sull'opzione "+".
Vedrai che gli schemi URL aggiungono una stringa tramite la quale vuoi aprire l'app. Aggiunge " DeepLinking " negli schemi URL.
Quindi, per aprire la tua app puoi avviarla digitando "DeepLinking: //" nel tuo safari. La tua stringa di deep-linking ha il seguente formato.
[scheme]://[host]/[path] --> DeepLinking://path/Page1
dove, Scheme: Host "DeepLinking": percorso "percorso": "Pagina1"
Nota : anche se non aggiungere l'host e il percorso, verrà avviata l'app, quindi non preoccuparti. È possibile aggiungere host e percorso per reindirizzare ulteriormente a una determinata pagina dopo l'avvio dell'applicazione.
- Ora aggiungi il seguente metodo al tuo accountdelegate.
Swift:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
Objective-C:
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
Il metodo precedente viene chiamato ogni volta che la tua app viene avviata utilizzando una stringa di deep linking impostata per la tua app.
- Ora è il momento di installare la tua app, ma attendi prima di saltare direttamente al pulsante di esecuzione. Effettua un piccolo cambiamento nel metodo di avvio dell'app dello schema.
- Seleziona e modifica il tuo schema come
Ora fai clic sul pulsante Esegui (se vuoi, puoi aggiungere breakpoint ai tuoi metodi didFinishLaunchingWithOptions e openURL per osservare i valori)
Verrà visualizzato un messaggio "In attesa di DeepLinkPOC (o il nome della tua app) da avviare".
Apri Safari e digita " DeepLinking: // " nella barra di ricerca per visualizzare il prompt "apri questa pagina in DeepLinkPOC" fai clic su Apri per avviare la tua app.
Spero che tu sappia come impostare il deep-linking per la tua app :)