Szukaj…


Uwagi

  1. 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.
  2. Zasadniczo każde obsługiwane łącze kliknięte w Safari lub w instancjach UIWebView / WKWebView powinno otworzyć aplikację.
  3. W systemie iOS 9.2 i nowszym będzie to działać tylko na urządzeniu. iOS 9.3 obsługuje również symulator.
  4. 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:

  1. Konfigurowanie uprawnień aplikacji i włączanie łączy uniwersalnych poprzez włączenie w projekcie możliwości skojarzonych domen.
  2. 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 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow