2016-02-17 28 views
6

staramy się zaimplementować indeksowanie aplikacji na iOS przy użyciu Apple Universal Links (patrzę na https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).iOS Universal Links i parametry GET

W sekcji "Tworzenie i przesyłanie pliku asocjacyjnego" widzę, że mogę ograniczyć indeksowanie do konkretnych stron, co jest dobre. Czy mogę ograniczyć indeksowanie do https://www.mywebsite.com?parameter=something, jak mogę?

myślałem o czymś takim:

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

sądzisz może to działa? Nie mogę tego jeszcze przetestować, ponieważ uzyskanie autoryzacji do przesłania plików w katalogu głównym witryny wymaga czasu, dlatego pytam, czy uważasz, że to zadziała, chciałbym przesłać plik tylko raz, jeśli mogą.

Dziękuję

Odpowiedz

10

NO obecnie # (inline-linki) i? (Query-parmeter) nie jest obsługiwany przez Universal Links. Apple nie dostarczył żadnego formatu wspierać Inline-Links & Query-Parmeter w apple-app-site-association pliku. Aby uzyskać indeksowanie do https://www.mywebsite.com?parameter=something, używam następującego pliku JSON.

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

Jeśli chcesz ograniczyć indeksowanie tylko do pewnego parametru na przykład query_parmeter1 i query_parmeter2 to trzeba sobie z tym poradzić w sposób UIApplicationDelegate [UIApplicationDelegate application: continueUserActivity: restorationHandler:] coś takiego

-(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; 
} 

Uwaga: ten trick wygrał uniemożliwiają otwarcie aplikacji po kliknięciu linku do witryny.

Referencje - Handle query parameters in universal links

+0

To znakomita odpowiedź na parametry obsługi w łączach uniwersalnych. Może warto wspomnieć różnicę pomiędzy Powszechną Linki indeksowania [App] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/AppContent.html#//apple_ref/doc/uid/ TP40016308-CH7-SW1) i indeksowanie zawartości dla [Spotlight Web Search] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/WebContent.html#//apple_ref/doc/uid/ TP40016308-CH8-SW1), ponieważ autor najwyraźniej chce to zrobić (co nie jest automatyczne w podstawowej implementacji Universal Links). –

+0

Dziękuję Vineet Choudhari. To dobra sztuczka, ale nie uniemożliwi to otwarcia aplikacji po kliknięciu linku do strony, prawda? Jak radzisz sobie z przekierowaniem strony w domyślnym przypadku, gdy żaden z parametrów nie jest ustawiony?Dziękuję –

+0

@AlexBauer dziękuję za komentarz i linki. Właściwie to nie obchodzi mnie zbytnio applebot, ale chciałbym, aby nasza aplikacja była zgodna z indeksowaniem aplikacji Google (https://developers.google.com/app-indexing/). Faktem jest, że zwariowałem próbując to osiągnąć. A zamieszanie między linkami uniwersalnymi, niestandardowym adresem URL, indeksowaniem aplikacji, oznaczaniem treści internetowych rośnie każdego dnia: -/ –

2

Dla parametrów wyszukiwania dołączone do ścieżki się domeny bazowej (tj https://www.mywebsite.com/pathOffOfTheBaseDomain?parameter=something) używać:

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

Według 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.

Pełny adres URL będzie dojrzały i gotowy do parsowania w metodzie AppDelegate: continueUserActivity.