iOSデバイスを判別する Deviceクラスを作成しました

iPhone/iPadのデバイス名を判別する Deviceクラスを作成しました。

このクラスでは以下の事が可能になります。

  1. 使用しているデバイス名・バージョンの取得 (iPhone5/iPhone4/iPad等
  2. 指定したデバイスであるか(真偽値)の取得 (iPhone5であれば、isiPhone5メソッドの呼び出しで 1が返ります

以下のリンクからダウンロード出来ます。GitHubにサンプルコードを含めたソースファイルを公開しています。

ダウンロード

ソースコード

Device.h

1
2
3
4
5
6
7
8
9
10
11
12
#import <Foundation/Foundation.h>

@interface Device : NSString

- (NSString *)iOSDevice;
- (BOOL) isiPhone5;
- (BOOL) isiPhone4;
- (BOOL) isiPhone3;
- (BOOL) isIpad;
- (BOOL) isIpadRetina;

@end

Device.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#import "Device.h"

@implementation Device

- (NSString *)iOSDevice
{
  if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
      CGSize result = [[UIScreen mainScreen] bounds].size;
      CGFloat scale = [UIScreen mainScreen].scale;
      result = CGSizeMake(result.width * scale, result.height * scale);
      if(result.height == 960){
        return (@"iPhone4");
      }
      if(result.height == 1136){
        return (@"iPhone5");
      }
    } else {
      return (@"iPhone3");
    }
  } else {
    if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
      return (@"iPad Retina");
    } else {
      return (@"iPad");
    }
  }
  return (@"unknown");
}

- (BOOL) isiPhone5
{
  return ([[self iOSDevice] isEqualToString:@"iPhone5"]);
}

- (BOOL) isiPhone4
{
  return ([[self iOSDevice] isEqualToString:@"iPhone4"]);
}

- (BOOL) isiPhone3
{
  return ([[self iOSDevice] isEqualToString:@"iPhone3"]);
}

- (BOOL) isIpad
{
  return ([[self iOSDevice] isEqualToString:@"iPad"]);
}

- (BOOL) isIpadRetina
{
  return ([[self iOSDevice] isEqualToString:@"iPad Retina"]);
}

@end

サンプルソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (void)setDeviceInformation
{
  //初期化
  Device *device = [[Device alloc] init];
  //デバイス名称
  self.labelIOSDevice.text = device.iOSDevice;
  //iPhone5であれば1が返る
  self.labeliPhone5.text = [NSString stringWithFormat:@"%@%d", @"isiPhone5: ", device.isiPhone5];
  //iPhone4/4Sであれば1が返る
  self.labeliPhone4.text = [NSString stringWithFormat:@"%@%d", @"isiPhone4: ", device.isiPhone4];
  //iPhone3G/3GSであれば1が返る
  self.labeliPhone3.text = [NSString stringWithFormat:@"%@%d", @"isiPhone3: ", device.isiPhone3];
  //iPad/iPad2/iPad miniであれば1が返る
  self.labelIpad.text = [NSString stringWithFormat:@"%@%d", @"isIpad: ", device.isIpad];
  //新しい iPad以降であれば1が返る
  self.labelIpadRetina.text = [NSString stringWithFormat:@"%@%d", @"isIpadRetina: ", device.isIpadRetina];
}

関連記事

お薦めの参考書

詳細! Swift 2 iPhoneアプリ開発 入門ノート Swift 2 + Xcode 7対応
Swiftをこれから学ぶ方に向けて、図解入りで丁寧に解説されています。基本に重点を置き解説されていますので、応用の段階に入った時もスムーズに実装できます。サンプルコードも多数収録されており、大変充実した内容となっています。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • アート壁紙HD(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)