Flutter设备唯一标识插件unique_device_id的使用
Flutter设备唯一标识插件unique_device_id
的使用
unique_device_id
是一个用于获取设备唯一标识符的Flutter插件。它支持Android和iOS平台,分别使用SSAID(Android)和identifierForVendor(iOS)作为设备的唯一标识。
注意事项
对于Android:
- 需要minSdk 23,并且需要WRITE_EXTERNAL_STORAGE权限。
- 如果无法获取SSAID,则会生成一个随机的UUID并存储在一个加密文件中供后续使用。
开始使用
获取唯一设备ID
UniqueDeviceId.instance.getUniqueId()
- 获取唯一设备ID(如果ID不存在,则生成并保存UUID)
- Android: SSAID
- iOS: identifierForVendor
设置默认使用UUID
UniqueDeviceId.instance.setDefaultUseUUID(bool)
- 使用UUID代替SSAID(Android),identifierForVendor(iOS)
设置加密密钥
UniqueDeviceId.instance.setSecretKey(String)
- 设置Android加密的秘密密钥(要求超过16位数字)
示例代码
以下是一个完整的示例demo,展示了如何在Flutter应用中使用unique_device_id
插件来获取设备的唯一标识符。
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:unique_device_id/unique_device_id.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 设置默认使用UUID
await UniqueDeviceId.instance.setDefaultUseUUID(true);
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String uniqueId;
[@override](/user/override)
void initState() {
super.initState();
// 在初始化时获取唯一ID
getUniqueId().then(
(value) => setState(
() => uniqueId = value,
),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: uniqueId?.isNotEmpty ?? false
? Text('Unique ID: $uniqueId\n')
: CircularProgressIndicator(),
),
),
);
}
Future<String> getUniqueId() async {
try {
return await UniqueDeviceId.instance.getUniqueId();
} on PlatformException catch (e) {
if (e.code == '1011') {
// 请求存储权限
final status = await Permission.storage.request();
if (status.isGranted) {
return getUniqueId();
} else if (status.isPermanentlyDenied) {
openAppSettings();
}
}
return null;
}
}
}
更多关于Flutter设备唯一标识插件unique_device_id的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复