表示されない - インターネット共有 iphone できない




特定のiPhone/iPod touchモデルを検出する (4)

可能な重複:
iPhone SDKでデバイスを判別する(iPhone、iPod Touch)

私はiPhoneのピアツーピアBluetooth機能(そしておそらくiPod touchの第2世代)を利用したゲームを作っています。 しかし、ユーザーがiPod 1st genとiPhone 2Gでマルチプレイヤーを再生しようとするのを止めるには、特定のデバイスモデルを確認する必要があります。

[[UIDevice currentDevice] model]は、そのデバイスが「iPhone」か「iPod touch」であるかどうかだけを通知します。 「iPhone 3GS」、「iPod touch 1世代」など、特定のデバイスモデルを確認する方法はありますか?

編集:

特定のデバイスモデルを取得するために、次のコードを使用するUIDevice(私はErica Sadunによって作成されたと思いますが、私はそれを信用しません)というカテゴリがあります。 ここでカテゴリ全体を他の有用なものと一緒に見つけることができます: https://github.com/erica/uidevice-extension : https://github.com/erica/uidevice-extension

#include <sys/types.h>
#include <sys/sysctl.h>

@implementation UIDevice (Hardware)

/*
 Platforms
 iPhone1,1 -> iPhone 1G
 iPhone1,2 -> iPhone 3G 
 iPod1,1   -> iPod touch 1G 
 iPod2,1   -> iPod touch 2G 
*/

- (NSString *) platform
{
  size_t size;
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
  char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
  free(machine);
  return platform;
}

これは動作し、これを使用するアプリは最近AppStoreで承認されました。


iPhone 4はiPhone3,1とiPhone3,2です
iPhone 4SはiPhone4,1です
iPad 2はiPad2,1 iPad2,2、iPad2,3はバージョンによって異なります(GSMなど)
iPad 3はiPad3,1 iPad3,2、iPad3,3のバージョン(GSMなど)

Iphoneの秘密を参照してください(「内部製品コード」までスクロールしてください)。

もう一つの良い情報源は: everyiphone.com


sys/utsname.hからunameを使用してデバイスモデル番号を取得できます。 例えば:

#import <sys/utsname.h>

NSString*
machineName()
{
    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
}

結果は次のようになります。

@"i386"      on the simulator
@"iPod1,1"   on iPod Touch
@"iPod2,1"   on iPod Touch Second Generation
@"iPod3,1"   on iPod Touch Third Generation
@"iPod4,1"   on iPod Touch Fourth Generation
@"iPhone1,1" on iPhone
@"iPhone1,2" on iPhone 3G
@"iPhone2,1" on iPhone 3GS
@"iPad1,1"   on iPad
@"iPad2,1"   on iPad 2
@"iPad3,1"   on iPad 3 (aka new iPad)
@"iPhone3,1" on iPhone 4
@"iPhone4,1" on iPhone 4S
@"iPhone5,1" on iPhone 5
@"iPhone5,2" on iPhone 5

最も完全なUIDevice(ハードウェア)カテゴリはおそらくhttp://github.com/erica/uidevice-extension/ Sadunによる)です。

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"

BOOL hasHighResScreen = NO;
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    CGFloat scale = [[UIScreen mainScreen] scale];
    if (scale > 1.0) {
        hasHighResScreen = YES;
    }
}




device