由于this bug我的团队决定根本不使用地理围栏。 Android中的地理围栏是否有用?
来自错误报告:
在所有内部测试设备上,一切都运行正常,调试和 发布版本。但是,对于那里的一些用户,我们会收到崩溃报告 这表明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)
这种情况发生在Android版本的4.4.2到7.0之间,没有 明显的模式。这同样适用于设备型号和 制造商:许多和多个制造商和型号。
这听起来像一个非常严重的Heisenbug。
更新
在Android中进行地理围栏似乎有两种不同的方法:
我们需要使用Awareness API来获得我们想要的功能和电池友好性。
注意:
由于“主要基于意见”,我看到一次近距离投票。所以,让我明确一点,我不希望得到不支持的意见答案。我想要事实,参考或具体的专业知识。我有完成研究和引用随机崩溃错误,没有可靠的解决方法。我希望其他人注意到他们已经成功实施了地理围栏并且具有:
Invalid API Key for package
的良好崩溃报告)答案 0 :(得分:1)
您链接的错误已包含所有信息,不是吗?
我们的检查中存在一个错误,当有网络错误进行身份验证时,有时会抛出此SecurityException。该修补程序将在下一版Google Play服务中推出。
目前,最好的解决方法是在您调用GoogleApiClient.connect()的线程上设置UncaughtExceptionHandler。对于大多数人来说,这将在主线程上,您可以通过Looper.myLooper()。getThread()获得。
<强>更新强>
好吧,回答你的问题“Android中的地理围栏是否完全无法使用?”,我会说不,它不是“完全”无法使用,但显然包含一些问题。
由于这些错误,您是否应该根本不使用地理围栏?我想这在很大程度上取决于用例,而且确实是一个基于意见的问题。与移动设备一样,如果有效,您永远无法100%确定。您的手机可能没有信号,即使代码中没有错误,由于各种原因,它仍可能无法获得有关某个位置的通知。在移动设备上,它是关于如何处理错误的。
我将实现您想要实现的任何内容,尝试执行错误标记(UncaughtExceptionHandler)中建议的操作以捕获错误并在应用程序中实现分析/崩溃报告,以便您至少获得有关如何通常情况下这确实发生在现场。
向您的用户明确指出,由于底层系统,您的应用的地理围栏功能始终无法100%保证,我认为他们仍然乐意使用该功能。可能在您的应用或主页上的某个地方有一些常见问题解答,可以解决已知问题。希望这可以帮助你做出决定