如何使用c#从IOS设备获取IMEI

时间:2017-09-01 07:33:39

标签: c# ios .net imei

我需要使用C#...

读出IOS设备的IMEI

这在C#中是否可行?或者还有另一个我可以使用instad的值吗?

2 个答案:

答案 0 :(得分:1)

现在无法从iOS的公共API获取某些设备标识符:

IMSI - 国际移动用户识别码(SIM卡号码)

IMEI - 国际移动设备身份(设备ID)

UDID - Apple iDevices的唯一设备标识符

MAC地址 - 媒体访问控制地址(网络地址)

看看这里: http://studyswift.blogspot.gr/2015/12/asidentifiermanager-get-idfv-vendor.html

如果您可以使用任何提供的ID,则代码在Swift中,但如果您使用C#/ Xamarin,则难以转换。

希望这有帮助

答案 1 :(得分:0)

我也试图找到捕捉IMEI的方法,但我相信这是不可能的。我解决它的唯一方法是使用此代码,它返回序列号

 public class IosDevice 

{             [的DllImport(" /System/Library/Frameworks/IOKit.framework/IOKit")]             private static extern uint IOServiceGetMatchingService(uint masterPort,IntPtr matching);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern IntPtr IOServiceMatching(string s);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern IntPtr IORegistryEntryCreateCFProperty(uint entry, IntPtr key, IntPtr allocator, uint options);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern int IOObjectRelease(uint o);

        public string GetIdentifier()
        {
            string serial = string.Empty;
            uint platformExpert = IOServiceGetMatchingService(0, IOServiceMatching("IOPlatformExpertDevice"));
            if (platformExpert != 0)
            {
                NSString key = (NSString)"IOPlatformSerialNumber";
                IntPtr serialNumber = IORegistryEntryCreateCFProperty(platformExpert, key.Handle, IntPtr.Zero, 0);
                if (serialNumber != IntPtr.Zero)
                {
                    serial = NSString.FromHandle(serialNumber);
                }

                IOObjectRelease(platformExpert);
            }

            return serial;
        }
    }