---
title: UIDevice
framework: uikit
role: symbol
role_heading: Class
path: uikit/uidevice
---

# UIDevice

A representation of the current device.

## Declaration

```swift
@MainActor class UIDevice
```

## Overview

Overview Use a UIDevice object to get information about the device such as assigned name, device model, and operating-system name and version. You also use the UIDevice instance to detect changes in the device’s characteristics, such as physical orientation. You get the current orientation using the orientation property or receive change notifications by registering for the orientationDidChangeNotification notification. Before using either of these techniques to get orientation data, you must enable data delivery using the beginGeneratingDeviceOrientationNotifications() method. When you no longer need to track the device orientation, call the endGeneratingDeviceOrientationNotifications() method to disable the delivery of notifications. Similarly, you can use the UIDevice instance to obtain information and notifications about changes to the battery’s charge state (described by the batteryState property) and charge level (described by the batteryLevel property). The UIDevice instance also provides access to the proximity sensor state (described by the proximityState property). The proximity sensor detects whether the user is holding the device close to their face. Enable battery monitoring or proximity sensing only when you need it. You can also use the playInputClick() instance method to play keyboard input clicks in custom input and keyboard accessory views.

## Topics

### Getting the shared device instance

- [current](uikit/uidevice/current.md)

### Identifying the device and operating system

- [name](uikit/uidevice/name.md)
- [systemName](uikit/uidevice/systemname.md)
- [systemVersion](uikit/uidevice/systemversion.md)
- [model](uikit/uidevice/model.md)
- [localizedModel](uikit/uidevice/localizedmodel.md)
- [userInterfaceIdiom](uikit/uidevice/userinterfaceidiom.md)
- [identifierForVendor](uikit/uidevice/identifierforvendor.md)

### Determining the available features

- [isMultitaskingSupported](uikit/uidevice/ismultitaskingsupported.md)

### Tracking the device orientation

- [orientation](uikit/uidevice/orientation.md)
- [UIDeviceOrientation](uikit/uideviceorientation.md)
- [isGeneratingDeviceOrientationNotifications](uikit/uidevice/isgeneratingdeviceorientationnotifications.md)
- [beginGeneratingDeviceOrientationNotifications()](uikit/uidevice/begingeneratingdeviceorientationnotifications().md)
- [endGeneratingDeviceOrientationNotifications()](uikit/uidevice/endgeneratingdeviceorientationnotifications().md)

### Determining the current orientation

- [isPortrait](uikit/uideviceorientation/isportrait.md)
- [isLandscape](uikit/uideviceorientation/islandscape.md)
- [isFlat](uikit/uideviceorientation/isflat.md)
- [isValidInterfaceOrientation](uikit/uideviceorientation/isvalidinterfaceorientation.md)

### Getting the device battery state

- [batteryLevel](uikit/uidevice/batterylevel.md)
- [isBatteryMonitoringEnabled](uikit/uidevice/isbatterymonitoringenabled.md)
- [batteryState](uikit/uidevice/batterystate-swift.property.md)
- [UIDevice.BatteryState](uikit/uidevice/batterystate-swift.enum.md)

### Using the proximity sensor

- [isProximityMonitoringEnabled](uikit/uidevice/isproximitymonitoringenabled.md)
- [proximityState](uikit/uidevice/proximitystate.md)

### Playing input clicks

- [playInputClick()](uikit/uidevice/playinputclick().md)

### Getting the current idiom

- [UIUserInterfaceIdiom](uikit/uiuserinterfaceidiom.md)
- [UI_USER_INTERFACE_IDIOM()](uikit/ui_user_interface_idiom().md)

### Managing notifications

- [batteryLevelDidChangeNotification](uikit/uidevice/batteryleveldidchangenotification.md)
- [batteryStateDidChangeNotification](uikit/uidevice/batterystatedidchangenotification.md)
- [orientationDidChangeNotification](uikit/uidevice/orientationdidchangenotification.md)
- [proximityStateDidChangeNotification](uikit/uidevice/proximitystatedidchangenotification.md)

### Structures

- [UIDevice.BatteryLevelDidChangeMessage](uikit/uidevice/batteryleveldidchangemessage.md)
- [UIDevice.BatteryStateDidChangeMessage](uikit/uidevice/batterystatedidchangemessage.md)
- [UIDevice.OrientationDidChangeMessage](uikit/uidevice/orientationdidchangemessage.md)
- [UIDevice.ProximityStateDidChangeMessage](uikit/uidevice/proximitystatedidchangemessage.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [Sendable](swift/sendable.md)

## See Also

### Device environment

- [UIStatusBarManager](uikit/uistatusbarmanager.md)
