如何在 Android 和 IOS 中获取设备 ID
Posted
技术标签:
【中文标题】如何在 Android 和 IOS 中获取设备 ID【英文标题】:How to get Device Id in flutter of both Android and IOS 【发布时间】:2019-01-25 12:24:56 【问题描述】:有没有办法为 android 和 ios 获取 device id,因为当我使用 device_info 插件为 android 执行此操作时,它会说:
MissingPluginException(没有找到方法的实现 getAndroidDeviceInfo on channel plugins.flutter.io/device_info)
【问题讨论】:
你在测试哪个设备/模拟器? 我正在 Nexus 5 和 Iphone X 上进行测试 它们都不适合你? 你试过这个插件了吗? pub.dartlang.org/packages/device_id github.com/flutter/plugins/tree/master/packages/device_info 的示例工作正常,只要确保您没有在 Android 上调用iosInfo
【参考方案1】:
事实证明,您实际上并不需要一个包来获取设备信息的所有功能都在一个名为 flutter.io 的颤振类中。
您可以简单地使用这行代码作为导入来访问它:
import 'dart:io' show Platform;
然后执行平台特定的代码,你可以使用:
if (Platform.iOS)
//your code
else if (Platform.Android)
//your other code
【讨论】:
【参考方案2】:device_id 插件现在也可以在 iPhone 上正常使用。
他们修复的错误,也更新到了 swift 4.1.x
要检索 id,只需导入 (import 'package:device_id/device_id.dart';
) 并调用
String device_id = await DeviceId.getID;
您可以查看更改日志here
【讨论】:
【参考方案3】:让我通过 device_info 插件来解释一下。
第一步添加依赖
dependencies:
flutter:
sdk: flutter
device_info: ^0.4.0+1
第 2 步在开始时导入您的文件
import 'package:device_info/device_info.dart';
第 3 步创建一个异步函数以返回设备 ID。
deviceInfo() async
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
return androidInfo.id;
第 4 步创建一个 FutureBuilder() 以显示设备 ID 或执行任何操作。
FutureBuilder(
future: deviceInfo(),
builder: (BuildContext context, AsyncSnapshot snap)
// do nothing...
if (snap.hasData)
//your logic goes here.
else
return new CircularProgressIndicator();
,
)
希望对你有帮助。
【讨论】:
已知有时为空,它被记录为“可以在恢复出厂设置时更改”。使用风险自负,并且可以在有根手机上轻松更改。【参考方案4】:在 pubspec.yaml 中添加版本,如下所示,然后单击获取依赖项。 device_id: ^0.2.0
添加导入语句import 'package:device_id/device_id.dart';
并致电String device_id = await DeviceId.getID;
【讨论】:
以上是关于如何在 Android 和 IOS 中获取设备 ID的主要内容,如果未能解决你的问题,请参考以下文章