在这里iOS高级地图-setAppId崩溃

时间:2019-07-11 16:34:51

标签: ios swift crash here-api

我的少数用户发生了一次奇怪的崩溃,但经常引起关注。

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

有什么想法可能导致此init调用失败?

谢谢!

其他信息:

从我们的crashlytics报告中, Devices with crash

enter image description here

如果您需要其他信息,请告诉我。谢谢! 更新-我能够捕获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,因此它试图重新初始化库.....然后崩溃。希望有帮助。

1 个答案:

答案 0 :(得分: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()检查是否可以使用地图功能(是否已启动引擎)。在custom configuration setup之前检查NMAApplicationContext.isInitialized()。

如何解决崩溃:

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