2009-09-21 13 views
16

Mam aplikację, która będzie wyświetlać strony internetowe w UIWebView. Wyświetlane strony mogą zawierać łącza do innych aplikacji iPhone'a w App Store.Niezawodnie otwierając linki do App Store z UIWebView

W normalnej przeglądarce na komputerze stacjonarnym kliknięcie tych linków w App Store przeprowadziłoby mnie przez szereg przekierowań adresów URL i ostatecznie skończyło się otwieraniem iTunes i przenoszeniem mnie na stronę tej aplikacji.

Czy istnieje sposób, aby upewnić się, że po kliknięciu linku App Store w moim interfejsie UIWebView otworzy się aplikacja App Store na iPhonie i pokaże się aplikacja?

co ja widząc w moich badań jest to, że istnieje kilka rodzajów połączeń, które mogą prowadzić do strony App Store, ci samopoczucie:

  • Fobos linki - phobos.apple.com/etc etc etc
  • itunes.com/app/appname linki
  • referral/affiliate łączy
  • dowolny że nie wiem od

Kiedy mogę otworzyć y tych linków w przeglądarce na pulpicie będą działać i ostatecznie otworzą iTunes. Kiedy otworzyć dowolny z tych linków z poziomu iPhone UIWebView przechodzi liczby przekierowań i ostatecznie jedna z dwóch rzeczy się wydarzy:

  • przekierowania nie działają prawidłowo i skończyć ze stroną zrobił nie można załadować wywołania metody
  • Przekierowania działają, a aplikacja iTunes jest otwarta, wyszukiwanie nazwy aplikacji jest zakończone, a następnie dostaję wiadomość z iTunes wyjaśniającą, że nie może połączyć się ze sklepem.

Jedyny raz, gdy udało mi się otworzyć aplikację App Store, to bezpośredni link do aplikacji iTunes bez żadnego skierowania lub przekierowania.

Oczywiście w przypadku linków polecających lub partnerskich nie chcę usuwać identyfikatora polecającego ani identyfikatora podmiotu stowarzyszonego. Nie powinienem ich pozbawić skierowania, jeśli kliknięto na ich link.

Tak więc jakakolwiek pomoc byłaby bardzo ceniona.

Dzięki.

Odpowiedz

13

Znalazłem Technical Q&A firmy Apple, która odpowie na moje pytanie:

Podstawowa istota jest taka: linki

phobos.apple.com prawidłowo skonstruowane przekierowuje bezpośrednio do aplikacji App Store. Linki itunes.apple.com muszą zostać przekonwertowane na linki fobo. łącza polecające/partnerskie muszą być wykonywane za pomocą NSURLConnection, a końcowy wynikowy URL będzie linkiem do phobo, który może być używany.

Dzięki za pomoc dla facetów.

3

Na moich testach otrzymałem tylko phobos.apple.com linki do automatycznego przekierowania do AppStore (bez żadnego przekierowania Safari).

1

Jeśli jeszcze tego nie przetestowano na rzeczywistym urządzeniu, mogę powiedzieć, że iPhone Simulator ma problemy z przekierowaniem tych linków do App Store (prawdopodobnie dlatego, że Symulator go nie ma). Uruchamianie aplikacji na urządzeniu spowoduje różne zachowania w tym konkretnym obszarze, więc upewnij się, że tam go testujesz.

+0

Nigdy nie testuję w symulatorze ... naprawdę nie ma sensu. Zawsze testuj na urządzeniu. – Jasarien

1

Próbowałem zrobić to samo. Chciałem umieścić link do pełnej wersji mojej aplikacji w darmowej wersji. Właśnie potwierdziłem, że metoda zastosowana w dokumencie działa. TYLKO na rzeczywistym urządzeniu. Nigdy nie ufaj symulatorowi!

Dodaj materiał w the document i nazwać tak:

NSString *testLink = @"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284417350&mt=8"; 

self.iTunesLink = [NSURL URLWithString:testLink]; 

[self openReferralURL:iTunesLink]; 
2

Dodawanie do developer documentation, myślę, że powinny one mieć przypadek, gdy redirectResponse jest nil. Zajęło mi trochę czasu, aby dowiedzieć się, co było nie tak.

// Save the most recent URL in case multiple redirects occur 
// "iTunesURL" is an NSURL property in your class declaration 
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response { 
    if (response) { 
     self.iTunesURL = [response URL]; 
    } 
    else { 
     self.iTunesURL = [request URL]; 
    } 

    return request; 
} 
Powiązane problemy