<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 26.0.0 -",
    "watchOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Foundation",
  "identifier" : "/documentation/Foundation/NotificationCenter/MessageIdentifier",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Foundation"
    ],
    "preciseIdentifier" : "s:So20NSNotificationCenterC10FoundationE17MessageIdentifierP"
  },
  "title" : "NotificationCenter.MessageIdentifier"
}
-->

# NotificationCenter.MessageIdentifier

An optional identifier to associate a given message with a given type.

```
protocol MessageIdentifier
```

## Overview

Implement a `MessageIdentifier` to provide a typed, ergonomic experience at the call point, as described in [SE-0299](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0299-extend-generic-static-member-lookup.md).

For example, given `ExampleMessage` with a `Subject` called `ExampleSubject`:

```swift
extension NotificationCenter.MessageIdentifier where Self == NotificationCenter.BaseMessageIdentifier<ExampleMessage> {
    static var eventDidOccur: Self { .init() }
}
```

This simplifies the call point for clients, as seen here:

```swift
let token = center.addObserver(of: exampleSubject, for: .eventDidOccur) { ... }
```

## Topics

### Declaring the message type

[`MessageType`](/documentation/Foundation/NotificationCenter/MessageIdentifier/MessageType)

### Identifying cookie storage messages

[`cookiesChanged`](/documentation/Foundation/NotificationCenter/MessageIdentifier/cookiesChanged)

An identifier for a message about a cookie storage instance’s cookies changing.

### Identifying undo manager messages

[`willUndoChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willUndoChange)

An identifier for a message about an undo manager preparing to perform an undo.

[`didUndoChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didUndoChange)

An identifier for a message about an undo manager having performed an undo.

[`willRedoChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willRedoChange)

An identifier for a message about an undo manager preparing to perform a redo.

[`didRedoChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didRedoChange)

An identifier for a message about an undo manager having performed a redo.

[`checkpoint`](/documentation/Foundation/NotificationCenter/MessageIdentifier/checkpoint)

An identifier for a message about an undo manager reaching a checkpoint.

[`didOpenUndoGroup`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didOpenUndoGroup)

An identifier for a message about an undo manager having opened an undo group.

[`willCloseUndoGroup`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willCloseUndoGroup)

An identifier for a message about an undo manager preparing to close an undo group.

[`didCloseUndoGroup`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didCloseUndoGroup)

An identifier for a message about an undo manager having closed an undo group.

### Identifying defaults messages

[`didChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didChange-187tw)

An identifier for a message about a change in a user defaults setting.

[`sizeLimitExceeded`](/documentation/Foundation/NotificationCenter/MessageIdentifier/sizeLimitExceeded)

An identifier for a message about a user defaults database exceeding its maximum size.

### Identifying metadata query messages

[`didStartGathering`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didStartGathering)

An identifier for a message about a metadata query that is starting its initial result gathering.

[`didFinishGathering`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didFinishGathering)

An identifier for a message about a metadata query that finished its initial result gathering.

### Identifying calendar, date, and time zone messages

[`calendarDayChanged`](/documentation/Foundation/NotificationCenter/MessageIdentifier/calendarDayChanged)

An identifier for a message about a change in calendar day.

[`systemClockDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/systemClockDidChange)

An identifier for a message about a change in the system clock.

[`systemTimeZoneDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/systemTimeZoneDidChange)

An identifier for a message about a change in the system time zone.

### Identifying locale messages

[`currentLocaleDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/currentLocaleDidChange)

An identifier for a message about a change in current locale.

### Identifying bundle messages

[`didLoad`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didLoad)

An identifier for a message about a bundle dynamically loading a class.

### Identifying process info messages

[`powerStateDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/powerStateDidChange)

An identifier for a message about a power state change.

[`thermalStateDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/thermalStateDidChange)

An identifier for a message about a thermal state change.

[`didTerminate`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didTerminate)

An identifier for a message about a stopped task.

### Identifying file handle messages

[`connectionAccepted`](/documentation/Foundation/NotificationCenter/MessageIdentifier/connectionAccepted)

An identifier for a message about a file handle accepting a connection.

[`dataAvailable`](/documentation/Foundation/NotificationCenter/MessageIdentifier/dataAvailable)

An identifier for a message about a file handle having data available for reading.

[`readToEndOfFileCompletion`](/documentation/Foundation/NotificationCenter/MessageIdentifier/readToEndOfFileCompletion)

An identifier for a message about a file handle having reached the end of a file or communication channel.

[`readCompletion`](/documentation/Foundation/NotificationCenter/MessageIdentifier/readCompletion)

An identifier for a message about a file handle having read the currently available data from a file or communication channel.

### Identifying port messages

[`didBecomeInvalid`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didBecomeInvalid)

An identifier for a message about a port becoming invalid.

### Identifying file manager messages

[`ubiquityIdentityDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/ubiquityIdentityDidChange)

An identifier for a message about a file manager’s ubiquity identity changing.

### Identifying bundle resource request messages

[`lowDiskSpace`](/documentation/Foundation/NotificationCenter/MessageIdentifier/lowDiskSpace)

An identifier for a message about the available disk space getting low.

### Identifying extension messages

[`didBecomeActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didBecomeActive-79dvm)

An identifier for a message about a host app moving from the inactive to the active state.

[`willResignActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willResignActive-9z4xc)

An identifier for a message about a host app moving from the active to the inactive state.

[`didEnterBackground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didEnterBackground-5gdtk)

An identifier for a message about a host app beginning to run in the background.

[`willEnterForeground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willEnterForeground-p1og)

An identifier for a message about a host app preparing to run in the foreground.

### Identifying UIKit accessibility messages

[`switchControlStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/switchControlStatusDidChange)

[`elementFocused`](/documentation/Foundation/NotificationCenter/MessageIdentifier/elementFocused)

[`reduceTransparencyStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/reduceTransparencyStatusDidChange)

[`announcementDidFinish`](/documentation/Foundation/NotificationCenter/MessageIdentifier/announcementDidFinish)

[`boldTextStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/boldTextStatusDidChange)

[`closedCaptioningStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/closedCaptioningStatusDidChange)

[`darkerSystemColorsStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/darkerSystemColorsStatusDidChange)

[`grayscaleStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/grayscaleStatusDidChange)

[`invertColorsStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/invertColorsStatusDidChange)

[`assistiveTouchStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/assistiveTouchStatusDidChange)

[`guidedAccessStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/guidedAccessStatusDidChange)

[`monoAudioStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/monoAudioStatusDidChange)

[`speakScreenStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/speakScreenStatusDidChange)

[`speakSelectionStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/speakSelectionStatusDidChange)

[`hearingDevicePairedEarDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/hearingDevicePairedEarDidChange)

[`reduceMotionStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/reduceMotionStatusDidChange)

[`shakeToUndoDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/shakeToUndoDidChange)

[`voiceOverStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/voiceOverStatusDidChange)

[`buttonShapesEnabledStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/buttonShapesEnabledStatusDidChange)

### Identifying UIKit app life cycle messages

[`didFinishLaunching`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didFinishLaunching)

[`didBecomeActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didBecomeActive-2hcfs)

[`didEnterBackground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didEnterBackground-1u5sm)

[`willEnterForeground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willEnterForeground-95zi8)

[`willResignActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willResignActive-4rf2p)

[`didReceiveMemoryWarning`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didReceiveMemoryWarning)

[`significantTimeChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/significantTimeChange)

[`backgroundRefreshStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/backgroundRefreshStatusDidChange)

[`userDidTakeScreenshot`](/documentation/Foundation/NotificationCenter/MessageIdentifier/userDidTakeScreenshot)

### Identifying UIKit content size messages

[`contentSizeCategoryDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/contentSizeCategoryDidChange)

### Identifying UIKIt device messages

[`batteryLevelDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/batteryLevelDidChange)

[`batteryStateDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/batteryStateDidChange)

[`orientationDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/orientationDidChange)

[`proximityStateDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/proximityStateDidChange)

### Identifying UIKit document messages

[`stateChanged`](/documentation/Foundation/NotificationCenter/MessageIdentifier/stateChanged)

### Identifying UIKit pasteboard messages

[`changed`](/documentation/Foundation/NotificationCenter/MessageIdentifier/changed-28zxj)

[`removed`](/documentation/Foundation/NotificationCenter/MessageIdentifier/removed)

### Identifying UIKit responder messages

[`keyboardWillChangeFrame`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardWillChangeFrame)

[`keyboardDidChangeFrame`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardDidChangeFrame)

[`keyboardWillHide`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardWillHide)

[`keyboardDidHide`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardDidHide)

[`keyboardWillShow`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardWillShow)

[`keyboardDidShow`](/documentation/Foundation/NotificationCenter/MessageIdentifier/keyboardDidShow)

### Identifying UIKit screen messages

[`brightnessDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/brightnessDidChange)

[`modeDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/modeDidChange)

[`capturedDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/capturedDidChange)

[`referenceDisplayModeStatusDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/referenceDisplayModeStatusDidChange)

### Identifying UIKit table messages

### Identifying UIKit text field messages

[`textDidBeginEditing`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidBeginEditing-7lt1k)

[`textDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidChange-9363k)

[`textDidEndEditing`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidEndEditing-4r8fw)

### Identifying UIKit text input mode messages

[`currentInputModeDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/currentInputModeDidChange)

### Identifying UIKit text view messages

[`textDidBeginEditing`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidBeginEditing-9y8tn)

[`textDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidChange-8ns63)

[`textDidEndEditing`](/documentation/Foundation/NotificationCenter/MessageIdentifier/textDidEndEditing-6cmke)

### Identifying UIKit view controller messages

[`didBecomeVisible`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didBecomeVisible)

[`didBecomeHidden`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didBecomeHidden)

[`showDetailTargetDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/showDetailTargetDidChange)

### Identifying UIKit focus messages

[`movementDidFail`](/documentation/Foundation/NotificationCenter/MessageIdentifier/movementDidFail)

### Identifying UIKit pointer lock state messages

[`didChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didChange-7wty5)

### Identifying UIKit scene messages

[`systemProtectionDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/systemProtectionDidChange)

[`willConnect`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willConnect)

[`willEnterForeground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willEnterForeground-992xq)

[`didActivate`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didActivate)

[`willDeactivate`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willDeactivate)

[`didEnterBackground`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didEnterBackground-5fqw0)

### Identifying AppKit workspace messages

[`didHideApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didHideApplication)

[`didUnhideApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didUnhideApplication)

[`willLaunchApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willLaunchApplication)

[`didLaunchApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didLaunchApplication)

[`willSleep`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willSleep)

[`didWake`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didWake)

[`didTerminateApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didTerminateApplication)

[`didMountVolume`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didMountVolume)

[`willUnmountVolume`](/documentation/Foundation/NotificationCenter/MessageIdentifier/willUnmountVolume)

[`didUnmountVolume`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didUnmountVolume)

[`didActivateApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didActivateApplication)

[`didDeactivateApplication`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didDeactivateApplication)

[`didRenameVolume`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didRenameVolume)

[`sessionDidBecomeActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/sessionDidBecomeActive)

[`sessionDidResignActive`](/documentation/Foundation/NotificationCenter/MessageIdentifier/sessionDidResignActive)

[`didChangeFileLabels`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didChangeFileLabels)

[`screensDidSleep`](/documentation/Foundation/NotificationCenter/MessageIdentifier/screensDidSleep)

[`screensDidWake`](/documentation/Foundation/NotificationCenter/MessageIdentifier/screensDidWake)

[`activeSpaceDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/activeSpaceDidChange)

[`accessibilityDisplayOptionsDidChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/accessibilityDisplayOptionsDidChange)

[`shouldBeginSuppressingHighDynamicRangeContent`](/documentation/Foundation/NotificationCenter/MessageIdentifier/shouldBeginSuppressingHighDynamicRangeContent)

[`shouldEndSuppressingHighDynamicRangeContent`](/documentation/Foundation/NotificationCenter/MessageIdentifier/shouldEndSuppressingHighDynamicRangeContent)

### Identifying EventKit messages

[`changed`](/documentation/Foundation/NotificationCenter/MessageIdentifier/changed-50yz5)

A notification posted when changes are made to the Calendar or Reminders database.

### Identifying iTunes library messages

[`didChange`](/documentation/Foundation/NotificationCenter/MessageIdentifier/didChange-1coqh)



---

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)