2016-02-17 4 views
6

Мы пытаемся внедрить индексирование приложений на iOS с использованием универсальных ссылок Apple (я смотрю https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).IOS Универсальные ссылки и параметры GET

В разделе «Создание и загрузка файла ассоциации» я вижу, что я могу ограничить индексирование на определенные страницы, что хорошо.

Я хотел бы ограничить индексирование до https://www.mywebsite.com?parameter=something, как я могу?

Я думал о чем-то вроде этого:

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

Как вы думаете, это может работать? Я еще не могу проверить это, потому что для получения авторизации для загрузки файлов в корневом каталоге веб-сайта требуется время, поэтому я спрашиваю вас, думаете ли вы, что это может сработать, я хотел бы загрузить файл только один раз, если я Можно.

Спасибо

ответ

10

NO, В настоящее время # (инлайн-ссылки) и? (Запрос-Parmeter) не поддерживается Universal Links. Apple не предоставила какой-либо формат для поддержки Inline-Links & Query-Parmeter в apple-app-site-association файл.

Чтобы сделать индексацию https://www.mywebsite.com?parameter=something, я использую следующий файл json.

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

Если вы хотите ограничить индексацию только какого-либо параметра, например query_parmeter1 и query_parmeter2, то вам нужно справиться с этим в методе UIApplicationDelegate [UIApplicationDelegate application: continueUserActivity: restorationHandler:] что-то вроде этого

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

Примечание: Этот трюк выиграл Не запрещайте открывать приложение при нажатии на ссылку на сайт.

Рекомендации - Handle query parameters in universal links

+0

Это замечательный ответ для обработки параметров в Universal Links. Возможно, стоит упомянуть разницу между Universal Links, [Индексирование приложений] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/AppContent.html#//apple_ref/doc/uid/ TP40016308-CH7-SW1) и индексирование содержимого для [Spotlight Web Search] (https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/WebContent.html#//apple_ref/doc/uid/ TP40016308-CH8-SW1), поскольку автор, по-видимому, хочет сделать последнее (что не является автоматическим в реализации универсальных ссылок) –

+0

Спасибо Vineet Choudhari. Это хороший трюк, но это не помешает открытию приложения при нажатии на ссылку на сайт, верно? Как вы обрабатываете перенаправление веб-сайта в случае по умолчанию, когда ни один из параметров не задан?Спасибо –

+0

@AlexBauer благодарит вас за ваш комментарий и ссылки. На самом деле мне мало что касается applebot, но я хочу, чтобы наше приложение соответствовало индексированию приложений Google (https://developers.google.com/app-indexing/). Факт, я схожу с ума, пытаясь добиться этого. И замешательство между универсальными ссылками, пользовательским URL, индексированием приложений, разметкой веб-контента растет с каждым днем: -/ –

2

Для параметров запроса прилагаемая к пути от базового домена (т.е. https://www.mywebsite.com/pathOffOfTheBaseDomain?parameter=something) используют:

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

По 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.

Полный URL-адрес созреет и готов к разбору в методе continueUserActivity AppDelegate.