iOS
Linki uniwersalne
Szukaj…
Uwagi
- Gdy obsługujesz łącza uniwersalne, użytkownicy systemu iOS 9 mogą stuknąć łącze do Twojej witryny i płynnie przekierować do zainstalowanej aplikacji bez konieczności korzystania z Safari. Jeśli Twoja aplikacja nie jest zainstalowana, stuknięcie linku do witryny powoduje otwarcie witryny w przeglądarce Safari.
- Zasadniczo każde obsługiwane łącze kliknięte w Safari lub w instancjach
UIWebView
/WKWebView
powinno otworzyć aplikację. - W systemie iOS 9.2 i nowszym będzie to działać tylko na urządzeniu. iOS 9.3 obsługuje również symulator.
- iOS zapamiętuje wybór użytkownika podczas otwierania Universal Links. Jeśli dotkną menu nawigacyjnego w prawym górnym rogu, aby otworzyć link w Safari, wszystkie dalsze kliknięcia spowodują przejście do Safari, a nie do aplikacji. Mogą wrócić do domyślnego otwierania aplikacji, wybierając opcję Otwórz w banerze aplikacji na stronie internetowej.
Serwer konfiguracji
Musisz mieć serwer działający online. Aby bezpiecznie powiązać aplikację iOS z serwerem, Apple wymaga udostępnienia pliku konfiguracyjnego o nazwie apple-app-site-association
. To jest plik JSON
, który opisuje domenę i obsługiwane trasy.
Plik apple-app-site-association
musi być dostępny przez HTTPS
, bez żadnych przekierowań, na stronie https: // {domain} / apple-app-site-Association .
Plik wygląda następująco:
{
"applinks": {
"apps": [ ],
"details": [
{
"appID": "{app_prefix}.{app_identifier}",
"paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
},
{
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
}
]
}
}
UWAGA - nie dołączaj .json
do nazwy pliku apple-app-site-association
.
Klucze są następujące:
apps
: powinna mieć pustą tablicę jako wartość i musi być obecna. Tak chce tego Apple.
details
: Jest to zestaw słowników, po jednym dla każdej aplikacji na iOS obsługiwanej przez witrynę. Każdy słownik zawiera informacje o aplikacji, zespole i identyfikatorach pakietów.
Istnieją 3 sposoby definiowania ścieżek:
Static
: Cała obsługiwana ścieżka jest zakodowana na stałe w celu zidentyfikowania konkretnego łącza, np. / Static
/ terms
Wildcards
: A * może być użyte do dopasowania ścieżek dynamicznych, np. / Books / * może dopasować ścieżkę do strony dowolnego autora. ? wewnątrz określonych elementów ścieżki, np. książek / 1? można użyć do dopasowania książek, których identyfikator zaczyna się od 1.
Exclusions
: Przygotowanie ścieżki z NIE wyklucza dopasowanie tej ścieżki.
Ważna jest kolejność, w jakiej ścieżki są wymienione w tablicy. Wcześniejsze indeksy mają wyższy priorytet. Po dopasowaniu ścieżki ocena zostaje zatrzymana, a inne ścieżki są ignorowane. W każdej ścieżce rozróżniana jest wielkość liter.
# Kod strony internetowej
Kod strony można znaleźć w gałęzi gh-pages na https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages
Obsługa wielu domen
Każda domena obsługiwana w aplikacji musi udostępnić swój własny plik skojarzeń apple-app-site-site. Jeśli treść obsługiwana przez każdą domenę jest inna, zawartość pliku również ulegnie zmianie, aby obsługiwać odpowiednie ścieżki. W przeciwnym razie można użyć tego samego pliku, ale musi on być dostępny w każdej obsługiwanej domenie.
Podpisywanie pliku powiązania aplikacji z witryną
Uwaga : możesz pominąć tę część, jeśli serwer używa HTTPS
do udostępniania treści i przejdź do Przewodnika instalacji aplikacji.
Jeśli aplikacja obsługuje iOS 9, a serwer używa HTTPS
do udostępniania treści, nie musisz podpisywać pliku. Jeśli nie (np. W przypadku obsługi Handoff w iOS 8), musi zostać podpisany przy użyciu certyfikatu SSL
od uznanego urzędu certyfikacji.
Uwaga : nie jest to certyfikat dostarczony przez Apple w celu przesłania aplikacji do App Store. Powinien być dostarczony przez firmę zewnętrzną i zaleca się stosowanie tego samego certyfikatu, którego używasz na serwerze HTTPS
(chociaż nie jest to wymagane).
Aby podpisać plik, najpierw utwórz i zapisz jego prostą wersję .txt. Następnie w terminalu uruchom następującą komendę:
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
Spowoduje to wydrukowanie podpisanego pliku w bieżącym katalogu. example.com.key
, example.com.pem
i plik intermediate.pem
to pliki, które zostałyby udostępnione przez Twój urząd certyfikacji.
Uwaga : jeśli plik jest niepodpisany, powinien mieć Content-Type
application/json
. W przeciwnym razie powinna to być application/pkcs7-mime
.
Sprawdź poprawność serwera za pomocą narzędzia do sprawdzania poprawności wyszukiwania Apple App
Przetestuj swoją stronę pod kątem interfejsów API wyszukiwania iOS 9. Wprowadź adres URL, a Applebot zaindeksuje twoją stronę internetową i pokaże, w jaki sposób można zoptymalizować w celu uzyskania najlepszych wyników https://search.developer.apple.com/appsearch-validation-tool/
Skonfiguruj aplikację iOS (Włączanie łączy uniwersalnych)
Konfiguracja po stronie aplikacji wymaga dwóch rzeczy:
- Konfigurowanie uprawnień aplikacji i włączanie łączy uniwersalnych poprzez włączenie w projekcie możliwości skojarzonych domen.
- Obsługa linków przychodzących w
AppDelegate
.
1. Konfigurowanie uprawnień aplikacji i włączanie uniwersalnych linków.
Pierwszym krokiem w konfiguracji uprawnień aplikacji jest włączenie jej identyfikatora aplikacji. Zrób to w Centrum dla programistów Apple. Kliknij Certyfikaty, identyfikatory i profile, a następnie Identyfikatory. Wybierz identyfikator aplikacji (w razie potrzeby utwórz go najpierw), kliknij Edytuj i włącz uprawnienie Powiązane domeny.
Następnie uzyskaj prefiks i sufiks identyfikatora aplikacji, klikając odpowiedni identyfikator aplikacji.
Prefiks i sufiks identyfikatora aplikacji powinny być zgodne z tym w pliku skojarzenia apple-app-site-site.
Następnie w Xcode
wybierz cel aplikacji, kliknij Możliwości i przełącz Powiązane Domeny na Wł. Dodaj wpis dla każdej domeny obsługiwanej przez aplikację, poprzedzony linkami do aplikacji:
Na przykład applinks: YourCustomDomainName.com
Który wygląda tak dla przykładowej aplikacji:
Uwaga : Upewnij się, że wybrałeś ten sam zespół i wprowadziłeś ten sam identyfikator pakietu, co zarejestrowany identyfikator aplikacji w Centrum dla członków. Upewnij się również, że plik uprawnień jest dołączany przez Xcode, wybierając plik i w Inspektorze plików, upewnij się, że cel jest zaznaczony.
2. Obsługa linków przychodzących w AppDelegate
Wszystkie przekierowania z Safari do aplikacji dla linków uniwersalnych przechodzą przez poniższą metodę w klasie AppDelegate aplikacji. Przetwarzasz ten adres URL, aby określić właściwą akcję w aplikacji.
[UIApplicationDelegate application: continueUserActivity: restorationHandler:]
Cel 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;
}
Szybki:
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
//handle url
}
return true
}
Kod aplikacji na iOS
Kod aplikacji można znaleźć tutaj .