此处 iOS 高级地图 - setAppId 崩溃

HERE iOS Premium Map - setAppId Crash

我有一个奇怪的崩溃发生在我们的少数用户身上,但频率足以引起关注。

if(!NMAApplicationContext.isInitialized()) {
  NMAApplicationContext.setAppId(HERE_MAP_APP_ID, appCode: HERE_MAP_APP_CODE, licenseKey: HERE_MAP_LICENSE_KEY)
}

任何可能导致此 init 调用失败的想法?

谢谢!

附加信息:

根据我们的 crashlytics 报告,

如果您需要更多信息,请告诉我。谢谢! 更新 - 我能够在 XCode 中捕捉到崩溃。堆栈跟踪:

frame #0: 0x00000001bd4520dc libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x00000001bd4cb094 libsystem_pthread.dylib`pthread_kill$VARIANT$mp + 380
frame #2: 0x00000001bd3abea8 libsystem_c.dylib`abort + 140
frame #3: 0x0000000104724f60 NMAKit`___lldb_unnamed_symbol2248$$NMAKit + 476

我能够复制它。上面的代码是在前台调用的,看起来 isInitialized 调用在前台(不是新的应用程序启动)上返回 false,因此它试图重新初始化库……然后它崩溃了。希望对您有所帮助。

您的代码:

if(!NMAApplicationContext.isInitialized()) {
  NMAApplicationContext.setAppId(HERE_MAP_APP_ID, appCode: HERE_MAP_APP_CODE, licenseKey: HERE_MAP_LICENSE_KEY)
}

因为 API 用法不正确而导致崩溃:

  1. 应在使用任何 HereSDK API 调用之前设置凭据。
  2. NMAApplicationContext doesn't provide the authorize verification methods, the NMAApplicationContext.isInitialized() checks whether map functionality is ready to use (whether engine already started). The NMAApplicationContext.isInitialized() is checked before custom configuration setup.

如何解决崩溃:

  1. 删除 NMAApplicationContext.isInitialized() if 语句
  2. 调用NMAApplicationContext.setAppId(HERE_MAP_APP_ID,appCode:HERE_MAP_APP_CODE,licenseKey:HERE_MAP_LICENSE_KEY)方法检查NMAApplicationContextErrorreturn值是否设置凭证成功了。