1. ホーム
  2. iphone

[解決済み] iPhone/iPod touchの特定モデルを検出する [重複]。

2022-11-20 16:07:44

質問

重複の可能性があります。

iOSを搭載したデバイス(iPhone、iPod Touch)を判定する。

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

[[UIDevice currentDevice] model] は、デバイスが "iPhone" または "iPod touch" であるかどうかだけを教えてくれます。例えば、"iPhone 3GS" や "iPod touch 1st generation" のように、特定のデバイス モデルをチェックする方法はありますか?

EDITです。

UIDeviceのカテゴリ(Erica Sadunによって作成されたと思いますが、私はそれを信用しません)があり、特定のデバイスモデルを取得するために次のコードを使用します。他の便利なものと一緒に、このカテゴリ全体をここで見ることができます。 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で承認されています。

どのように解決するのですか?

最も完全なUIDevice (Hardware)カテゴリは、おそらく http://github.com/erica/uidevice-extension/ (Erica Sadun による) です。

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