<!--
{
  "availability" : [
    "iOS: 12.5.0 - 27.0.0",
    "iPadOS: 12.5.0 - 27.0.0",
    "macCatalyst: 12.5.0 - 27.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "ExposureNotification",
  "identifier" : "/documentation/ExposureNotification/ENExposureConfiguration",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Exposure Notification"
    ],
    "preciseIdentifier" : "c:objc(cs)ENExposureConfiguration"
  },
  "title" : "ENExposureConfiguration"
}
-->

# ENExposureConfiguration

The object that contains parameters for configuring exposure notification risk scoring behavior.

```
class ENExposureConfiguration
```

## Overview> Important:
> This class is available in iOS 12.5, and in iOS 13.5 and later.

The ExposureNotification framework defines an Exposure Risk Value (ERV) to allow Health Authorities to define when to alert a user that they may have been exposed to someone diagnosed with COVID-19. The app uses the ERV to calculate the user’s Meaningful Exposure Minutes (MEMs) value. Health Authorities have flexibility in calculating this value by setting weights and values related to Bluetooth attenuations, infectiousness of the affected individual, and diagnosis report type. They can also determine what threshold will result in a notification.

> Important:
> While the ERV is measured in MEMs, the system actually calculates and returns a number of seconds, rounded to the nearest minute. For example, if a person has an ERV of 2 MEMs, the app returns a value of 120 (seconds). Convert ERVs to minutes before displaying it to the user by dividing the returned value by 60.

The calculation method described in this document is available starting with iOS 14. To adopt this method of risk assessment, set the `ENAPIVersion` key to the integer value 2 in the app’s `Info.plist` file. For more information on the V1 calculation used in earlier versions of iOS, see [Exposure Risk Value Calculation in ExposureNotification Version 1](/documentation/ExposureNotification/exposure-risk-value-calculation-in-exposurenotification-version-1).

The following diagram shows how to calculate an ERV:

![A diagram showing how to calculate the exposure ERV.](images/com.apple.exposurenotification/media-3670910@2x.png)

The class defines three sets of weights that give priority to the components of the ERV: minutes-at-attenuation, infectiousness, and report type.

The weighted minutes-at-attenuation assigns priority to the amount of time that the user is near beacons at different Bluetooth attenuations. Assign values between 0–250 percent to weights that represent Immediate, Near, Medium, and Other distances.

![A diagram showing the weighted minutes-at-attenuation calculation.](images/com.apple.exposurenotification/media-3670915@2x.png)

The infectiousness weight modifies the ERV based on the affected userʼs infectiousness level for the day of exposure relative to the day of symptom onset. To set the infectiousness level for when there is no symptom onset date provided, use [`ENDaysSinceOnsetOfSymptomsUnknown`](/documentation/ExposureNotification/ENDaysSinceOnsetOfSymptomsUnknown). A user’s infectiousness level can be [`ENInfectiousness.high`](/documentation/ExposureNotification/ENInfectiousness/high), [`ENInfectiousness.standard`](/documentation/ExposureNotification/ENInfectiousness/standard), or [`ENInfectiousness.none`](/documentation/ExposureNotification/ENInfectiousness/none). Assign both [`infectiousnessHighWeight`](/documentation/ExposureNotification/ENExposureConfiguration/infectiousnessHighWeight) and [`infectiousnessStandardWeight`](/documentation/ExposureNotification/ENExposureConfiguration/infectiousnessStandardWeight) a value between 0 percent and 250 percent.

![A diagram showing a user’s infectiousness over the course of days.](images/com.apple.exposurenotification/media-3671401@2x.png)

The weighted report type assigns priority to the method of diagnosis. Assign values ranging from 0–250 percent to weights that represent a confirmed test diagnosis, clinical diagnosis, self- reported diagnoisis, and recursive diagnosis.

![A table showing the weighted report types and their ranges.](images/com.apple.exposurenotification/media-3670917@2x.png)

In addition to setting the weights, you can perform additional filtering by setting [`daysSinceLastExposureThreshold`](/documentation/ExposureNotification/ENExposureConfiguration/daysSinceLastExposureThreshold) to limit the number of days to consider when calculating the risk level.

### Calculating an Example Exposure Risk Value

The following diagrams illustrate calculating an ERV using a real-world scenario.

The weighted minutes-at-attenuation shows 5 minutes of immediate exposure with a 150 percent weight, 10 minutes of near exposure with a 100 percent weight, 10 minutes of medium exposure with a 50 percent weight, and 5 minutes of other exposure with a 0 percent weight.

![A diagram showing the weighted minutes-at-attention example.](images/com.apple.exposurenotification/media-3670907@2x.png)

The weighted infectiousness indicates days –14 to –6 from the current day with no infectiousness, days –5 to –3 with 100 percent of standard infectiousness, days –2 to +5 with 200 percent high infectiousness, days +6 to +10 with 100 percent standard infectiousness, and days +11 to +14 with no infectiousness.

![A diagram showing an example of infectiousness weights over the course of 29 days.](images/com.apple.exposurenotification/media-3671402@2x.png)

Here are the weighted report types for all three tests:

![A table showing the weighted report types in the example.](images/com.apple.exposurenotification/media-3670914@2x.png)

The result of the calculation shows an ERV of 45 minutes:

![A diagram showing an example of calculating the ERV.](images/com.apple.exposurenotification/media-3670911@2x.png)

> Important:
> To prevent an ERV of 0, set any unused weight to 100 percent.

## Topics

### Configuring Duration

[`attenuationDurationThresholds`](/documentation/ExposureNotification/ENExposureConfiguration/attenuationDurationThresholds)

The configurable signal-loss thresholds for calculating exposure risk.

[`immediateDurationWeight`](/documentation/ExposureNotification/ENExposureConfiguration/immediateDurationWeight)

The weight assigned to a risk level indicating the duration of the user’s exposure at immediate distance.

[`mediumDurationWeight`](/documentation/ExposureNotification/ENExposureConfiguration/mediumDurationWeight)

The weight assigned to a risk level indicating the duration of the user’s exposure at medium distance.

[`nearDurationWeight`](/documentation/ExposureNotification/ENExposureConfiguration/nearDurationWeight)

The weight assigned to a risk level indicating the duration of the user’s exposure at close distance.

[`otherDurationWeight`](/documentation/ExposureNotification/ENExposureConfiguration/otherDurationWeight)

The weight assigned to a risk level indicating the duration of the user’s exposure at a large distance.

[`daysSinceLastExposureThreshold`](/documentation/ExposureNotification/ENExposureConfiguration/daysSinceLastExposureThreshold)

The number of days to consider when calculating the risk level.

### Configuring Infectiousness

[`infectiousnessForDaysSinceOnsetOfSymptoms`](/documentation/ExposureNotification/ENExposureConfiguration/infectiousnessForDaysSinceOnsetOfSymptoms)

The mapping between the days since onset of symptoms to the degree of infectiousness.

[`infectiousnessHighWeight`](/documentation/ExposureNotification/ENExposureConfiguration/infectiousnessHighWeight)

The weight to apply for severe infectiousness.

[`infectiousnessStandardWeight`](/documentation/ExposureNotification/ENExposureConfiguration/infectiousnessStandardWeight)

The weight to apply for mild infectiousness.

[`ENDaysSinceOnsetOfSymptomsUnknown`](/documentation/ExposureNotification/ENDaysSinceOnsetOfSymptomsUnknown)

A value used when the number of days since onset of symptoms is unknown.

### Configuring Report Types

[`reportTypeConfirmedClinicalDiagnosisWeight`](/documentation/ExposureNotification/ENExposureConfiguration/reportTypeConfirmedClinicalDiagnosisWeight)

The weight assigned to a risk level based on a confirmed clinical diagnosis.

[`reportTypeConfirmedTestWeight`](/documentation/ExposureNotification/ENExposureConfiguration/reportTypeConfirmedTestWeight)

The weight assigned to a risk level based on a confirmed test.

[`reportTypeRecursiveWeight`](/documentation/ExposureNotification/ENExposureConfiguration/reportTypeRecursiveWeight)

The weight assigned to a risk level based on an exposure to someone exposed to someone else.

[`reportTypeSelfReportedWeight`](/documentation/ExposureNotification/ENExposureConfiguration/reportTypeSelfReportedWeight)

The weight assigned to a risk level based on a self-reported diagnoisis.

[`reportTypeNoneMap`](/documentation/ExposureNotification/ENExposureConfiguration/reportTypeNoneMap)

The report type to map an unknown diagnosis to.

### Determining Exposure Risk Level in Version 1

[Exposure Risk Value Calculation in ExposureNotification Version 1](/documentation/ExposureNotification/exposure-risk-value-calculation-in-exposurenotification-version-1)

Learn how to determine a user’s risk of exposure.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)