You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测WASM平台部署的UNO App当前运行的设备类型?

UNO WASM 平台设备检测与适配方案

1. 直接使用UNO内置设备类型API

UNO 已经封装了跨平台的设备类型识别能力,你可以直接调用Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily属性获取当前设备类型,WASM 平台下该属性会自动解析浏览器UA返回对应值:

  • 桌面端(Windows PC/Mac)返回值为 Windows.Desktop
  • 手机端返回值为 Windows.Mobile
  • 平板端返回值为 Windows.Tablet

示例代码:

using Windows.System.Profile;

var deviceFamily = AnalyticsInfo.VersionInfo.DeviceFamily;
if (deviceFamily == "Windows.Desktop")
{
    // 桌面端逻辑
}
else if (deviceFamily == "Windows.Tablet")
{
    // 平板端逻辑
}
else if (deviceFamily == "Windows.Mobile")
{
    // 手机端逻辑
}

2. 结合屏幕尺寸判断提升准确率

部分平板的UA可能被识别为桌面端,你可以结合窗口尺寸做二次判断,通用判定规则参考:

  • 窗口宽度≥1024px:判定为桌面端
  • 窗口宽度600px~1023px:判定为平板端
  • 窗口宽度<600px:判定为手机端

3. XAML 直接自适应适配方案

如果你的核心需求是调整XAML布局适配屏幕,优先使用UNO支持的AdaptiveTrigger自适应触发器,不需要额外写C#判断设备类型,直接在XAML中定义不同尺寸下的布局规则即可:

<Page>
    <Grid x:Name="RootPanel">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup>
                <!-- 桌面端布局 -->
                <VisualState x:Name="DesktopState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="1024" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="RootPanel.Orientation" Value="Horizontal" />
                        <Setter Target="ContentContainer.Margin" Value="48" />
                    </VisualState.Setters>
                </VisualState>
                <!-- 平板端布局 -->
                <VisualState x:Name="TabletState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="600" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="RootPanel.Orientation" Value="Vertical" />
                        <Setter Target="ContentContainer.Margin" Value="24" />
                    </VisualState.Setters>
                </VisualState>
                <!-- 手机端布局 -->
                <VisualState x:Name="MobileState">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="0" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="RootPanel.Orientation" Value="Vertical" />
                        <Setter Target="ContentContainer.Margin" Value="12" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <!-- 页面内容 -->
        <StackPanel x:Name="ContentContainer">
            <TextBlock Text="示例内容" />
        </StackPanel>
    </Grid>
</Page>

注意事项

  • WASM平台的UA识别存在小概率误差,建议将设备类型API和尺寸判断结合使用,适配准确率更高
  • 如果应用支持用户自由缩放窗口,优先使用自适应触发器做响应式布局,比固定判断设备类型灵活性更强

内容的提问来源于stack exchange,提问作者Robotuner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:06:02