Czy istnieje sposób sprawdzenia, czy schemat URL jest aktualnie zarejestrowany na telefonie ... z javascript?Sprawdź, czy schemat URL jest obsługiwany w javascript
Odpowiedz
Nie, nie ze strony internetowej.
Pomyślałem, że przypomniałem sposób, w jaki aplikacje mogą to sprawdzić, ale prawdopodobnie jestem w błędzie. –
Dzięki za szybką odpowiedź. O ile z natywnego kodu, jest to możliwe przez openUrl: sprawdzić, więc czytałem ... nie testowałem –
@Brent Royal-Gordon: Nie. Natywna aplikacja na iPhone'a może sprawdzić dzwoniąc ** canOpenURL: **. –
Nie płynnie. Ale istnieje sposób podobny do sprawdzania, czy wyskakujące okienko zostało zablokowane, czy nie.
Po wypróbowaniu schematu URL, który nie jest obsługiwany, Safari ostrzega użytkownika, że nie wie, co z nim zrobić i pozostać na tej samej stronie.
Więc jeśli dałeś swojej aplikacji czas na aktywację, powiedzmy 300 ms, a następnie zrób coś innego, aby odpowiedzieć na nieistnienie schematu.
To nie jest najładniejszy, ale to działa:
function startIThrown(){
document.location = 'ithrown://restart';
setTimeout(function(){
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}, 300);
}
<a href="#" onclick="startIThrown()">Restart iThrown</a>
ładne obejście :) –
Warto było spróbować, ale w rzeczywistości jest to dość nieprzyjemne rozwiązanie. Ta funkcja jest wywoływana, nawet jeśli schemat URL przechodzi po powrocie na stronę. Dzięki temu użytkownik otrzymuje powiadomienie bez względu na wszystko. Albo 1 albo 2, w zależności od tego, czy jego urządzenie obsługuje schemat. – samvermette
@samvermette Istnieje pół-skomplikowane obejście. Jeśli działa schemat adresu URL, aplikacja powinna przesłać potwierdzenie na serwer. Następnie, po powrocie do aplikacji, poproś serwer o wykonanie polecenia ping, aby sprawdzić, czy aplikacja została pomyślnie otwarta. Skomplikowane, ale wykonalne. – Amir
Oto rozwiązanie, które nie pokazuje okienko po powrocie z aplikacji, to zakłada, kiedy cię nie ma dłużej niż 400 ms:
function startiThrown() {
document.location = appurl;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now - time)<400) {
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}
}, 300);
}
Wystąpił problem, w którym zmienna "teraz" w tym rozwiązaniu jest błędna. Możemy odczekać kilka minut w aplikacji, wrócić do przeglądarki i uzyskać potwierdzenie. Wygląda na to, że proces hibernacji jest błędny. – JoshNaro
Oto odmiana dwóch poprzednich rozwiązań. Utworzy on link, który można otworzyć w Google Chrome. Jeśli to się nie powiedzie to otwiera link za pomocą protokołu HTTP
<script>
function checkChrome(h){
document.location=h;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now-time)<400) {
if(confirm('Missing Chrome. Download it now?')){
document.location = 'http://itunes.apple.com/us/app/chrome/id535886823?mt=8';
} else {
document.location=h.replace('googlechrome','http');
}
}
}, 300);
}
</script>
<a href="googlechrome://www.google.com" onclick="checkChrome(this.href);return false;">Open Google with Chrome</a>
Kolejny świetny (przynajmniej działa w najnowszych wersjach przeglądarek) obejście jest aby sprawdzić, czy okno przeglądarka ma koncentrować się po krótkim limitu czasu, w ten sposób można pokazać okno dialogowe dla użytkownika tylko wtedy, gdy schemat URI nie działa
HTML:
<a class="uri-link" data-uri="qobuzapp://" href="#">URI</a>
Javascript (jQuery tutaj):
var windowHasFocus;
$(window).focus(function() {
windowHasFocus = true;
}).blur(function() {
windowHasFocus = false;
});
function goToUri(uri) {
window.location = uri;
setTimeout(function(){
if (windowHasFocus) {
if (confirm('You do not seem to have Qobuz installed, do you want to go download it now?')){
window.location = 'http://www.qobuz.com';
}
}
}, 100);
}
$('a').on('click', function(){
goToUri($(this).data('uri'));
});
Oto pracuje jsFiddle, wystarczy zaktualizować go z własnego schematu URI: http://jsfiddle.net/mF6TZ/
jsfiddle jest martwe – jcesarmobile
znalazłem pagehide
zdarzenie jest bardziej wytrzymała niż w zależności od czasu systemowego. Dla tych z nas, którzy wolą przysługę nie jQuery, tutaj jest fragment.
var appurl = 'custom://url';
var appstore = 'https://itunes.apple.com/us/app/your-app';
var timeout;
function preventPopup() {
clearTimeout(timeout);
timeout = null;
window.removeEventListener('pagehide', preventPopup);
}
function startApp() {
window.location = appurl;
timeout = setTimeout(function(){
if(confirm('You do not seem to have the App installed, do you want to go download it now?')){
document.location = appstore;
}
}, 1000);
window.addEventListener('pagehide', preventPopup);
}
Począwszy od wersji 6.0 iOS firmy Apple przedstawił inteligentnych aplikacji Banery który robić to, co większość z nas szuka:
- Wyślij do App Store, jeśli aplikacja nie jest zainstalowana.
- Otwórz aplikację z konkretnym precyzyjnym łączem, używając parametru aplikacji-argumentu.
Dołącz następujący meta tag:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
podjętą stąd: Safari Web Content Guide
Mam ten komentarz https://stackoverflow.com/a/18715513/49114 z jQuery plugin do dodawania alternatywnego linku aplikacji do regularnych połączeń.
Wtyczka nie rozwiązuje problemu z alertem, gdy NIE masz zainstalowanej aplikacji – Magico
Próbuję użyć tylko zdarzenia "pagehide", ale nie działa ono w przeglądarce Firefox. Stworzyłem tę wersję tutaj http://jsfiddle.net/thiagomata/6tvoc4f1/2/ co działa w Firefoksie, Google Chrome i Safari. Nie testowałem jeszcze w Internet Explorerze.
Jedną z rzeczy koniecznych do uruchomienia Firefoksa było użycie Iframe do ustawienia src. Dzięki temu mogę zadzwonić do aplikacji bez opuszczania mojej strony.
<a class="uri-link" href="#"
data-uri-app="myapp://"
data-url-app-not-found="http://www.google.com?q=not-found-link"
>
Example 1
</a>
<a class="uri-link" href="#"
data-uri-app="myapp://"
data-url-app-not-found="http://www.google.com?q=not-found-link"
data-url-app-found="http://www.google.com?q=found-link"
>
Example 2
</a>
<a class="uri-link" href="#"
data-uri-app="notexists://"
data-url-app-not-found="http://www.google.com?q=not-exists"
>
Example 3
</a>
<iframe id="callapp" style="display:none"></iframe>
fajna koncepcja. mimo że aplikacja nie występuje nigdy. Nawet jeśli aplikacja jest zainstalowana (próbowałem instagram: // app), uruchamia ona ignorowaną aplikację. –
Czy próbowałeś zwiększyć czas oczekiwania? Zmień wartość w linii 95 z 1000 na 9000 (tylko dla zabawy) i powiedz mi, co się stanie. –
Jest to oparte na odpowiedzi mrahmana. Jak zauważono, JoshNaro new Date() zwraca niewłaściwą datę, gdy zostanie wywołana w limicie czasu. Testy sugerują, że data nie jest aktualizowana w wątkach, które są uruchamiane przed dezaktywacją aplikacji.
Kolejny nieprzyjemny setTimeout wywołany po aktywacji utworzy nowy wątek z bieżącą datą.
ten był testowany na iOS 8.
function startiThrown() {
document.location = appurl;
var time = (new Date()).getTime();
setTimeout(function(){
setTimeout(function(){ // <-- start new thread after activation
var now = (new Date()).getTime();
if((now - time)<400) {
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}
}, 10); // <-- start new thread after activation
}, 300);
}
- 1. JavaScript - wykrywanie, czy lister zdarzeń jest obsługiwany
- 2. Sprawdź, czy zmienna jest zdefiniowana w javascript?
- 3. Sprawdź, czy ciąg znaków jest adresem URL
- 4. Sprawdź, czy URL w domenie krzyżowej daje 404 z javascript
- 5. Czy JSON.stringify() jest obsługiwany przez IE 8?
- 6. Sprawdź, czy data jest przeszłością JavaScript
- 7. Czy duży kodek jest obsługiwany?
- 8. Czy Spel jest obsługiwany w instrukcjach importu?
- 9. Sprawdź, czy adres URL jest prawidłowy, czy nie.
- 10. Czy można otworzyć niestandardowy schemat URL w przeglądarce Google Chrome?
- 11. Sprawdź w JavaScript, czy certyfikat SSL jest ważny.
- 12. Sprawdź, czy Facebook jest zablokowany następnie przekierować
- 13. Sprawdź, czy intencja jest dostępna.
- 14. Sprawdź, czy alert jest wyłączony.
- 15. Sprawdź, czy UIWebView jest ładowany
- 16. JavaScript: Sprawdź, czy istnieje classname
- 17. Schemat adresu URL dla Linkedin
- 18. Sprawdź, czy mongoDB jest podłączony
- 19. Sprawdź, czy wartość istnieje w obiekcie JavaScript
- 20. Sprawdź, czy przeglądarka jest zajęta
- 21. Sprawdź datę w JavaScript
- 22. Sprawdź, czy adres URL ma przedrostek http: //
- 23. Sprawdź, czy jest fałsz.
- 24. Sprawdzanie, czy adres URL jest uszkodzony w JavaScript
- 25. Interfejs API internacjonalizacji Javascript nie jest obsługiwany przez PhantomJS
- 26. Sprawdź, czy jedna data jest pomiędzy dwoma datami (javascript)
- 27. Jaki jest schemat adresów URL aplikacji map iOS 6.0?
- 28. Czy w JavaScript istnieje klasa adresu URL?
- 29. Sprawdź, czy obiekt jest pusty z JavaScript/jQuery
- 30. Schemat sterty zrzutów V8 JavaScript
znalazłem rozwiązanie zamieszczone tutaj pracować o wiele lepiej: http://stackoverflow.com/questions/6964515/launching-app-or- app-store-from-safari – portforwardpodcast