如何在Flutter中获取Android和IOS设备的ID

4

有没有办法获取 Android 和 iOS 的设备 ID?因为当我使用 device_info 插件在 Android 上尝试时,出现了以下错误:

MissingPluginException(No implementation found for method getAndroidDeviceInfo on channel plugins.flutter.io/device_info)


你正在测试哪个设备/模拟器? - diegoveloper
我正在 Nexus 5 和 iPhone X 上进行测试。 - Coder
你们都不适合你吗? - diegoveloper
你试过这个插件吗?https://pub.dartlang.org/packages/device_id - diegoveloper
在我的 iPhone X 上也无法工作。有人知道为什么吗? - carlosx2
显示剩余3条评论
4个回答

3

事实证明,你实际上并不需要一个包来获取设备信息,所有功能都在名为flutter.io的Flutter类中。

你只需使用以下代码作为导入即可轻松调用:

import 'dart:io' show Platform;

然后,要执行特定于平台的代码,您可以使用:

     if (Platform.iOS)
 {//your code} 
else if (Platform.Android)
{//your other code}

1
  1. 在 pubspec.yaml 中添加版本号,如下所示,并单击获取依赖项。
    device_id: ^0.2.0

  2. 添加导入语句
    import 'package:device_id/device_id.dart';

  3. 并调用
    String device_id = await DeviceId.getID;


1

设备ID 插件现在也能在iPhone上正常工作了。

他们修复了错误并更新到了swift 4.1.x

要检索ID,只需导入 (import 'package:device_id/device_id.dart';) 并调用

String device_id = await DeviceId.getID;

您可以在此处查看更改日志


2
这个包在Flutter Packages中已经停止维护。 - Sivakumar

1
让我通过device_info插件来向您解释这个问题。
步骤1:添加依赖。
dependencies:
  flutter:
    sdk: flutter
  device_info: ^0.4.0+1

步骤2 在开头导入您的文件。
  import 'package:device_info/device_info.dart';

第三步,创建一个异步函数来返回设备id。

deviceInfo() async{
  DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
  return androidInfo.id;
}

第四步 创建一个FutureBuilder()来显示设备ID或执行任何操作。

FutureBuilder(
  future: deviceInfo(),
  builder: (BuildContext context, AsyncSnapshot snap){
    // do nothing...
    if (snap.hasData){
      //your logic goes here.
    }else {
      return new CircularProgressIndicator();
    }
  },
)

我希望这能对你有所帮助。


有时它被认为是空的,文档中标注为“在出厂重置时可能会更改”。使用时需自行承担风险,并且在已获取 root 权限的手机上可以轻松更改。 - Kamlesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接