# device_identifier_plus
**Repository Path**: liuxm_flutter/device_identifier_plus
## Basic Information
- **Project Name**: device_identifier_plus
- **Description**: device_identifier_plus
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-06-28
- **Last Updated**: 2022-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# device_identifier_plus
修改自 https://pub.dev/packages/flutter_device_identifier 感谢该作者。
专为 Android 提供的插件,提供多个 Android 唯一标识符供选择最适合需求的一个。此插件适用于需要为 Android 设备提供唯一标识符并需要多个选项来在其应用程序中进行测试的项目:
+ `ANDROID_ID`通常有效,但众所周知它不是 100% 可靠的。
+ `IMEI`每个设备的代码都是唯一的,但仅适用于具有电话服务的设备。除了防止欺诈之外,也不建议使用它。
+ `Serial`每个设备的编号也是唯一的,但只有没有电话服务的设备才需要编号,因此某些设备可能没有序列号(可能但不太可能)。
提供了所有 3 个选项,因此可以使用最适合需求的一个(或者组合多个选项)。
需要权限`READ_PHONE_STATE`
## 开始
确保将所需的权限添加到 Android Manifest [Permission](https://developer.android.com/reference/android/Manifest.permission.html) 和 Info.plist。
```xml
```
## API
### Android
请务必先询问权限,否则应用程序将无法获取 IMEI 码和序列号:
```dart
await DeviceIdentifierPlus.requestPermission();
```
然后,您可以调用三种可用方法中的任何一种:
```dart
String imei = await DeviceIdentifierPlus.imeiCode;
String serial = await DeviceIdentifierPlus.serialCode;
String androidID = await DeviceIdentifierPlus.androidID;
List multiImei = await DeviceIdentifierPlus.imeiMulti;
```
或者调用包含 3 个值的映射,以减少调用原生 android 的次数:
```dart
Map idMap = await DeviceIdentifierPlus.idMap;
String imei = idMap["imei"];
String serial = idMap["serial"];
String androidID = idMap["androidId"];
```
### Android 权限
除了请求权限方法:
```dart
await DeviceIdentifierPlus.requestPermission();
```
还可以使用检查权限状态的方法:
```dart
// 如果权限已经授予,则为True
bool permissionStatus = await DeviceIdentifierPlus.checkPermission();
// 如果用户之前拒绝了该应用程序,则为True
bool isPermissionRejected = await DeviceIdentifierPlus.checkPermissionRationale();
// 如果用户拒绝应用程序并设置为永远不再请求,则为True
bool setToNeverAskAgain = DeviceIdentifierPlus.neverAskAgain;
```
### 检查平台版本
```dart
platformVersion = await FlutterDeviceIdentifier.platformVersion;
```
### iOS
目前 iOS 功能已被禁用。`pubspec.yaml`如果您将应用程序添加到文件中,该应用程序不会在 iOS 上崩溃。