无法确定 Xamarin Forms 应用程序是在模拟器中还是在设备上运行

Posted

技术标签:

【中文标题】无法确定 Xamarin Forms 应用程序是在模拟器中还是在设备上运行【英文标题】:Unable to determine if the Xamarin Forms application is running in the Simulator or on the Device 【发布时间】:2016-05-01 07:04:15 【问题描述】:

我正在尝试确定应用是在模拟器中运行还是在硬件 (Apple iPhone) 设备上运行。

各种答案都在暗示我做以下事情:

bool isSimulator = MonoTouch.ObjCRuntime.Runtime.Arch ==
    MonoTouch.ObjCRuntime.Arch.SIMULATOR;

我已将其添加到我的 ios 应用程序 AppDelegate.cs 文件中。但它确实可以编译 - 我缺少命名空间或程序集。

这是 FULL 方法的图片(颜色编码显示它找不到静态属性):

【问题讨论】:

【参考方案1】:

使用子句:

using ObjCRuntime;

代码:

bool isSimulator = Runtime.Arch == Arch.SIMULATOR;

仅供参考:MonoTouch 命名空间已弃用(~2012 年),并已在“Xamarin.iOS”产品中分解为多个命名空间。

【讨论】:

如果您在代码中指定它,您实际上并不需要 using ObjCRuntime。不再需要对 MonoTouch 命名空间进行更正。【参考方案2】:

使用UIDevice.CurrentDevice 信息的替代方法:

public static class IosHelper

    public static bool IsSimulator 
        get 
            return UIDevice.CurrentDevice.Model.EndsWith("Simulator") || UIDevice.CurrentDevice.Name.EndsWith("Simulator");
        
    

源自this answer。

【讨论】:

以上是关于无法确定 Xamarin Forms 应用程序是在模拟器中还是在设备上运行的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xamarin.Forms 中实现导航

如何在 Xamarin.Forms.UITesting 中触发/调试后门功能?

Xamarin.Forms 无法更改本地设备上 Xamarin.iOS 中的应用程序图标

无法反序列化当前 JSON 对象 xamarin.forms

无法调试在 Xamarin.Forms 中制作的 IOS 应用程序

无法构建 Xamarin.Forms iOS 项目