2016-02-17 13 views
6

stiamo cercando di implementare l'indicizzazione delle app su iOS utilizzando i collegamenti universali Apple (sto guardando https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).Link universali iOS e parametri GET

Nella sezione "Creazione e caricamento del file di associazione" vedo che posso limitare l'indicizzazione a pagine specifiche, il che è positivo.

Vorrei limitare l'indicizzazione a https://www.mywebsite.com?parameter=something, come posso?

Stavo pensando a qualcosa di simile:

{ 
    "applinks": { 
    "apps": [], 
    "details": [ 
     { 
     "appID": "MYID", 
     "paths":[ "*?parameter=*" ] 
     } 
    ] 
    } 
} 

pensi che potrebbe funzionare? Non riesco ancora a testarlo perché ci vuole tempo per ottenere l'autorizzazione per caricare i file nella directory principale del sito Web, ecco perché ti chiedo se pensi che possa funzionare, vorrei caricare il file una volta sola se può.

si

risposta

10

Grazie NO, Attualmente # (in linea-link) e? (Query-Parmeter) non supportato da Universal Links. Apple non ha fornito alcun formato per supportare Inline-Links & Query-Parmeter nel file apple-app-site-association.

Per eseguire l'indicizzazione su https://www.mywebsite.com?parameter=something, sto utilizzando il seguente file JSON.

{ 
    "applinks": { 
    "apps": [], 
    "details": [ 
     { 
     "appID": "TEAMID.BUNDLEID", 
     "paths":[ "*" ] 
     } 
    ] 
    } 
} 

Se si desidera limitare l'indicizzazione solo per alcuni parametri, ad esempio query_parmeter1 e query_parmeter2 allora avete bisogno di gestire questo nel metodo UIApplicationDelegate [UIApplicationDelegate application: continueUserActivity: restorationHandler:] qualcosa di simile

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{ 
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) { 
     NSURL *url = userActivity.webpageURL; 
     if ([url.query containsString:@"query_parmeter1"]) { 
      //handle code for query_parmeter1 
     }else if ([url.query containsString:@"query_parmeter2"]){ 
      //handle code for query_parmeter2 
     } 
    } 
    return YES; 
} 

Nota: Questo trucco won impedire l'apertura dell'app quando si fa clic su un collegamento al sito Web.

References - Handle query parameters in universal links

+0

Questa è una risposta eccezionale per la gestione dei parametri in Universal Links. Potrebbe essere utile menzionare la differenza tra Universal Links, [Indicizzazione app] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/AppContent.html#//apple_ref/doc/uid/ TP40016308-CH7-SW1) e contenuto di indicizzazione per [Spotlight Web Search] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/WebContent.html#//apple_ref/doc/uid/ TP40016308-CH8-SW1), poiché l'autore sembra voler fare quest'ultimo (che non è automatico in un'implementazione base di Universal Links) –

+0

Grazie Vineet Choudhari. Questo è un buon trucco ma non impedirà l'apertura dell'app quando si fa clic su un collegamento al sito web, giusto? Come gestisci il reindirizzamento del sito web nel caso predefinito, quando nessuno dei parametri è impostato?Grazie –

+0

@AlexBauer grazie per il tuo commento e i link. In realtà non mi interessa molto di applebot, ma mi piacerebbe rendere la nostra app compatibile con google App Indexing (https://developers.google.com/app-indexing/). Il fatto è che sto diventando pazzo cercando di farlo. E la confusione tra link universali, URL personalizzati, indicizzazione delle app, markup dei contenuti web cresce ogni giorno: -/ –

2

Per parametri di query annesse a un percorso fuori del dominio di base (cioè https://www.mywebsite.com/pathOffOfTheBaseDomain?parameter=something) usa:

{ 
    "applinks": { 
    "apps": [], 
    "details": [ 
     { 
     "appID": "TEAMID.BUNDLEID", 
     "paths":[ "/pathOffOfTheBaseDomain" ] 
     } 
    ] 
    } 
} 

Secondo Apple Universal Link documentation:

Note that only the path component of the URL is used for comparison. Other components, such as the query string or fragment identifier, are ignored.

L'URL completo sarà maturo e pronto per l'analisi nel metodo continueUserActivity di AppDelegate.

Problemi correlati