iPhone, iPod, iPad 모델이 내 응용 프로그램을 사용하고 있는지 어떻게 확인할 수 있습니까? 아이폰, 아이폰 3G, 아이폰 3GS 등 일반 목적 C에 대한이 답변처럼iOS 장치 및 버전을 모노 터치로 얻으려면
: 나는 같은 출력을 얻을 싶습니다이 example 툭 및 iOS 장치 및 시뮬레이터의 현재 목록에 업데이트 Answer to my question in Objective C
iPhone, iPod, iPad 모델이 내 응용 프로그램을 사용하고 있는지 어떻게 확인할 수 있습니까? 아이폰, 아이폰 3G, 아이폰 3GS 등 일반 목적 C에 대한이 답변처럼iOS 장치 및 버전을 모노 터치로 얻으려면
: 나는 같은 출력을 얻을 싶습니다이 example 툭 및 iOS 장치 및 시뮬레이터의 현재 목록에 업데이트 Answer to my question in Objective C
의 등 3 월 24 일 오후 3시 (태평양 표준시) 즐겨. 3 월 24 일, 2013이 코드의
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;
}
}
}
}
새로운 버전 :
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;
}
}
}
}
새로운 iPad Air 및 iPad Mini를 고려하여 어떻게 업데이트합니까? – Goober
통합 API에서 당신은 DLL 가져 오기를 업데이트해야합니다.
다음으로 교체 :
[DllImport ("libc", CallingConvention = CallingConvention.Cdecl)]
internal static extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string property, // name of the property
IntPtr output, // output
IntPtr oldLen, // IntPtr.Zero
IntPtr newp, // IntPtr.Zero
uint newlen // 0
);
무엇을 iPad2,4에 대해? –
touche,하지만 도대체 iPad2,4와 iPad 2,1의 차이점은 무엇입니까? –
[Nothing really] (http://theiphonewiki.com/wiki/index.php?title=IPad) –