Uruchamianie aplikacji lub app store z Safari?
Wiem już, jak uruchomić aplikację z safari, ale czy można sprawdzić, czy aplikacja jest zainstalowana przed uruchomieniem? Myślę, aby uruchomić app store, jeśli aplikacja nie jest obecnie zainstalowana na iPhonie.
4 answers
Nie można sprawdzić, czy aplikacja jest zainstalowana ze strony internetowej. Możesz to zrobić wewnątrz innej aplikacji, sprawdzając, czy schemat url można otworzyć za pomocą metody UIApplication-canOpenURL:, ale nie ma javascript równoważny do tego.
Można jednak zastosować następujące obejście:
<script language="javascript">
function open_appstore() {
window.location='http://itunes.com/';
}
function try_to_open_app() {
setTimeout('open_appstore()', 300);
}
</script>
<a onClick="javascript:try_to_open_app();" href="yourappurl:">App name</a>
Ten kod ustawi limit czasu na łączu, który wywoła funkcję open_appstore, jeśli ten limit czasu się skończy. Ponieważ łącze jest skierowane na niestandardowy adres URL aplikacji, Safari spróbuje otworzyć ten link i jeśli to możliwe, otworzy aplikację i zatrzyma timer, więc Link AppStore nie zostanie otwarty.
Jeśli link do aplikacji nie może zostać otwarty, gdy skończy się czas, wyświetli wyskakujące okienko błędu z informacją, że nie może otworzyć strony (nie można się tego pozbyć), ale natychmiast przejdzie do AppStore i odrzuci ten błąd.
IOS 9 dodaje naprawdę fajną funkcję, która pozwala aplikacji otworzyć adres URL http / s: Universal Links
W iOS 10 jest wyskakujące okienko z napisem "Otwórz w [Nazwa aplikacji] " Po dotknięciu łącza i zainstalowaniu aplikacji. Jeśli użytkownik nie dotknie "Open " w podanym timeout
, To rozwiązanie użyje opcji awaryjnej.
Ponieważ 300ms jest zbyt krótki, aby cokolwiek dotknąć, To rozwiązanie zawsze zawodzi na iOS 10.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 14:56:10
To działało dla mnie z podobną sytuacją: w którym chciałem otworzyć aplikację gmaps, jeśli była obsługiwana - w przeciwnym razie przejdź do strony gmap bezpośrednio.
function mapLink(addy) {
addy = encodeURIComponent(addy);
var fallback = 'http://maps.google.com/?q=' + addy
, link = 'comgooglemaps://?q=' + addy;
try {
document.location = link;
} catch(err) {
document.location = fallback;
}
}
Wygląda na to, że działa całkiem dobrze dla mojego przypadku użycia.
Aktualizacja: Jeśli chcesz zrobić nowe okno w trybie awaryjnym, nadal pozwala to na wyświetlenie komunikatu o błędzie ios. Aby go obejść, spróbuj tego.
try {
document.location = link;
} catch(err) {
window.location.reload(true);
window.open(fallback, '_blank');
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 14:30:10
Rozwiązanie od Apple:
Z Dokumentacji Apple
Jeśli aplikacja jest już zainstalowana na urządzeniu użytkownika, baner inteligentnie zmienia swoją akcję, a stuknięcie w baner po prostu otworzy aplikację. Jeśli użytkownik nie ma twojej aplikacji na swoim urządzeniu, dotknij banera przeniesie go do wpisu aplikacji w App Store. Po powrocie na Twoją stronę pojawi się pasek postępu w banerze, wskazujący, jak długo trwa pobieranie. Gdy aplikacja zostanie pobrana, przycisk Widok zmieni się na przycisk Otwórz, a stuknięcie w baner otworzy aplikację, zachowując kontekst użytkownika z witryny.
Banery aplikacji Smart automatycznie określają, czy aplikacja jest obsługiwana na urządzeniu użytkownika. Jeśli urządzenie ładuje baner nie obsługuje aplikacji lub jeśli aplikacja nie jest dostępna w lokalizacji użytkownika, baner nie zostanie wyświetlony.
Aby dodać baner Smart App do naszej strony, umieść następujący meta tag w nagłówku każdej strony, na której ma się pojawić baner:
Uwaga: możemy również przekazać app-argument: like myName, itd.,
Sprawdź, czy dostarczanie kontekstu Nawigacyjnego do nagłówka aplikacji w na tej stronie
Aktualizacje:
1. Po zamknięciu banera, który się wyświetla, nie będzie on wyświetlany ponownie, nawet jeśli masz ten meta tag w naszym html.
2. Aby zresetować, uruchom aplikację Ustawienia, a następnie przejdź do Ogólne>Resent>Resetuj wszystkie ustawienia
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 05:20:08
Możesz po prostu odczytać wartość zwracaną z metody -(BOOL)OpenURL:(nsurl) url*, jeśli nie, oznacza to, że aplikacja docelowa nie jest zainstalowana. Poniższy kod daje przykład użycia schematu URL navigon:
NSString *stringURL = @"navigon://coordinate/NaviCard/19.084443/47.573305";
NSURL *url = [NSURL URLWithString:stringURL];
if([[UIApplication sharedApplication] openURL:url]) {
NSLog(@"Well done!");
} else {
stringURL = @"https://itunes.apple.com/it/app/id320279293?mt=8";
url = [NSURL URLWithString:stringURL];
[[UIApplication sharedApplication] openURL:url];
}
Podziękowania dla zsen za korektę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-30 13:50:39