美文网首页
Flutter 解决集成高德地图插件amap_flutter_l

Flutter 解决集成高德地图插件amap_flutter_l

作者: Superman168 | 来源:发表于2024-03-25 10:51 被阅读0次

集成

https://pub.dev/packages/amap_flutter_location

高德地图

amap_flutter_location: ^3.0.0

image.png

目前最新的还是两年前的3.0.0版本。
文档参考有限,有问题只能自己摸索着解决。

iOS不弹授权弹窗

这个是Flutter通用问题,需要什么加什么。

解决方法:

Podfile文件中添加

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']||= [
      '$(inherited)',
              ## dart: PermissionGroup.calendar
              # 'PERMISSION_EVENTS=1',

              ## dart: PermissionGroup.reminders
              # 'PERMISSION_REMINDERS=1',

              ## dart: PermissionGroup.contacts
              # 'PERMISSION_CONTACTS=1',

              # dart: PermissionGroup.camera
               'PERMISSION_CAMERA=1',

              ## dart: PermissionGroup.microphone
              # 'PERMISSION_MICROPHONE=1',

              ## dart: PermissionGroup.speech
              # 'PERMISSION_SPEECH_RECOGNIZER=1',

              # dart: PermissionGroup.photos
               'PERMISSION_PHOTOS=1',

              ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
               'PERMISSION_LOCATION=1',

              ## dart: PermissionGroup.notification
              # 'PERMISSION_NOTIFICATIONS=1',

              ## dart: PermissionGroup.mediaLibrary
               'PERMISSION_MEDIA_LIBRARY=1',

              ## dart: PermissionGroup.sensors
              # 'PERMISSION_SENSORS=1',

              ## dart: PermissionGroup.bluetooth
              # 'PERMISSION_BLUETOOTH=1',

              ## dart: PermissionGroup.appTrackingTransparency
              # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

              ## dart: PermissionGroup.criticalAlerts
              # 'PERMISSION_CRITICAL_ALERTS=1'
      ]
    end
  end
end

最严重的:iOS崩溃问题

安卓的还好,运行起来没有什么问题,iOS运行起来就崩溃,这个地方崩溃的:

locManagerWithCall方法,AMapFlutterLocationManager初始化失败。

image.png

控制台的报错:

Error Domain=AMapFoundationErrorPrivacyShowUnknow Code=555570 "(null)" UserInfo={info=使用AMapLocationKit SDK 功能前请设置隐私权政策是否弹窗告知用户}

2024-03-26 09:29:02.129413+0800 Runner[473:14712] Error Domain=AMapFoundationErrorPrivacyShowUnknow Code=555570 "(null)" UserInfo={info=使用AMapLocationKit SDK 功能前请设置隐私权政策是否弹窗告知用户}
2024-03-26 09:29:02.129696+0800 Runner[473:14712] [AMapLocationKit]:Error Domain=AMapFoundationErrorPrivacyShowUnknow Code=555570 "(null)" UserInfo={info=使用AMapLocationKit SDK 功能前请设置隐私权政策是否弹窗告知用户}
2024-03-26 09:30:07.476590+0800 Runner[473:14712] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: 1711416542076)'
*** First throw call stack:
(0x1820fdcac 0x19916c758 0x1821f6924 0x182200ce8 0x1820b67dc 0x1002bfa0c 0x1002be8f8 0x1002be7d8 0x10188a050 0x1012f75a4 0x1009fc94c 0x1009fe1c8 0x100a0c8d8 0x1820b97f8 0x1820770f8 0x182089d8c 0x19c1969a0 0x1848bf018 0x18465329c 0x10027872c 0x1008dc190)
libc++abi: terminating with uncaught exception of type NSException
image.png

但是项目的的两个方法都调了:

image.png

一直还是报这个错误,找了一番发现是插件中AMapFlutterLocationPlugin.m的updatePrivacyStatement方法:

image.png

下面注释了,放开注释,重新运行就OK了。

真是一坑接一坑,踩的坑多了,路就平了。

相关文章

网友评论

      本文标题:Flutter 解决集成高德地图插件amap_flutter_l

      本文链接:https://www.haomeiwen.com/subject/iaedtjtx.html