Как получить уникальный идентификатор устройства в флаттер?

В Android у нас есть, Settings.Secure.ANDROID_ID. Я не знаю эквивалент iOS. Существует ли плагин флаттера или способ получить уникальный идентификатор устройства для Android и IOS в флаттере?

Ответ 1

Есть плагин с именем device_info. Вы можете получить это здесь. В iOS нет способа получить уникальный идентификатор устройства. Для этого есть вок.

 static Future<List<String>> getDeviceDetails() async {
    String deviceName;
    String deviceVersion;
    String identifier;
    final DeviceInfoPlugin deviceInfoPlugin = new DeviceInfoPlugin();
    try {
      if (Platform.isAndroid) {
        var build = await deviceInfoPlugin.androidInfo;
        deviceName = build.model;
        deviceVersion = build.version.toString();
        identifier = build.androidId;  //UUID for Android
      } else if (Platform.isIOS) {
        var data = await deviceInfoPlugin.iosInfo;
        deviceName = data.name;
        deviceVersion = data.systemVersion;
        identifier = data.identifierForVendor;  //UUID for iOS
      }
    } on PlatformException {
      print('Failed to get platform version');
    }

//if (!mounted) return;
return [deviceName, deviceVersion, identifier];
}

Вы можете сохранить этот UUID в связке ключей. Таким образом, вы можете установить уникальный идентификатор для вашего устройства.

Ответ 2

Я только что опубликовал плагин для решения вашей проблемы. Он использует Settings.Secure.ANDROID_ID для Android и опирается на identifierForVendor и связку ключей для iOS, чтобы сделать поведение эквивалентным Android. Здесь ссылка.

Ответ 3

Если вы показываете рекламу, вы можете использовать ASIdentifierManager. Вы должны использовать его только для рекламы. Отсутствует общий механизм UDID, предоставляемый ОС iOS, по соображениям конфиденциальности.

Если вы используете firebase_auth плагин можно signInAnonymously, а затем использовать идентификатор FirebaseUser. Это даст вам идентификатор, специфичный для вашего приложения Firebase.

Ответ 4

Используйте плагин device_info, разработанный самой командой Flutter. Вот как вы можете получить идентификаторы на обеих платформах.

В своем файле pubspec.yaml добавьте это:

dependencies:
  device_info: ^0.4.0+4

Создайте метод:

Future<String> _getId() async {
  DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  if (Theme.of(context).platform == TargetPlatform.iOS) {
    IosDeviceInfo iosDeviceInfo = await deviceInfo.iosInfo;
    return iosDeviceInfo.identifierForVendor; // unique ID on iOS
  } else {
    AndroidDeviceInfo androidDeviceInfo = await deviceInfo.androidInfo;
    return androidDeviceInfo.androidId; // unique ID on Android
  }
}

Используйте это как:

String deviceId = await _getId();

Источник

Ответ 5

добавьте следующий код в файл .yaml.

device_id: ^0.1.3

добавить импорт в свой класс

import 'package:device_id/device_id.dart';

теперь получите идентификатор устройства из:

String deviceid = await DeviceId.getID;