本文档介绍插件的隐私合规接口及其调用时机。国内应用上架需确保用户同意隐私协议后才能初始化地图 SDK。
根据工信部等监管要求,国内应用在用户同意隐私协议前,不得初始化涉及用户隐私的 SDK。腾讯地图 SDK 在此要求下,默认不渲染地图,直到应用显式声明用户已同意隐私协议。
// 1. 设置用户已同意隐私协议
await TencentMapInitializer.setAgreePrivacy(true);
// 2. 启动 SDK
await TencentMapInitializer.start();
| 方法 | 参数 | 说明 |
|---|---|---|
setAgreePrivacy(agree) |
bool |
true 表示用户已同意隐私协议,SDK 可正常初始化;false 表示未同意,地图不渲染 |
start() |
无 | 启动腾讯地图 SDK。必须在 setAgreePrivacy 之后调用; |
必须在 TencentMap Widget 渲染之前调用。通常放在 main() 函数中:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 用户已同意隐私协议(根据你的业务逻辑判断)
final isPrivacyAgreed = await checkPrivacyAgreement();
await TencentMapInitializer.setAgreePrivacy(isPrivacyAgreed);
await TencentMapInitializer.start();
runApp(const MyApp());
}
import 'package:flutter/material.dart';
import 'package:flutter_tencent_map/flutter_tencent_map.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// TODO: 替换为你的隐私协议判断逻辑
// 例如:SharedPreferences 读取用户是否已同意
final isAgreed = await _checkPrivacyAgreement();
await TencentMapInitializer.setAgreePrivacy(isAgreed);
await TencentMapInitializer.start();
runApp(const MyApp());
}
Future<bool> _checkPrivacyAgreement() async {
// 示例:从 SharedPreferences 读取
// final prefs = await SharedPreferences.getInstance();
// return prefs.getBool('privacy_agreed') ?? false;
return true; // 示例中直接返回 true
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: TencentMap(
initialCameraPosition: const CameraPosition(
target: LatLng(39.9087, 116.3975),
zoom: 12,
),
),
),
);
}
}
setAgreePrivacy(true),再调用 start(),最后才能创建 TencentMap Widget。setAgreePrivacy 时,默认 agree = false,地图不会渲染。
有帮助
没帮助