-1

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

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

有什么想法可能导致这个初始化调用失败?

谢谢!

附加信息:

根据我们的 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 (不是新的应用程序启动),所以它试图重新初始化库......然后它崩溃了。希望有帮助。

4

1 回答 1

0

你的代码:

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不提供授权验证方法,NMAApplicationContext.isInitialized() 检查地图功能是否可以使用(引擎是否已经启动)在自定义配置设置之前检查 NMAApplicationContext.isInitialized() 。

如何解决崩溃:

  1. 删除 NMAApplicationContext.isInitialized() if 语句
  2. 调用 NMAApplicationContext.setAppId(HERE_MAP_APP_ID, appCode: HERE_MAP_APP_CODE, licenseKey: HERE_MAP_LICENSE_KEY) 方法,查看 NMAApplicationContextError 返回值是否成功设置凭证。
于 2019-07-19T09:54:07.540 回答