Flutter开发:能否获取iOS设备信息?Android正常iOS无法获取怎么办?
Flutter iOS设备信息获取问题解决方案
iOS并非完全无法获取设备信息——Apple对设备标识类信息的获取有严格的权限与API限制,像IMEI这类敏感信息早在iOS 10+就已无法通过公开API获取,但基础设备信息仍可正常获取。以下是可行的解决方案:
推荐的Flutter包
device_info_plus:这是Flutter官方生态维护的主流设备信息工具,完美支持iOS和Android双平台。
- 使用步骤:
- 在
pubspec.yaml中添加依赖:device_info_plus: ^latest_version(替换为当前最新版本号) - 编写获取代码:
import 'package:device_info_plus/device_info_plus.dart'; final deviceInfo = DeviceInfoPlugin(); final iosInfo = await deviceInfo.iosInfo; // 可获取的常用信息示例 print('设备名称: ${iosInfo.name}'); print('iOS版本: ${iosInfo.systemVersion}'); print('设备型号: ${iosInfo.model}'); print('开发者唯一标识: ${iosInfo.identifierForVendor}');
- 在
- iOS适配注意:
identifierForVendor是Apple允许的合规设备标识,同一开发者旗下的App在同一设备上会得到相同值,卸载重装后可能变更- 无法获取IMEI、Mac地址等敏感信息,这类内容属于Apple严格限制范畴
- 若需获取广告标识符(IDFA),需额外引入
AdSupport.framework,并在info.plist中添加NSUserTrackingUsageDescription权限描述,同时请求用户授权
- 使用步骤:
package_info_plus:如果仅需获取App自身信息(如版本号、包名),这个包更轻量化,同样支持双平台。
常见排查点
- 确认iOS项目的
info.plist中已添加必要的权限描述(针对需要授权的信息) - 检查使用的包是否为最新版本,旧版本可能存在iOS适配漏洞
- iOS 14+中,部分信息(如IDFA)的获取必须先请求用户授权,未授权会返回空值或默认值
内容的提问来源于stack exchange,提问作者eskemender
相关产品推荐
相关产品推荐

