---
title: DeviceCheck
framework: DeviceCheck
role: collection
role_heading: Framework
platforms: [iOS 11.0+, iPadOS 11.0+, Mac Catalyst 11.0+, macOS 10.15+, tvOS 11.0+, visionOS 1.0+, watchOS 9.0+]
path: devicecheck
---

# DeviceCheck

Reduce fraudulent use of your services by managing device state and asserting app integrity.

## Overview

Overview The DeviceCheck services consist of both a framework interface that you access from your app and an Apple server interface that you access from your own server. Using the DCDevice class in your app, you can get a token that you use on your server to set and query two binary digits of data per device, while maintaining user privacy. For example, you might use this data to identify devices that have already taken advantage of a promotional offer that you provide, or to flag a device that you’ve determined to be fraudulent. The server-to-server APIs also let you verify that the token you receive comes from your app on an Apple device. Someone who modifies your app and distributes it outside the App Store can add unauthorized features like game cheats, ad removal, or access to premium content. The App Attest service gives your app a way to assert its validity so that your server can more confidently provide access to sensitive resources. You use the DCAppAttestService class to generate a special cryptographic key on the device, and have Apple attest to the validity of that key. You then use that key to assert the validity of your app whenever you request sensitive data from your server.

No single policy can eliminate all fraud. For example, App Attest can’t definitively pinpoint a device with a compromised operating system. Instead, the DeviceCheck services provide information that you can integrate into an overall risk assessment for a given device.

## Topics

### Device identification

- [Accessing and modifying per-device data](devicecheck/accessing-and-modifying-per-device-data.md)
- [DCDevice](devicecheck/dcdevice.md)

### App Attest

- [Establishing your app’s integrity](devicecheck/establishing-your-app-s-integrity.md)
- [Validating apps that connect to your server](devicecheck/validating-apps-that-connect-to-your-server.md)
- [Assessing fraud risk](devicecheck/assessing-fraud-risk.md)
- [Preparing to use the app attest service](devicecheck/preparing-to-use-the-app-attest-service.md)
- [Attestation Object Validation Guide](devicecheck/attestation-object-validation-guide.md)
- [DCAppAttestService](devicecheck/dcappattestservice.md)
- [App Attest Environment](bundleresources/entitlements/com.apple.developer.devicecheck.appattest-environment.md)

### Errors

- [DCError](devicecheck/dcerror-swift.struct.md)
- [DCError.Code](devicecheck/dcerror-swift.struct/code.md)
- [DCErrorDomain](devicecheck/dcerrordomain.md)
