2013-03-25 16 views
6

Czy jest możliwe uruchomienie aplikacji przy użyciu adresu URL wysłanego pocztą? Na przykład mam profil użytkownika, który chce zaprosić przyjaciela do aplikacji. Wysyłają e-mail, który ma jakąś url podobny:Przekierowanie na iOS z poczty do aplikacji

dołączyć do mnie poprzez ten link: http://appname?sender_id=25&some_other_value=something

i otwarcie, że link z iPhone przyniesie użytkownika do aplikacji i pozwolił mi analizować te wartości.

Czy to możliwe?

+3

Tak, nazywa się to [schemat niestandardowego adresu URL] (http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW50). – ceejayoz

+0

@ceejayoz Dzięki, opublikuj jako odpowiedź, a ja to zaakceptuję. – Eugene

+0

@Eugene Mam do czynienia z tym samym problemem. Czy możesz mi powiedzieć, jak rozwiązałeś? Mam rozwiązanie Lefteris, ale w jaki sposób mogę przekierować z Safari do aplikacji? Gdzie można wywołać ten plik .html? – Krunal

Odpowiedz

18

Tak, jest to całkowicie możliwe. Musisz zarejestrować schemat URL dla swojej aplikacji.

Wybierz projekt aplikacji w Xcode, kliknij cel, a na karcie Informacje zarejestruj nowy schemat URL.

Identyfikator jest Twój identyfikator aplikacji jak com.company.AppName i schemat URL jest nazwą chcesz używać, jak appName

Teraz jako idealnego rozwiązania, jak jesteśmy dodając to teraz do naszej aplikacji , najlepiej NIE wysyłać linków w wiadomości e-mail przy użyciu własnego schematu. Powodem jest to, że użytkownik może otworzyć go z komputera, więc ten link nie będzie działał.

Najlepszy scenariusz jest następujący:

  1. Gdy aplikacja jest uruchamiany po raz pierwszy, otwarty od withing aplikacja przeglądarkę Safari i wysłać go na swojej stronie.
  2. W witrynie, należy zainstalować plik cookie dla Safari (jak myAppIsInstalled)
  3. W tej samej stronie, kick użytkownika z powrotem do aplikacji, po prostu przekierowanie go do swojej aplikacji z niestandardowego schematu URL, jak appname://

teraz możesz wysłać w wiadomości e-mail z łączy z normalną URL linkujące do swojej stronie i tu część 2:

  1. w swojej stronie sprawdzić, czy jest zainstalowana aplikacja (plik cookie jest obecny)
  2. Jeśli jest obecny, zamiast otworzyć odnośnik na swojej witrynie, przekierować użytkownika do aplikacji, z odpowiednimi wartościami, jak

    appname: // skrzynki sender_is = 123 & nazwa_użytkownika = Lefteris

gwarantuje linki e-mail zawsze będzie działać i że można otworzyć z Mobile Safari linki tylko wtedy, gdy aplikacja została zainstalowana na urządzeniu ...

Wreszcie, tylko uwaga, schemat URL jest appname:// i nie http://appname

Teraz wyjaśnić część 1 lepszy w naszym AppDelegate, możemy to zrobić w delegata - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions:

//if user has not set the app installed cookie, set it now. 
bool hasAppInstalledCookie = [[NSUserDefaults standardUserDefaults] boolForKey:@"appInstalledCookie"]; 
if (!hasAppInstalledCookie) { 
    //mark it was set 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"appInstalledCookie"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    //open the web browser 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.myApp.com/appInstalled"]]; 
} 

Teraz w naszej appInsalled stronie (indeks.html na przykład), po prostu ustawić cookies (dowolną nazwę pliku cookie chcemy) potem kopać użytkownika z powrotem do naszej aplikacji tak:

<script type="text/javascript"> 
    window.location = 'appName://'; 
</script> 

Powodem używamy plików cookie, jest użycie tego cookie , gdy użytkownik otworzy link e-mail. Sprawdzimy, czy przeglądarka jest mobilna w Safari ORAZ czy plik cookie jest zainstalowany. W ten sposób wiemy, że użytkownik zainstalował naszą aplikację, a przekierowanie będzie działać poprawnie.

+0

Dzięki, zrobię tylko to, – Eugene

+0

@Lefteris: Dzięki za dobrą odpowiedź. Nie zrozumiałem całkowicie kroku 1 w części 1. Czy możesz opracować więcej? – nkongara

+0

Chodzi o to, że chcemy dodać plik cookie do mobilnej przeglądarki Safari. Ma to na celu sprawdzenie, czy użytkownik zainstalował naszą aplikację. Redaguję moje pytanie, aby wyjaśnić więcej, – Lefteris

2

Zaznaczona powyżej odpowiedź jest poprawna i działa dobrze. Jednak w systemie iOS 9 firma Apple wprowadziła numer Universal Links, który umożliwia powiązanie konkretnej domeny internetowej lub łącza internetowego (ścieżki) z aplikacją. Ułatwia to przekierowanie do Twojej aplikacji, jeśli aplikacja jest zainstalowana lub przekierowuje na twoją stronę internetową, jeśli aplikacja nie jest.

Należy pamiętać, że w przypadku urządzeń, które wciąż mają starszą wersję systemu iOS (wcześniej system iOS 9), może nadal być wymagane wsparcie identyfikatora URI schematu (ewentualnie z awarią dla linków URL, jeśli aplikacja nie jest zainstalowana jak here).

Udokumentowałem swoje doświadczenia z Universal Links here, jeśli ktokolwiek jest zainteresowany.

Powiązane problemy