GMSGeocoder 在通知服务扩展 iOS 中给出线程 5: EXC_BAD_ACCESS (code=1, address=0x0)

Posted

技术标签:

【中文标题】GMSGeocoder 在通知服务扩展 iOS 中给出线程 5: EXC_BAD_ACCESS (code=1, address=0x0)【英文标题】:GMSGeocoder gives Thread 5: EXC_BAD_ACCESS (code=1, address=0x0) in Notification service extension iOS 【发布时间】:2021-08-15 01:35:24 【问题描述】:

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

但包括此代码。

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

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

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

【问题讨论】:

【参考方案1】:

所以,我联系了 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

【讨论】:

以上是关于GMSGeocoder 在通知服务扩展 iOS 中给出线程 5: EXC_BAD_ACCESS (code=1, address=0x0)的主要内容,如果未能解决你的问题,请参考以下文章

iOS 10 通知服务扩展

iOS - 多通知扩展服务?

IOS:应用内通知+通知服务+内容扩展

通知服务应用程序扩展必须在远程通知中显示媒体?

iOS10技术之实现通知服务扩展(NotificationServiceExtension)

如何删除 iOS 通知服务扩展中的文件?