В 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;