2017-02-06 1 views
17

Wegen this bug mein Team entscheidet, Geofencing überhaupt nicht zu verwenden. Ist Geofencing in Android etwas, das nutzbar ist oder nicht?Ist Geofencing in Android vollständig unbrauchbar?

Vom Bug-Report:

Auf allen im Haus alles Prüfgeräten läuft gut mit Debug und Release-Builds. Doch für einige Nutzer da draußen bekommen wir Crash-Berichte , die ein Problem mit der API zeigen:

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) 

Das auf Android-Versionen geschieht im Bereich von 4.4.2 auf 7.0 ohne bemerkbar Muster. Gleiches gilt für das Gerätemodell und Hersteller: viele und mehrere Hersteller und Modelle.

Das klingt wie ein ziemlich strenger Heisenbug.

Update:

Es scheint zwei verschiedene Möglichkeiten, um Geofencing in Android zu tun:

  1. Mit dem Awareness[.fence] API
  2. die Verwendung location Geofence API

Wir brauchen würde Verwenden Sie die Awareness-API, um die von uns gewünschten Funktionen und Akkufreiheit zu erhalten.

HINWEIS:

I 1 schließen Abstimmung sehen wegen "in erster Linie Meinung Basis". Also, lassen Sie mich klar sein, ich möchte keine unbestätigten Meinungen antworten. Ich möchte Fakten, Referenzen oder spezifisches Fachwissen. Ich habe getan Forschung und verwiesen einen zufälligen Absturz Bug ohne zuverlässige Arbeit herum. Ich möchte andere beachten, dass sie Geofencing erfolgreich umgesetzt haben, und haben entweder:

  1. Der Nachweis, dass ihre Anwendungen haben noch nie diesen Fehler (gute Crash-Reporting, das Invalid API Key for package nie gefangen hat) begegnet
  2. diesen Fehler gesehen haben und erfolgreich ein Fix
  3. nie diesen Fehler gesehen
+1

Haben Sie versucht, die Geofencing API von Google direkt vs mit der Awareness API zu verwenden? –

+0

habe ich nicht. Ich schlug vor, Android Geofencing für ein Feature in unserer Anwendung zu verwenden. Ein anderer Entwickler kam zurück mit: "Ich habe es bei einer anderen Firma versucht und es ist kaputt; hier ist das Bugticket." Jetzt versuche ich, Feedback von Entwicklern zu bekommen, die Beweise dafür haben, dass Geofencing in Android heute möglich ist. –

+0

Ich habe die Awareness-API nicht verwendet, daher kann ich nicht sagen, wie gut oder schlecht es funktioniert. In den zwei Jahren, in denen ich die Geofencing-API nutze, habe ich diesen Bug jedoch nicht gesehen. Ich würde sagen, die Geofencing-API hat ihre eigenen Probleme in Bezug auf Genauigkeit, Timing, falsche Ereignisse und Verfügbarkeit, aber dieser Fehler scheint nur mit der Awareness-API zu tun zu haben. –

Antwort

1

implementiert Der Fehler, den Sie bereits alle Informationen verknüpft enthalten ist, nicht wahr?

Es gibt einen Fehler in unseren Prüfungen, der diese SecurityException gelegentlich verursacht, wenn ein Netzwerkfehler bei der Authentifizierung auftritt. Der Fix wird in der nächsten Version der Google Play-Dienste bereitgestellt.

Vorläufig wäre die beste Problemumgehung ein UncaughtExceptionHandler in dem Thread eingerichtet, den Sie GoogleApiClient.connect() aufrufen. Für die meisten Leute wäre dies der Haupt-Thread, den Sie über Looper.myLooper(). GetThread() erhalten können.

aktualisieren

Nun, Ihre Frage „Ist Geofencing völlig unbrauchbar in Android?“ Zu beantworten, würde ich sagen, nein, es ist nicht „vollständig“ unbrauchbar ist aber offensichtlich ein paar Probleme enthält.

Sollten Sie Geofencing aufgrund dieser Fehler nicht verwenden? Ich denke, das hängt stark vom Anwendungsfall ab und ist in der Tat eine meinungsbasierte Frage. Wie immer bei mobilen Geräten können Sie nie hundertprozentig sicher sein, ob etwas funktioniert. Ihr Mobiltelefon hat möglicherweise kein Signal und selbst wenn es im Code keine Fehler gab, wird es aus verschiedenen Gründen möglicherweise immer noch nicht über einen bestimmten Standort benachrichtigt. Auf Mobilgeräten geht es darum, wie Sie mit Fehlern umgehen.

Ich würde implementieren, was Sie implementieren möchten, versuchen Sie, was im Bug-Ticket (der UncaughtExceptionHandler) vorgeschlagen wurde, um den Fehler zu erfassen und Analytics/Absturzberichte in der App zu implementieren, so dass Sie zumindest Informationen erhalten werden wie oft passiert das wirklich draußen auf dem Feld.

Machen Sie Ihren Nutzern klar, dass es aufgrund des zugrunde liegenden Systems keine 100% ige Garantie dafür gibt, dass die Geofence-Funktion Ihrer App jederzeit funktioniert, und ich denke, dass sie diese Funktion weiterhin genießen werden. Wahrscheinlich haben Sie irgendwo in Ihrer App oder auf Ihrer Homepage einige FAQ, in denen die bekannten Probleme angesprochen werden. Hoffe, das hilft Ihnen, eine Entscheidung zu treffen

+0

Es gibt mehrere andere Kommentare im Thread, die darauf hinweisen, dass der Vorschlag das Problem NICHT löst. 18 Tage nachdem diese Frage gestellt wurde, veröffentlichte Google ein Update (https://code.google.com/p/android/issues/detail?id=223751#c19), das das Problem beheben sollte. Allerdings gibt es Kommentare zu diesem Thread, die erst gestern veröffentlicht wurden und sagen, dass sie es immer noch sehen. –

Verwandte Themen