If you open Settings -> General -> About
, it'll say Bob's iPhone at the top of the screen. How do you programmatically grab that name?

- 4,247
- 1
- 22
- 40

- 24,165
- 16
- 57
- 58
12 Answers
From the UIDevice
class:
Swift version:
UIDevice.current.name
Objective-C version:
[[UIDevice currentDevice] name];
The UIDevice is a class that provides information about the iPhone or iPod Touch device.
Some of the information provided by UIDevice is static, such as device name or system version.
source: http://servin.com/iphone/uidevice/iPhone-UIDevice.html
Offical Documentation: Apple Developer Documentation > UIDevice
Class Reference

- 1,230
- 1
- 12
- 12

- 25,141
- 34
- 106
- 144
-
2Be careful: the tutorial at that link, while quite useful, is aimed at OS 2.2, and uses some methods that are deprecated in 3.0. – Tim Jul 08 '09 at 19:49
-
@Tim: You are absolutely right. I didn't think of that. Though, I wasn't suggesting the tutorial; I was simply providing my source of information plus a source for more information. – Frank V Jul 08 '09 at 19:58
-
@FrankV What permissions should I request from the user in order to get myMusicAppName to change his Iphone name? How do I do that in Swift? Thank you – bibscy Jul 10 '19 at 10:01
In addition to the above answer, this is the actual code:
[[UIDevice currentDevice] name];

- 9,109
- 1
- 47
- 57

- 4,561
- 3
- 30
- 29
Remember: import UIKit
Swift:
UIDevice.currentDevice().name
Swift 3, 4, 5:
UIDevice.current.name

- 3,533
- 5
- 20
- 31
-
3
-
-
Yes, UIDevice.current.name worked for me in Swift 5. Similarly I can tap into .model .batteryLevel etc Thanks! – marika.daboja Mar 30 '21 at 03:20
-
Here is class structure of UIDevice
+ (UIDevice *)currentDevice;
@property(nonatomic,readonly,strong) NSString *name; // e.g. "My iPhone"
@property(nonatomic,readonly,strong) NSString *model; // e.g. @"iPhone", @"iPod touch"
@property(nonatomic,readonly,strong) NSString *localizedModel; // localized version of model
@property(nonatomic,readonly,strong) NSString *systemName; // e.g. @"iOS"
@property(nonatomic,readonly,strong) NSString *systemVersion;

- 33,269
- 19
- 164
- 293

- 3,031
- 33
- 41
For swift4.0 and above used below code:
let udid = UIDevice.current.identifierForVendor?.uuidString
let name = UIDevice.current.name
let version = UIDevice.current.systemVersion
let modelName = UIDevice.current.model
let osName = UIDevice.current.systemName
let localized = UIDevice.current.localizedModel
print(udid ?? "") // ABCDEF01-0123-ABCD-0123-ABCDEF012345
print(name) // Name's iPhone
print(version) // 14.5
print(modelName) // iPhone
print(osName) // iOS
print(localized) // iPhone

- 1,794
- 1
- 16
- 23

- 402
- 5
- 13
-
1
-
1UIDevice.current.name its not work under iOS16 (beta3), Apple changed again. – Uthen Jul 18 '22 at 17:20
Unfortunately from iOS 16 onwards you need a special entitlement. You can request it here: https://developer.apple.com/contact/request/user-assigned-device-name/

- 1,427
- 1
- 15
- 20
For Swift 4+ versions, please use the below code:
UIDevice.current.name

- 36,322
- 27
- 84
- 93

- 295
- 3
- 9
To get an iPhone's device name programmatically
UIDevice *deviceInfo = [UIDevice currentDevice];
NSLog(@"Device name: %@", deviceInfo.name);
// Device name: my iPod

- 33,281
- 23
- 160
- 191

- 3,486
- 26
- 34
Device Name would not work out of Box now, Need to have a special entitlement.
Entitlement : com.apple.developer.device-information.user-assigned-device-name
Doc : https://developer.apple.com/forums/thread/708275
Official : https://developer.apple.com/documentation/uikit/uidevice/1620015-name

- 41
- 2
As of iOS 16 name
cannot be used for that and unfortunately I couldn't find an alternative. From UIKit.UIDevice
:
open var name: String { get } // Synonym for model. Prior to iOS 16, user-assigned device name (e.g. @"My iPhone").

- 69
- 6