MAUI Essentials 是 .NET MAUI 框架中内置的一组轻量级、跨平台设备服务 API,它把原本在 Xamarin.Essentials 中的功能完整继承并深度整合进 MAUI 生态,无需额外安装 NuGet 包。它不是独立库,而是项目启用后即开即用的“能力层”,覆盖权限、传感器、网络、存储、生物识别等高频原生功能。
核心定位与使用前提
MAUI Essentials 不是可选插件,而是 .NET MAUI 项目的默认组成部分。只要项目目标框架为
net8.0-android、
net8.0-ios等 MAUI 支持的平台,并在项目文件中设置了
<usemauiessentials>true</usemauiessentials>(新模板已默认开启),就能直接调用所有功能。
不需要引用
Xamarin.Essentials,也不再有
Microsoft.Maui.Essentials这个独立命名空间——相关 API 已按逻辑拆分到更清晰的命名空间中,例如:
Microsoft.Maui.ApplicationModel.Permissions(权限)
Microsoft.Maui.Networking(网络状态)
Microsoft.Maui.Storage(安全存储、文件系统)
Microsoft.Maui.Devices.Sensors(加速度计、陀螺仪等)
常用功能模块详解
权限管理
统一处理相机、位置、通知、生物识别等敏感权限。支持检查状态、动态请求、判断是否需提示用户(
ShouldShowRationale),并兼容 Android 13+ 的细粒度权限(如蓝牙扫描/连接分离)和 iOS 的受限状态(
Restricted、
Limited)。
网络状态监测
通过
Connectivity.Current.NetworkAccess实时获取联网能力(
Internet/
Local/
None),还可订阅
ConnectivityChanged事件,在 Wi-Fi 切换到蜂窝或断网瞬间触发响应逻辑。
安全数据存储
SecureStorage将密钥、令牌等敏感信息加密存入系统保险箱(Android KeyStore / iOS Keychain),调用只需两行:
await SecureStorage.SetAsync("token", "abc123");var token = await SecureStorage.GetAsync("token");
文件系统抽象
FileSystem.AppDataDirectory提供统一路径,自动映射到各平台沙盒目录(如 Android 的
/data/data/{pkg}/files/,iOS 的 Application Support)。配合
Preferences可持久化简单键值对。
注意事项与避坑点
部分功能仍需平台侧配置才能生效,不能只靠 C# 调用:
Android:在Platforms/Android/AndroidManifest.xml声明对应权限(如
CAMERA、
INTERNET) iOS:在
Platforms/iOS/Info.plist添加用途说明键(如
NSCameraUsageDescription、
NSFaceIDUsageDescription) 初始化要求:Android 需在
MainActivity.OnCreate()中调用
Platform.Init();iOS 在
AppDelegate.FinishedLaunching()中调用
基本上就这些。它不复杂但容易忽略平台配置,实际开发中建议把权限、描述文案、初始化三步列成 checklist,一次配全,避免真机调试时卡在黑屏或弹窗拒绝。
