高德地图8.1.0之后,需要设置隐私合规才能正常使用地图等功能。
正常再使用之前这样设置就行了:
import MAMapKit
MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.didAgree)
MAMapView.updatePrivacyShow(AMapPrivacyShowStatus.didShow, privacyInfo: AMapPrivacyInfoStatus.didContain)
为了好看一点,弄个弹窗例子(改自官方demo):
if !UserDefaults.standard.bool(forKey: "agreeStatus") {
//添加隐私合规弹窗
self.addAlertController()
//更新App是否显示隐私弹窗的状态,隐私弹窗是否包含高德SDK隐私协议内容的状态. since 8.1.0
MAMapView.updatePrivacyShow(AMapPrivacyShowStatus.didShow, privacyInfo: AMapPrivacyInfoStatus.didContain)
}
else{
initMapView()
initLocation()
initSearch()
}
设置弹窗:
//隐私合规窗口
func addAlertController(){
let paragraphStyle : NSMutableParagraphStyle = NSMutableParagraphStyle.init()
paragraphStyle.alignment = NSTextAlignment.left
let message : NSMutableAttributedString = NSMutableAttributedString.init(string: "\n亲,感谢您对XXX一直以来的信任!我们依据最新的监管要求更新了XXX《隐私权政策》,特向您说明如下\n1.为向您提供交易相关基本功能,我们会收集、使用必要的信息;\n2.基于您的明示授权,我们可能会获取您的位置(为您提供附近的商品、店铺及优惠资讯等)等信息,您有权拒绝或取消授权;\n3.我们会采取业界先进的安全措施保护您的信息安全;\n4.未经您同意,我们不会从第三方处获取、共享或向提供您的信息;", attributes: [NSAttributedString.Key.paragraphStyle:paragraphStyle])
message.setAttributes([NSAttributedString.Key.foregroundColor:UIColor.blue], range: message.mutableString.range(of: "《隐私权政策》"))
let alert : UIAlertController = UIAlertController.init(title: "温馨提示", message: "", preferredStyle: UIAlertController.Style.alert)
alert.setValue(message, forKey: "attributedMessage")
let conform : UIAlertAction = UIAlertAction.init(title: "同意", style: UIAlertAction.Style.default) { UIAlertAction in
UserDefaults.standard.set(true, forKey: "agreeStatus")
UserDefaults.standard.synchronize()
//更新用户授权高德SDK隐私协议状态. since 8.1.0
MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.didAgree)
self.initMapView()
self.initLocation()
self.initSearch()
}
let cancel : UIAlertAction = UIAlertAction.init(title: "不同意", style: UIAlertAction.Style.cancel) { UIAlertAction in
UserDefaults.standard.set(false, forKey: "agreeStatus")
UserDefaults.standard.synchronize()
//更新用户授权高德SDK隐私协议状态. since 8.1.0
MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.notAgree)
}
alert.addAction(conform)
alert.addAction(cancel)
self.present(alert, animated: true, completion: nil)
}