地理限制在Android中完全无法使用?

由于这个错误,我的团队决定不使用geofencing。 在Android的geofencing东西是可用或不?

从错误报告:

在所有的内部testing设备上,一切运行良好,debugging和发布版本。 但是,对于某些用户,我们会收到崩溃报告,指出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) 

这发生在从4.4.2到7.0的Android版本中,没有明显的模式。 设备型号和制造商也是如此:有许多制造商和型号。

这听起来像是一个非常严重的海森堡。

更新:

在Android中似乎有两种不同的方式来进行地理围栏:

  1. 使用Awareness [.fence] API
  2. 使用位置Geofence API

我们需要使用Awareness API来获得我们想要的function和电池友好性。

注意:

由于“主要以意见为基础”,我看到1票近距离投票。 所以,让我清楚,我不想要不受支持的意见答案。 我需要事实,参考或具体的专业知识。 我已经做了研究,引用了一个随机的崩溃错误,没有可靠的工作。 我希望其他人注意到他们已经成功实施了地理围栏,并且要么:

  1. 证据表明他们的应用程序从来没有遇到过这个错误(良好的崩溃报告,从来没有发现Invalid API Key for package
  2. 已经看到这个错误,并已成功实施修复
  3. 从来没有见过这个bug

Solutions Collecting From Web of "地理限制在Android中完全无法使用?"

你链接的bug已经包含了所有的信息,不是吗?

在我们的检查中有一个错误,当有networking错误进行身份validation时,有时会抛出SecurityException。 该修补程序将在下一个版本的Google Play服务中推出。

目前,最好的解决方法是在调用GoogleApiClient.connect()的线程上设置一个UncaughtExceptionHandler。 对于大多数人来说,这将在主线程上,你可以通过Looper.myLooper()。getThread()获得。

更新

那么,回答你的问题“是否geofencing完全无法在Android?”,我会说不,这是不是“完全”无法使用,但显然包含一些问题。

由于这些错误,你应该不使用geofencing吗? 我想这很大程度上取决于用例,确实是一个基于观点的问题。 像移动设备一样,如果某件事情能够成功,你永远无法确定。 您的手机可能没有任何信号,即使代码中没有错误,也可能因各种原因而无法通知某个特定位置。 在手机上,所有关于你如何处理错误。

我会实现你想要实现的任何东西,试着去做错误标签(UncaughtExceptionHandler)中的build议来捕捉错误,并在应用程序中实现分析/崩溃报告,这样至less可以获得有关发生在这个领域。

向用户明确指出,由于底层系统的原因,没有100%保证您的应用的地理栅栏function始终能够正常工作,我认为他们仍然乐于拥有该function。 可能有一些常见问题在您的应用程序的某个地方或在您的主页上解决已知问题。 希望这可以帮助你做出决定