GMSGeocoder 给 Thread 5: EXC_BAD_ACCESS (code=1, address=0x0) in Notification service extension iOS

问题描述

我想使用反向地理编码从通知服务扩展中的位置坐标获取地址

包括代码

GMSGeocoder().reverseGeocodeCoordinate(self.getLastSavedLocation().coordinate) { response,error in }

应用程序崩溃(如附图所示)

删除代码可以正常运行应用程序。我无法弄清楚我做错了什么。相同的代码在应用程序内正常工作,但在通知扩展中崩溃,我尝试使用 Apple 的反向地理编码器,它在扩展上也能正常工作,但 GMSGeocoder 崩溃了。请告诉我可以做些什么来解决它。

Crash Info

解决方法

因此,我联系了 Apple 技术支持,他们澄清了我的问题。

这是他们告诉我的,

如果你看看崩溃的线程,当你尝试的时候你就崩溃了 从 EAGLContext 初始化 OpenGL:

https://developer.apple.com/documentation/opengles/eaglcontext?language=objc

这里的问题是您无法“从后台”访问图形硬件:

https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ImplementingaMultitasking-awareOpenGLESApplication/ImplementingaMultitasking-awareOpenGLESApplication.html

...对于 NSE,这意味着您根本无法使用它们。笔记 虽然 OpenGL 已被弃用,但这实际上并不重要。 如果他们使用金属,也会发生同样的崩溃。我们的低 我们根本无法在 NSE 中使用级别图形 API。

所以解决方案是使用 Google 的 Geocoding API(但它不是免费使用的)。 https://developers.google.com/maps/documentation/geocoding/overview#ReverseGeocoding

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...