2013-09-06 65 views
5

Mam aplikację internetową i na Androidzie chcę wyświetlić alert opisujący sposób dodania mojej aplikacji do ekranu głównego. (Dodaj go do "Zakładek", a następnie "Dodaj do ekranu głównego" lub "Dodaj do skrótu w domu"). Wtedy na ekranie wyświetli się ikona, która otwiera moją aplikację.Sprawdź, czy aplikacja internetowa jest dodana do ekranu głównego na Androidzie

Ale oczywiście chcę to pokazać, jeśli aplikacja nie jest dodana do ekranu głównego.

Czy ktoś wie, jak to zrobić? Wszelkie dane wejściowe są mile widziane, dziękuję.

+0

Ten link może Cię interesować: https://github.com/w3c/manifest/issues/417. – Marco

Odpowiedz

-1

najpierw uzyskać listę aplikacji na urządzeniu

List<ApplicationInfo> packs = pm.getInstalledApplications(0); 

następnie użyć getLaunchIntentForPackage()

Teraz masz listę pakietów zainstalowanych w urządzeniu, iterację nich i wywołaj getLaunchIntentForPackage() na każdym elemencie .

Jeśli zwróci się prawidłową intencję, istnieje ona w Launcherze, w przeciwnym razie po zwróceniu wartości zerowej pakiet nie zostanie uruchomiony z ekranu Launchera. Skróty ekranu głównego są podzbiorem aplikacji Launcher.

+0

Dzięki, Ahmed. Czy będę mieć promisję na otrzymanie pm.getInstalledApplications (0); z mojej aplikacji internetowej? Wygląda na to, że jest to natywna Java lub? –

+0

Nie jestem pewien, jak to zrobić –

+0

Nie możesz tego zrobić na stronie internetowej. – Marco

2

Krótka odpowiedź brzmi: z witryny internetowej, której nie można.

Dłuższa odpowiedź: ze strony internetowej możesz uzyskać podpowiedź w Chrome.

Chrome na Androida dwie nowe funkcje 1) Web App Manifest opisujący co należy rozpocząć od home screen and how it should look on the homescreen i 2) Chrome ma teraz zdarzenie beforeinstallprompt które wyzwoli dla aplikacji internetowych, które uważamy za app-podobne i może być zainstalowany na ekranie głównym.

Istnieje kilka kryteriów dla zdarzenia onbeforeinstallprompt do ognia, które mogą sprawić, że będzie to "ok" heurystyczne (choć podejrzewam, że nie).

zdarzenie tylko pożary, jeżeli:

  • Witryna ma manifestu, jest https i ma pracownika serwisu. (może to być dość rozciągliwe).
  • Użytkownik wielokrotnie współpracował z witryną (teraz, dwa razy w ciągu co najmniej 5 minut).
  • Użytkownik nie dodał jeszcze Twojej witryny do ekranu głównego.

Podsumowując, jest złożony i pełen fałszywych trafień i fałszywych negatywów. Jeśli jednak wszystko, co chcesz zrobić, to wykryć, czy powinieneś wyświetlić baner, aby zachęcić użytkownika do dodania aplikacji internetowej do ekranu głównego, a Chrome już ma rozwiązanie dla Ciebie.

Posiadamy również pełną ofertę samples on our samples site.

2

Tak, możesz.

Chociaż strona otwarta na karcie przeglądarki Chrome nie może bezpośrednio sprawdzić, czy istnieje skrót ekranu głównego, dane lokalne strony (localStorage, IndexedDB) są udostępniane między instancją ekranu głównego i kartami przeglądarki, dzięki czemu można z nich korzystać informują o istnieniu wersji ekranu głównego.

  1. wykryć, czy aplikacja działa z ekranu głównego
  2. Jeśli to trwał od ekranu głównego, zapisać ten fakt do localStorage
  3. Profit! (Czytając to od localStorage w każdej karcie)

Gdy aplikacja jest w autonomicznym widzenia (co jest możliwe tylko wtedy, gdy uruchomiony z ekranu głównego), zapytanie mediów CSS (display-mode: standalone) będzie pasował. W JavaScript można go odczytać za pomocą:

matchMedia('(display-mode: standalone)').matches 

(BTW: niestandardowa iOS odpowiednikiem tego jest navigator.standalone, ale nie podziela iOS stan pomiędzy ekranie głównym i Safari, więc masz pecha tam).

Jednak zamiast niestandardowych instrukcji sugeruję spełnienie kryteriów Chrome dotyczących "progresywnej aplikacji internetowej" i pozwól Chrome wykonać monit.

0

Myślę, że możesz to zrobić. Po prostu dodaj ciąg zapytania do start_url w pliku manifest.json i sprawdź w javascript, czy adres początkowy zawiera ten ciąg zapytania. Jeśli łańcuch zapytania zostanie znaleziony, to zainstalowana jest ta aplikacja.