如何使用MvvMCross在运行时检测平台?

Coa*_*tsy 5 mvvmcross

我希望用户能够将有关我的应用的反馈发送到一个地址.使用电子邮件插件,这一切都很好,但在电子邮件的正文中,我想预先填充一些有关他们正在运行的应用程序的信息.

理想情况下,我喜欢设备,操作系统,屏幕分辨率,方向等,但现在我只是满足于操作系统

Stu*_*art 6

这感觉很奇怪,但我记不起有人曾要求这个作为一个功能,我不认为有人为它做了一个插件.

鉴于您未来的要求(屏幕资源,方向等),最简单的方法可能是在核心项目中定义一个接口:

 public enum OS
 {
    Droid, Touch, WinPhone, WinStore, Mac, Wpf
 }

 public IDetails
 {
     OS OS { get; }
     // whatever else you need
 }
Run Code Online (Sandbox Code Playgroud)

然后,您可以在每个UI项目中注册此实现 - 例如,Setup在WinPhone中,添加:

 protected override void InitializeLastChance()
 {
     base. Setup.InitializeLastChance();
     Mvx.RegisterSingleton<IDetails>(new WindowsPhoneDetails());
 }
Run Code Online (Sandbox Code Playgroud)

哪里:

 public class WindowsPhoneDetails : IDetails
 {
     public OS OS { get { return OS.WinPhone; } }
 }
Run Code Online (Sandbox Code Playgroud)

有关此方法的更多信息,请参阅https://github.com/MvvmCross/MvvmCross/wiki/Customising-using-App-and-Setup#wiki-registering-platform-specific-business-objects-in-setupinitializefirstchance-and-setupinitializelastchance

(具体地,对于屏幕尺寸,还参见IDisplayDimensionsServicehttps://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/FractalGen)