using System; using System.Runtime.InteropServices; using TINK.Model.Device; using Xamarin.Essentials; [assembly: Xamarin.Forms.Dependency(typeof(TINK.iOS.Device.Device))] namespace TINK.iOS.Device { public class Device : ISmartDevice { [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 Manufacturer => DeviceInfo.Manufacturer; public string Model => DeviceInfo.Model; public string PlatformText => DeviceInfo.Platform.ToString(); public string VersionText => DeviceInfo.VersionString; /// Gets unitque device identifier. /// Gets the identifies specifying device. public string Identifier => UIKit.UIDevice.CurrentDevice?.IdentifierForVendor?.AsString() ?? string.Empty; } }