iOS
Głębokie linkowanie w iOS
Szukaj…
Uwagi
Przydatna dokumentacja Apple z przykładami i wyjaśnieniami.
Otwieranie aplikacji na podstawie schematu URL
Aby otworzyć aplikację ze zdefiniowanym schematem URL todolist://
:
Cel C
NSURL *myURL = [NSURL URLWithString:@"todolist://there/is/something/to/do"];
[[UIApplication sharedApplication] openURL:myURL];
Szybki
let stringURL = "todolist://there/is/something/to/do"
if let url = NSURL(string: stringURL) {
UIApplication.shared().openURL(url)
}
HTML
<a href="todolist://there/is/something/to/do">New SMS Message</a>
Uwaga: Przydatne jest sprawdzenie, czy link można otworzyć, aby w inny sposób wyświetlić odpowiednią wiadomość dla użytkownika. Można to zrobić za pomocą metody
canOpenURL:
Dodanie schematu URL do własnej aplikacji
Załóżmy, że pracujesz nad aplikacją o nazwie MyTasks
i chcesz zezwolić, aby przychodzące adresy URL tworzyły nowe zadanie z tytułem i MyTasks
. Zaprojektowany adres URL może wyglądać mniej więcej tak:
mytasks://create?title=hello&body=world
(Oczywiście parametry text
i body
służą do wypełnienia naszego zadania, które tworzymy!)
Oto wielkie kroki do dodania tego schematu URL do swojego projektu:
- Zarejestruj schemat adresów URL w pliku
Info.plist
aplikacji, aby system wiedział, kiedy skierować adres URL do aplikacji. - Dodaj funkcję do
UIApplicationDelegate
która akceptuje i obsługuje przychodzące adresy URL. - Wykonaj dowolne zadanie, które musi się pojawić po otwarciu tego adresu URL.
Krok pierwszy: Zarejestruj schemat adresów URL w Info.plist:
Najpierw musimy dodać wpis „Typy adresów URL” do naszego pliku Info.plist. Kliknij przycisk (+) tutaj:
... a następnie wprowadź unikalny identyfikator aplikacji oraz schemat adresu URL, którego chcesz użyć. Być specyficznym! Nie chcesz, aby schemat URL kolidował z implementacją innej aplikacji. Lepiej tu być za długo niż za krótko!
Krok drugi: Obsługa adresu URL w UIApplicationDelegate
Musimy wdrożyć application:openURL:options:
na naszej UIApplicationDelegate
. Sprawdzimy przychodzący URL
i sprawdzimy, czy możemy podjąć jakieś działanie!
Jedno wdrożenie byłoby następujące:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if url.scheme == "mytasks" && url.host == "create" {
let title = // get the title out of the URL's query using a method of your choice
let body = // get the title out of the URL's query using a method of your choice
self.rootViewController.createTaskWithTitle(title, body: body)
return true
}
return false
}
Krok trzeci: Wykonaj zadanie w zależności od adresu URL.
Gdy użytkownik otwiera aplikację za pomocą adresu URL, prawdopodobnie spodziewał się, że coś się wydarzy. Może to przejście do fragmentu treści, może to tworzenie nowego elementu - w tym przykładzie utworzymy nowe zadanie w aplikacji!
W powyższym kodzie możemy zobaczyć wywołanie self.rootViewController.createTaskWithTitle(:body:)
- więc zakładając, że twoja AppDelegate
ma wskaźnik do kontrolera widoku głównego, który poprawnie implementuje funkcję, wszystko gotowe!
Konfigurowanie precyzyjnego linku do aplikacji
Konfiguracja precyzyjnego linkowania dla Twojej aplikacji jest łatwa. Potrzebujesz tylko małego adresu URL, za pomocą którego chcesz otworzyć aplikację.
Postępuj zgodnie z instrukcjami, aby skonfigurować precyzyjne linkowanie dla swojej aplikacji.
Stwórzmy projekt i nazwijmy go DeepLinkPOC.
Teraz wybierz cel projektu.
Po wybraniu celu wybierz kartę „Informacje”.
Przewiń w dół, aż zobaczysz opcję Typy adresów URL
Kliknij opcję „+”.
Zobaczysz schematy URL dodające ciąg, za pomocą którego chcesz otworzyć aplikację. Dodaj schematy „ DeepLinking ” do schematów URL.
Aby otworzyć aplikację, możesz ją uruchomić, wpisując w swoim safari „DeepLinking: //” . Łańcuch precyzyjnego linkowania ma następujący format.
[scheme]://[host]/[path] --> DeepLinking://path/Page1
gdzie, Schemat: „DeepLinking” Host: „ścieżka” ścieżka: „Strona1”
Uwaga : nawet jeśli nie dodasz hosta i ścieżki, uruchomi aplikację, więc nie martw się, ale możesz dodać hosta i ścieżkę, aby dodatkowo przekierowywać na określoną stronę po uruchomieniu aplikacji.
- Teraz dodaj następującą metodę do swojej aplikacji.
Szybki:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
Cel C:
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
Powyższa metoda jest wywoływana za każdym razem, gdy twoja aplikacja jest uruchamiana za pomocą łańcucha precyzyjnego ustawionego dla Twojej aplikacji.
- Teraz jest czas na zainstalowanie aplikacji, ale poczekaj, zanim przejdziesz bezpośrednio do przycisku uruchamiania. Zróbmy małą zmianę w metodzie uruchamiania aplikacji w schemacie.
- Wybierz i edytuj swój schemat jako
Teraz kliknij przycisk Uruchom (jeśli chcesz, możesz dodać punkt przerwania do metod didFinishLaunchingWithOptions i metod openURL, aby obserwować wartości)
Zobaczysz komunikat „Oczekiwanie na uruchomienie DeepLinkPOC (lub nazwy aplikacji)”.
Otwórz safari i wpisz „ DeepLinking: // ” w pasku wyszukiwania, wyświetli się monit „otwórz tę stronę w DeepLinkPOC” kliknij otwórz, aby uruchomić aplikację.
Mam nadzieję, że wiesz, jak skonfigurować precyzyjne linki do swojej aplikacji :)