iOS端末情報を取得する「DCDevice」クラス

iPhone/iPadのデバイス情報を判別する「DCDevice」クラスを作成しました。

これまでこのブログで公開してきた「Device」クラスを改良したもので、主に9個の機能を搭載しています。

下記よりサンプルコードを含めたソースファイルをダウンロードできます。

ダウンロード

主な機能

  1. iOSバージョンの取得
  2. iPhone 5であるかの判別
  3. iPhone 4/4Sであるかの判別
  4. iPhone 3G/3GSであるかの判別
  5. iPadであるかの判別
  6. iPad Retina端末であるかの判別
  7. iOS6以降であるかの判別
  8. iOS7以降であるかの判別
  9. 4インチ端末であるかの判別

サンプルソースコード

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
- (void)setDeviceInformation
{
    //デバイス名称
    self.labelIOSDevice.text = [DCDevice iOSDevice];

    //iPhone5であれば1が返る
    self.labeliPhone5.text = [NSString stringWithFormat:@"%@%d", @"isiPhone5: ", [DCDevice isiPhone5]];

    //iPhone4/4Sであれば1が返る
    self.labeliPhone4.text = [NSString stringWithFormat:@"%@%d", @"isiPhone4: ", [DCDevice isiPhone4]];

    //iPhone3G/3GSであれば1が返る
    self.labeliPhone3.text = [NSString stringWithFormat:@"%@%d", @"isiPhone3: ", [DCDevice isiPhone3]];

    //iPad/iPad2/iPad miniであれば1が返る
    self.labelIpad.text = [NSString stringWithFormat:@"%@%d", @"isIpad: ", [DCDevice isIpad]];

    //新しい iPad以降であれば1が返る
    self.labelIpadRetina.text = [NSString stringWithFormat:@"%@%d", @"isIpadRetina: ", [DCDevice isIpadRetina]];

    //4インチ端末であれば1が返る
    self.label4inch.text = [NSString stringWithFormat:@"%@%d", @"is4inch: ", [DCDevice is4inch]];

    //iOS6以降であれば1が返る
    self.labeliOS6.text = [NSString stringWithFormat:@"%@%d", @"isiOS6: ", [DCDevice isIOS6]];
}

ソースコード

DCDevice.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import <Foundation/Foundation.h>

#define iPhone_5    @"iPhone5"
#define iPhone_4    @"iPhone4"
#define iPhone_3    @"iPhone3"
#define IPAD_RETINA @"iPad Retina"
#define IPAD        @"iPad"

@interface DCDevice : NSString

#pragma mark - public method
+ (NSString *)iOSDevice;
+ (BOOL)      isiPhone5;
+ (BOOL)      isiPhone4;
+ (BOOL)      isiPhone3;
+ (BOOL)      isIpad;
+ (BOOL)      isIpadRetina;
+ (BOOL)      is4inch;
+ (BOOL)      isIOS6;
+ (BOOL)      isIOS7;
+ (CGFloat)   iOSVersion;
+ (BOOL)      isJapaneseLanguage;

@end

DCDevice.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#import "DCDevice.h"

@implementation DCDevice

// iOSデバイス名の取得
+ (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 (iPhone_4);
            }
            if(result.height == 1136){
                return (iPhone_5);
            }
        } else {
            return (iPhone_3);
        }
    } else {
        if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
            return (IPAD_RETINA);
        } else {
            return (IPAD);
        }
    }
    return (@"unknown");
}

// iPhone 5端末であるか
+ (BOOL)isiPhone5
{
    return ([[DCDevice iOSDevice] isEqualToString:iPhone_5]);
}

// iPhone 4/4S端末であるか
+ (BOOL)isiPhone4
{
    return ([[DCDevice iOSDevice] isEqualToString:iPhone_4]);
}

// iPhone 3G/3GSであるか
+ (BOOL)isiPhone3
{
    return ([[DCDevice iOSDevice] isEqualToString:iPhone_3]);
}

// iPad端末であるか
+ (BOOL)isIpad
{
    return ([[DCDevice iOSDevice] isEqualToString:IPAD]);
}

// iPad Retina端末であるか
+ (BOOL)isIpadRetina
{
    return ([[DCDevice iOSDevice] isEqualToString:IPAD_RETINA]);
}

// iOS6以降であるか
+ (BOOL)isIOS6
{
    NSString *osversion = [UIDevice currentDevice].systemVersion;
    NSArray *a = [osversion componentsSeparatedByString:@"."];
    return ([(NSString*)[a objectAtIndex:0] intValue] >= 6);
}

// iOS7以降であるか
+ (BOOL)isIOS7
{
    NSString *osversion = [UIDevice currentDevice].systemVersion;
    NSArray *a = [osversion componentsSeparatedByString:@"."];
    return ([(NSString*)[a objectAtIndex:0] intValue] >= 7);
}

// 4インチ端末であるか
+ (BOOL)is4inch
{
    CGSize screenSize = [[UIScreen mainScreen] bounds].size;
    return (screenSize.width == 320.0 && screenSize.height == 568.0);
}

// iOSのバージョンを返す
+ (CGFloat)iOSVersion
{
    return ([[[UIDevice currentDevice] systemVersion] floatValue]);
}

// 言語設定取得
+ (BOOL)isJapaneseLanguage
{
    static BOOL isJapanese;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSArray *languages = [NSLocale preferredLanguages];
        NSString *currentLanguage = [languages objectAtIndex:0];
        isJapanese = [currentLanguage compare:@"ja"] == NSOrderedSame;
    });
    return isJapanese;
}

@end

お薦めの参考書

Swiftではじめる iPhoneアプリ開発の教科書 Swift 2 & Xcode 7対応
この参考書の通りに実践サンプルを作成することで、確実に力を養うことができます。サンプルコードもサイトからダウンロード出来るようになっており、特に広告の貼り方などが参考になりました。Swiftで何が出来るかを知ることができ、入門用にお薦めの1冊です。

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

About

Masaki Hirokawa (@dolice_apps)

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

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙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)