flutter如何获取设备唯一标识
在Flutter开发中,如何获取设备的唯一标识符?我尝试过使用device_info_plus插件,但获取到的Android ID和iOS的identifierForVendor在不同设备上可能会重复。有没有更可靠的方法来获取真正唯一的设备标识?另外,考虑到用户隐私和平台政策限制,这种方法是否会被App Store或Google Play拒绝?希望有经验的朋友能分享一下最佳实践。
2 回复
在Flutter中,获取设备唯一标识可使用device_info_plus插件。通过DeviceInfoPlugin获取设备信息,Android使用androidId,iOS使用identifierForVendor。注意不同平台标识可能不同,且权限和隐私政策需遵守。
更多关于flutter如何获取设备唯一标识的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,获取设备唯一标识可以使用device_info_plus插件。以下是具体实现步骤:
-
添加依赖 在
pubspec.yaml文件中添加:dependencies: device_info_plus: ^9.0.0 -
权限配置
- Android:在
AndroidManifest.xml中添加:<uses-permission android:name="android.permission.READ_PHONE_STATE"/> - iOS:在
Info.plist中添加:<key>NSPrivacyAccessedAPITypes</key> <array> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategoryDeviceIdentifier</string> </dict> </array>
- Android:在
-
代码实现
import 'package:device_info_plus/device_info_plus.dart'; Future<String?> getDeviceId() async { final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); try { if (Platform.isAndroid) { AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo; return androidInfo.id; // 返回ANDROID_ID } else if (Platform.isIOS) { IosDeviceInfo iosInfo = await deviceInfo.iosInfo; return iosInfo.identifierForVendor; // 返回IdentifierForVendor } } catch (e) { print('获取设备ID失败: $e'); } return null; }
注意事项:
- Android:
ANDROID_ID可能因设备或系统重置而变化,且模拟器返回固定值。 - iOS:
identifierForVendor在同一开发商应用间一致,卸载所有应用后重置。 - 唯一标识存在平台差异和隐私限制,建议根据需求谨慎使用。
可通过getDeviceId()异步方法获取字符串形式的设备ID,需处理可能的异常和空值。

