2017-02-06 18 views
17

Z powodu this bug mój zespół decyduje się nie korzystać w ogóle z geofence. Czy geofencing w Androidzie jest przydatny, czy nie?Czy korzystanie z geofencing jest całkowicie nieopłacalne w systemie Android?

Z raportu o błędzie:

Na wszystkich w domu urządzeń testowych wszystko działa poprawnie z debugowania i uwolnienie buduje. Jednak dla niektórych użytkowników tam dostajemy raporty o awariach które wskazują na problem z API:

Fatal Exception: java.lang.SecurityException: Invalid API Key for package = de.stocard.stocard .Status code received = -1 
     at android.os.Parcel.readException(Parcel.java:1620) 
     at android.os.Parcel.readException(Parcel.java:1573) 
     at com.google.android.gms.common.internal.zzu$zza$zza.zza(Unknown Source) 
     at com.google.android.gms.common.internal.zzd.zzqz(Unknown Source) 
     at com.google.android.gms.internal.zzpw$zzc.zzapl(Unknown Source) 
     at com.google.android.gms.internal.zzpw$zzf.run(Unknown Source) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
     at com.google.android.gms.internal.zzrn.run(Unknown Source) 
     at java.lang.Thread.run(Thread.java:818) 

Dzieje się tak na Androida wersjach od 4.4.2 do 7.0 bez zauważalnego wzorca. To samo dotyczy modelu urządzenia i producenta : wielu i wielu producentów i modeli.

To brzmi jak bardzo poważny Heisenbug.

Aktualizacja:

Nie wydaje się być 2 różne sposoby wykonywania pozycji pojazdu w Androidzie:

  1. Korzystanie z Awareness[.fence] API
  2. Używanie location Geofence API

musielibyśmy korzystaj z interfejsu API Awareness, aby uzyskać funkcje i przyjazne baterie, których pragniemy.

UWAGA:

widzę 1 zamknij głos ze względu na "głównie na podstawie opinii". Pozwólcie, że wyjaśnię, że nie chcę odpowiedzi na nieuzasadnione opinie. Chcę faktów, referencji lub specjalistycznej wiedzy. Mam zrobione badania i z odniesieniem losowy błąd awarii bez niezawodnej pracy wokół. Chcę innym zauważyć, że z powodzeniem wdrożony pozycji pojazdu i posiadać:

  1. Dowód, że ich aplikacje nigdy nie napotkał ten błąd (dobre raportowania awarii, która nigdy nie złowione Invalid API Key for package)
  2. widzieli ten błąd i pomyślnie realizowane poprawka
  3. Nigdy nie widziałem tego błędu
+1

Czy próbowałeś już korzystać z Google Geofencing API bezpośrednio w aplikacji API? –

+0

Nie mam. Zasugerowałem użycie geofencingowania na Androida dla funkcji w naszej aplikacji. Inny programista wrócił: "Próbowałem tego w innej firmie i jest zepsuty, oto bilet na błąd". Teraz próbuję uzyskać opinie od deweloperów, którzy mogą mieć dowody na to, że geofencing w systemie Android można dziś zrobić. –

+0

Nie korzystałem z interfejsu API Awareness, więc nie mogę mówić, jak dobrze lub źle działa. Jednak nie widziałem tego błędu w ciągu dwóch lat spędzonych przy użyciu interfejsu API Geofencing. Powiedziałbym, że interfejs API Geofencing ma swój własny zestaw problemów dotyczących dokładności, czasu, fałszywych zdarzeń i dostępności, ale ten błąd wydaje się być związany tylko z API Awareness. –

Odpowiedz

1

błąd jesteś związana już zawarte wszelkie informacje, prawda?

W naszych testach występuje błąd, który czasami rzuca wyjątek SecurityException, gdy wystąpi błąd sieci do uwierzytelnienia. Poprawka zostanie wdrożona w następnej wersji usług Google Play.

Na razie najlepszym sposobem obejścia tego problemu byłoby ustawienie UncaughtExceptionHandler w wątku, który nazywamy GoogleApiClient.connect(). Dla większości ludzi będzie to główny wątek, który można uzyskać za pomocą Looper.myLooper(). GetThread().

Aktualizacja

Dobrze, aby odpowiedzieć na pytanie „Czy Geofencing całkowicie bezużyteczne w Android?”, Powiedziałbym nie, to nie jest „całkowicie” nie do użytku, ale oczywiście zawiera kilka problemów.

Nie powinieneś w ogóle używać funkcji geofencing z powodu tych błędów? Sądzę, że zależy to w dużej mierze od przypadku użycia i jest to rzeczywiście pytanie oparte na opiniach. Jak zawsze w przypadku urządzeń mobilnych, nigdy nie możesz być w 100% pewny, czy coś działa. Twój telefon może nie mieć sygnału, a nawet jeśli nie ma błędów w kodzie, może nadal nie być powiadamiany o określonej lokalizacji z różnych powodów. Na urządzeniach mobilnych chodzi o to, jak radzisz sobie z błędami.

Zaimplementowałem wszystko, co chcesz zaimplementować, spróbuj zrobić to, co zasugerowano w zgłoszeniu błędu (UncaughtExceptionHandler), aby złapać błąd i wdrożyć raporty analityki/awarii w aplikacji, abyś przynajmniej uzyskał informacje na temat jak często to się dzieje w terenie.

Pokaż użytkownikom, że nie ma 100% gwarancji, że funkcja geofence w Twojej aplikacji będzie działała przez cały czas z powodu systemu operacyjnego i myślę, że nadal będą zadowoleni z posiadania tej funkcji. Prawdopodobnie masz gdzieś FAQ w swojej aplikacji lub na swojej stronie głównej, która rozwiązuje znane problemy. Mam nadzieję, że pomoże Ci to w podjęciu decyzji

+0

Istnieje kilka innych komentarzy w wątku, które wskazują, że sugestia NIE rozwiązuje problemu. 18 dni po zadaniu tego pytania firma Google [opublikowała aktualizację] (https://code.google.com/p/android/issues/detail?id=223751#c19), która powinna rozwiązać ten problem. Istnieją jednak komentarze na temat tego wątku, tak wczoraj, jak wczoraj, które mówią, że wciąż go widzą. –

Powiązane problemy