本文介绍了如何在 Monotouch 中获取 iOS 设备和版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何确定使用我的应用程序的 iPhone、iPod、iPad 型号?我想得到类似的输出:iPhone、iPhone 3G、iPhone 3GS 等
How can I determine what iPhone, iPod, iPad Model is using my application? I would like to get output like: iPhone, iPhone 3G, iPhone 3GS etc
喜欢这个简单目标 C 的答案:在目标 C 中回答我的问题
Like this answer for plain objective C: Answer to my question in Objective C
推荐答案
接受了这个 example 并更新将其添加到截至太平洋标准时间 3 月 24 日下午 3 点的当前 iOS 设备和模拟器列表.享受.
Took this example and updated it to the current list of iOS Devices and Simulators as of March 24th 3PM PST. Enjoy.
using System;
using System.Runtime.InteropServices;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
namespace YourNamespace
{
public class IOSDeviceHardware
{
public const string HardwareProperty = "hw.machine";
public enum IOSHardware {
iPhone,
iPhone3G,
iPhone3GS,
iPhone4,
iPhone4RevA,
iPhone4CDMA,
iPhone4S,
iPhone5GSM,
iPhone5CDMAGSM,
iPodTouch1G,
iPodTouch2G,
iPodTouch3G,
iPodTouch4G,
iPodTouch5G,
iPad,
iPad3G,
iPad2,
iPad2GSM,
iPad2CDMA,
iPad2RevA,
iPadMini,
iPadMiniGSM,
iPadMiniCDMAGSM,
iPad3,
iPad3CDMA,
iPad3GSM,
iPad4,
iPad4GSM,
iPad4CDMAGSM,
iPhoneSimulator,
iPhoneRetinaSimulator,
iPadSimulator,
iPadRetinaSimulator,
Unknown
}
[DllImport(MonoTouch.Constants.SystemLibrary)]
static internal extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string property, IntPtr output, IntPtr oldLen, IntPtr newp, uint newlen);
public static IOSHardware Version {
get {
var pLen = Marshal.AllocHGlobal(sizeof(int));
sysctlbyname(IOSDeviceHardware.HardwareProperty, IntPtr.Zero, pLen, IntPtr.Zero, 0);
var length = Marshal.ReadInt32(pLen);
if (length == 0) {
Marshal.FreeHGlobal(pLen);
return IOSHardware.Unknown;
}
var pStr = Marshal.AllocHGlobal(length);
sysctlbyname(IOSDeviceHardware.HardwareProperty, pStr, pLen, IntPtr.Zero, 0);
var hardwareStr = Marshal.PtrToStringAnsi(pStr);
Marshal.FreeHGlobal(pLen);
Marshal.FreeHGlobal(pStr);
if (hardwareStr == "iPhone1,1") return IOSHardware.iPhone;
if (hardwareStr == "iPhone1,2") return IOSHardware.iPhone3G;
if (hardwareStr == "iPhone2,1") return IOSHardware.iPhone3GS;
if (hardwareStr == "iPhone3,1") return IOSHardware.iPhone4;
if (hardwareStr == "iPhone3,2") return IOSHardware.iPhone4RevA;
if (hardwareStr == "iPhone3,3") return IOSHardware.iPhone4CDMA;
if (hardwareStr == "iPhone4,1") return IOSHardware.iPhone4S;
if (hardwareStr == "iPhone5,1") return IOSHardware.iPhone5GSM;
if (hardwareStr == "iPhone5,2") return IOSHardware.iPhone5CDMAGSM;
if (hardwareStr == "iPad1,1") return IOSHardware.iPad;
if (hardwareStr == "iPad1,2") return IOSHardware.iPad3G;
if (hardwareStr == "iPad2,1") return IOSHardware.iPad2;
if (hardwareStr == "iPad2,2") return IOSHardware.iPad2GSM;
if (hardwareStr == "iPad2,3") return IOSHardware.iPad2CDMA;
if (hardwareStr == "iPad2,4") return IOSHardware.iPad2RevA;
if (hardwareStr == "iPad2,5") return IOSHardware.iPadMini;
if (hardwareStr == "iPad2,6") return IOSHardware.iPadMiniGSM;
if (hardwareStr == "iPad2,7") return IOSHardware.iPadMiniCDMAGSM;
if (hardwareStr == "iPad3,1") return IOSHardware.iPad3;
if (hardwareStr == "iPad3,2") return IOSHardware.iPad3CDMA;
if (hardwareStr == "iPad3,3") return IOSHardware.iPad3GSM;
if (hardwareStr == "iPad3,4") return IOSHardware.iPad4;
if (hardwareStr == "iPad3,5") return IOSHardware.iPad4GSM;
if (hardwareStr == "iPad3,6") return IOSHardware.iPad4CDMAGSM;
if (hardwareStr == "iPod1,1") return IOSHardware.iPodTouch1G;
if (hardwareStr == "iPod2,1") return IOSHardware.iPodTouch2G;
if (hardwareStr == "iPod3,1") return IOSHardware.iPodTouch3G;
if (hardwareStr == "iPod4,1") return IOSHardware.iPodTouch4G;
if (hardwareStr == "iPod5,1") return IOSHardware.iPodTouch5G;
if (hardwareStr == "i386" || hardwareStr=="x86_64")
{
if (UIDevice.CurrentDevice.Model.Contains("iPhone"))
{
if(UIScreen.MainScreen.Scale > 1.5f)
return IOSHardware.iPhoneRetinaSimulator;
else
return IOSHardware.iPhoneSimulator;
}
else
{
if(UIScreen.MainScreen.Scale > 1.5f)
return IOSHardware.iPadRetinaSimulator;
else
return IOSHardware.iPadSimulator;
}
}
return IOSHardware.Unknown;
}
}
}
}
这篇关于如何在 Monotouch 中获取 iOS 设备和版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!