<!--
{
  "availability" : [
    "watchOS: 2.0.0 - 9.2.0"
  ],
  "documentType" : "symbol",
  "framework" : "WatchKit",
  "identifier" : "/documentation/WatchKit/WKExtensionDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "WatchKit"
    ],
    "preciseIdentifier" : "c:objc(pl)WKExtensionDelegate"
  },
  "title" : "WKExtensionDelegate"
}
-->

# WKExtensionDelegate

A collection of methods that manages the app-level behavior of a WatchKit extension.

```
@MainActor protocol WKExtensionDelegate : NSObjectProtocol
```

## Overview

Implement the delegate’s methods to respond to your app’s life-cycle events, such as the activation and deactivation of your app. You can also implement delegate methods to respond to background tasks, Siri intents, workout sessions, or Handoff activity from another devices.

WatchKit creates your delegate object automatically by instantiating the class assigned to the <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/WKExtensionDelegateClassName> key in your WatchKit extension’s `Info.plist` file. By default, this class is named ExtensionDelegate. The system then assigns the delegate object to the [`delegate`](/documentation/WatchKit/WKExtension/delegate) property of the shared [`WKExtension`](/documentation/WatchKit/WKExtension) object.

## Topics

### Monitoring state changes

[Working with the watchOS app life cycle](/documentation/WatchKit/working-with-the-watchos-app-life-cycle)

Learn how the watchOS app life cycle operates and responds to life cycle notification methods.

[`-  applicationDidFinishLaunching`](/documentation/WatchKit/WKExtensionDelegate/applicationDidFinishLaunching())

Tells the delegate that the launch process is almost done and the extension is almost ready to run.

[`-  applicationDidBecomeActive`](/documentation/WatchKit/WKExtensionDelegate/applicationDidBecomeActive())

Tells the delegate that the watchOS app is visible and processing events.

[`-  applicationWillResignActive`](/documentation/WatchKit/WKExtensionDelegate/applicationWillResignActive())

Tells the delegate that the system is about to deactivate the watchOS app.

[`-  applicationWillEnterForeground`](/documentation/WatchKit/WKExtensionDelegate/applicationWillEnterForeground())

Tells the delegate that the app is about to transition from the background to the foreground.

[`-  applicationDidEnterBackground`](/documentation/WatchKit/WKExtensionDelegate/applicationDidEnterBackground())

Tells the delegate that the app has transitioned from the foreground to the background.

[`-  deviceOrientationDidChange`](/documentation/WatchKit/WKExtensionDelegate/deviceOrientationDidChange())

Tells the delegate that the device’s orientation has changed.

### Responding to intents

[`-  handleIntent:completionHandler:`](/documentation/WatchKit/WKExtensionDelegate/handle(_:completionHandler:))

Responds to a Siri intent.

### Setup Now Playing interface

[`-  handleRemoteNowPlayingActivity`](/documentation/WatchKit/WKExtensionDelegate/handleRemoteNowPlayingActivity())

Tells the delegate when the user plays audio in the corresponding iOS app.

### Handling a workout session

[`-  handleWorkoutConfiguration:`](/documentation/WatchKit/WKExtensionDelegate/handle(_:)-f27i)

Tells the delegate that the user started a workout session on the paired iPhone.

[`-  handleActiveWorkoutRecovery`](/documentation/WatchKit/WKExtensionDelegate/handleActiveWorkoutRecovery())

Tells the delegate when the app relaunches after crashing during an active workout session.

### Handling background tasks

[`-  handleBackgroundTasks:`](/documentation/WatchKit/WKExtensionDelegate/handle(_:)-92ulv)

Tells the delegate that the app has received one or more background tasks.

### Handling extended runtime sessions

[`-  handleExtendedRuntimeSession:`](/documentation/WatchKit/WKExtensionDelegate/handle(_:)-4qxgv)

Tells the delegate that the system launched your app to resume an extended runtime session.

### Managing remote notifications

[`-  didRegisterForRemoteNotificationsWithDeviceToken:`](/documentation/WatchKit/WKExtensionDelegate/didRegisterForRemoteNotifications(withDeviceToken:))

Tells the delegate that the app successfully registered with Apple Push Notification service (APNs).

[`-  didFailToRegisterForRemoteNotificationsWithError:`](/documentation/WatchKit/WKExtensionDelegate/didFailToRegisterForRemoteNotificationsWithError(_:))

Tells the delegate that Apple Push Notification service (APNs) cannot successfully complete the registration process.

[`-  didReceiveRemoteNotification:fetchCompletionHandler:`](/documentation/WatchKit/WKExtensionDelegate/didReceiveRemoteNotification(_:fetchCompletionHandler:))

Tells the delegate that a background notification has arrived.

[`WKBackgroundFetchResult`](/documentation/WatchKit/WKBackgroundFetchResult)

The result of an attempt to download the content associated with a remote notification.

### Coordinating handoff activity

[`-  handleUserActivity:`](/documentation/WatchKit/WKExtensionDelegate/handleUserActivity(_:))

Responds to Handoff–related activity from complications and notifications.

[`-  handleActivity:`](/documentation/WatchKit/WKExtensionDelegate/handle(_:)-5pyj1)

Responds to Handoff–related activity from Siri.

### Accepting CloudKit shares

[`-  userDidAcceptCloudKitShareWithMetadata:`](/documentation/WatchKit/WKExtensionDelegate/userDidAcceptCloudKitShare(with:))

Tells the delegate that the app has access to shared information in CloudKit.

### Deprecated Methods

[`-  didReceiveRemoteNotification:`](/documentation/WatchKit/WKExtensionDelegate/didReceiveRemoteNotification(_:))

Tells the delegate that a remote notification arrived.

[`-  didReceiveLocalNotification:`](/documentation/WatchKit/WKExtensionDelegate/didReceive(_:))

Tells the delegate that a local notification was triggered.

[`-  handleActionWithIdentifier:forRemoteNotification:`](/documentation/WatchKit/WKExtensionDelegate/handleAction(withIdentifier:forRemoteNotification:))

Delivers a remote notification payload and a user-selected action to the app.

[`-  handleActionWithIdentifier:forRemoteNotification:withResponseInfo:`](/documentation/WatchKit/WKExtensionDelegate/handleAction(withIdentifier:forRemoteNotification:withResponseInfo:))

Delivers a remote notification payload and user response information to the app.

[`-  handleActionWithIdentifier:forLocalNotification:`](/documentation/WatchKit/WKExtensionDelegate/handleAction(withIdentifier:for:))

Delivers a local notification payload and a user-selected action to the app.

[`-  handleActionWithIdentifier:forLocalNotification:withResponseInfo:`](/documentation/WatchKit/WKExtensionDelegate/handleAction(withIdentifier:for:withResponseInfo:))

Delivers a local notification payload and user response information to the app.

## Relationships

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

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)