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

时间:2018-08-18 21:27:17

标签: android ios flutter

有没有一种方法可以获取android和ios的设备ID ,因为当我使用device_info插件为android获取

时,会这样说:

  

MissingPluginException(未找到方法的实现   在通道plugins.flutter.io/device_info上获取AndroidDeviceInfo)

4 个答案:

答案 0 :(得分:2)

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

您只需将以下代码作为导入即可使用它:

class HomeFragment : BaseFragment<FragmentHomeBinding>() {
    override fun onResume() {
    super.onResume()
    if (firstTime) {

        Handler().postDelayed({
            binding.finalHomeFragment.setTransitionDuration(1)
            binding.finalHomeFragment.transitionToEnd()
            binding.view.visibility = View.GONE
            binding.buttonLayout.visibility = View.GONE
            setTransition()
        }, 0)
        firstTime = false
    } else {
        Handler().postDelayed({
            binding.finalHomeFragment.setTransitionDuration(1500)
            binding.finalHomeFragment.transitionToEnd()
        }, 0)
    }


    private fun setTransition() {
        val autoTransition = AutoTransition()
        autoTransition.duration = 500
        TransitionManager.beginDelayedTransition(binding.container, 
autoTransition)
        val set = ConstraintSet()
        set.clone(binding.container)
        set.setVisibility(binding.buttonLayout.id, View.VISIBLE)
        set.setVisibility(binding.view.id, View.VISIBLE)
        set.applyTo(binding.container)
    }

}

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

import 'dart:io' show Platform;

答案 1 :(得分:1)

device_id 插件现在也可以在iPhone上正常使用。

由他们修复的错误,也更新为Swift 4.1.x

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

String device_id = await DeviceId.getID;

您可以查看更改日志here

答案 2 :(得分:0)

让我通过device_info插件对此进行解释。

第1步添加依赖项

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();
    }
  },
)

希望对您有所帮助。

答案 3 :(得分:0)

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

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

  3. 并致电
    String device_id = await DeviceId.getID;