0

iPad のシリアル番号を取得したいのですが?これをアーカイブできる 2 つの方法を見つけました。1 つ目は uuid を使用する方法ですが、これは最善の解決策ではありません。iPadの背面に立っているのでシリアルナンバーが必要なので。

もう 1 つの解決策は、非推奨の github プロジェクトを実装することです:/

iPadの背面に印刷されているシリアルナンバーを取得することはできませんか?

出来ないのであれば、シリアルナンバーがどうにか守られていて、使い逃せないからでしょうか?

[更新] シリアル番号を取得できない場合、デバイス名を取得することは可能ですか?

前もって感謝します :)

4

1 に答える 1

0

iOS デバイスのシリアル番号を取得できます。しかし、AppStore に入るアプリに対して Apple がこれを許可しているかどうかはわかりません。

これらのインポートが必要になります:

#import <sys/utsname.h>
#import <dlfcn.h>

次のメソッドは、デバイスのシリアル番号を取得します。

+(NSString *) getSerialNumber
{
    NSString *serialNumber = nil;

    void *IOKit = dlopen("/System/Library/Frameworks/IOKit.framework/IOKit", RTLD_NOW);
    if (IOKit)
    {
        mach_port_t *kIOMasterPortDefault = dlsym(IOKit, "kIOMasterPortDefault");
        CFMutableDictionaryRef (*IOServiceMatching)(const char *name) = dlsym(IOKit, "IOServiceMatching");
        mach_port_t (*IOServiceGetMatchingService)(mach_port_t masterPort, CFDictionaryRef matching) = dlsym(IOKit, "IOServiceGetMatchingService");
        CFTypeRef (*IORegistryEntryCreateCFProperty)(mach_port_t entry, CFStringRef key, CFAllocatorRef allocator, uint32_t options) = dlsym(IOKit, "IORegistryEntryCreateCFProperty");
        kern_return_t (*IOObjectRelease)(mach_port_t object) = dlsym(IOKit, "IOObjectRelease");

        if (kIOMasterPortDefault && IOServiceGetMatchingService && IORegistryEntryCreateCFProperty && IOObjectRelease)
        {
            mach_port_t platformExpertDevice = IOServiceGetMatchingService(*kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"));
            if (platformExpertDevice)
            {
                CFTypeRef platformSerialNumber = IORegistryEntryCreateCFProperty(platformExpertDevice, CFSTR("IOPlatformSerialNumber"), kCFAllocatorDefault, 0);
                if (CFGetTypeID(platformSerialNumber) == CFStringGetTypeID())
                {
                    serialNumber = [NSString stringWithString:(__bridge NSString*)platformSerialNumber];
                    CFRelease(platformSerialNumber);
                }
                IOObjectRelease(platformExpertDevice);
            }
        }
        dlclose(IOKit);
    }
    return serialNumber;
}

設定で構成されているデバイスの名前を取得するのは非常に簡単です。次の方法を試してください。

+(NSString *) getDeviceName
{
    //RETURNS THE DEVICE NAME CONFIGURED IN SETTINGS
    NSString *nameString = [[UIDevice currentDevice] name];
    return nameString;
}
于 2014-11-03T04:06:07.573 に答える