<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 8.0.0 -",
    "macOS: 10.15.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PushKit",
  "identifier" : "/documentation/PushKit/PKPushRegistry",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "PushKit"
    ],
    "preciseIdentifier" : "c:objc(cs)PKPushRegistry"
  },
  "title" : "PKPushRegistry"
}
-->

# PKPushRegistry

An object that requests the delivery and handles the receipt of PushKit notifications.

```
class PKPushRegistry
```

## Overview

A `PKPushRegistry` object manages only certain types of notifications, such as high-priority notifications needed by a VoIP app. PushKit wakes up your app as needed to deliver incoming notifications and delivers the notifications directly to the push registry object that requested them.

Every time your app launches, whether in the foreground or in the background, create a push registry object and configure it. Typically, you keep the push registry object running for the duration of your app. Each push registry object delivers incoming notifications to its [`delegate`](/documentation/PushKit/PKPushRegistry/delegate) object, which also handles the responses for registration requests. Listing 1 shows how to create a push registry object and request VoIP notifications. Always assign an appropriate delegate object before modifying the [`desiredPushTypes`](/documentation/PushKit/PKPushRegistry/desiredPushTypes) property.

Listing 1. Creating and configuring a push registry object

```objc
- (void) registerForVoIPPushes {
   self.voipRegistry = [[PKPushRegistry alloc] initWithQueue:nil];
   self.voipRegistry.delegate = self;
 
   // Initiate registration.
   self.voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
}
```

Assigning a new value to the [`desiredPushTypes`](/documentation/PushKit/PKPushRegistry/desiredPushTypes) property registers the push registry object with the PushKit servers. The server reports the success or failure of your registration attempts asynchronously to the push registry, which then reports those results to its delegate object. The push registry also delivers all received notifications to the delegate object. For more information about the delegate methods, see [`PKPushRegistryDelegate`](/documentation/PushKit/PKPushRegistryDelegate).

## Topics

### Initializing a Push Registry

[`-  initWithQueue:`](/documentation/PushKit/PKPushRegistry/init(queue:))

Creates a push registry with the specified dispatch queue.

### Receiving the Notification Data

[`delegate`](/documentation/PushKit/PKPushRegistry/delegate)

The delegate object that receives notifications coming from the push registry object.

[`PKPushRegistryDelegate`](/documentation/PushKit/PKPushRegistryDelegate)

The methods that you use to handle incoming PushKit notifications and registration events.

### Managing the Push Registry

[`desiredPushTypes`](/documentation/PushKit/PKPushRegistry/desiredPushTypes)

Registers the push types for this push registry object.

[`-  pushTokenForType:`](/documentation/PushKit/PKPushRegistry/pushToken(for:))

Retrieves the locally cached push token for the specified push type.

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)