Push Notifications API for PubNub Cocoa Objective-C SDK

PubNub's Mobile Push Gateway feature enables developers to bridge native PubNub publishing with 3rd-party push notification services including Google Android FCM (Firebase Cloud Messaging) and Apple iOS APNs (Apple Push Notification service).

By using the Mobile Push Gateway, developers can eliminate the need for developing, configuring, and maintaining additional server-side components for third-party push notification providers.

To learn more, read about Push Notifications.

Adding Device to Channel

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Enable push notifications on provided set of channels.

Method(s)

To run Adding Device to Channel you can use the following method(s) in the Cocoa SDK:

- (void)addPushNotificationsOnChannels:(NSArray<NSString *> *)channels withDevicePushToken:(NSData *)pushToken andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block;
ParameterTypeRequiredDescription
channelsNSArrayYesList of channel names for which push notifications should be enabled.
pushTokenNSDataYesDevice push token which should be used to enabled push notifications on specified set of channels.
blockPNPushNotificationsStateModificationCompletionBlockNoPush notifications addition on channels processing completion block which pass only one argument - request processing status to report about how data pushing was successful or not.
- (void)addPushNotificationsOnChannels:(NSArray<NSString *> *)channels withDevicePushToken:(id)pushToken pushType:(PNPushType)pushType andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be enabled.
pushTokenidYesDevice token / identifier which depending from passed pushType should be NSData (for PNAPNS2Push and PNAPNSPush) or NSString for other.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNSPush - Apple Push Notification service
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
  • PNMPNSPush - Microsoft Push Notification Service
blockPNPushNotificationsStateModificationCompletionBlockNoAdd notifications for channels request completion block.
- (void)addPushNotificationsOnChannels:(NSArray<NSString *> *)channels withDevicePushToken:(id)pushToken pushType:(PNPushType)pushType environment:(PNAPNSEnvironment)environment topic:(NSString *)topic andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
channelsNSArray<NSString *>YesList of channel names for which push notifications should be enabled.
pushTokenidYesDevice token / identifier which depending from passed pushType should be NSData (for PNAPNS2Push and PNAPNSPush) or NSString for other.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNSPush - Apple Push Notification service
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
  • PNMPNSPush - Microsoft Push Notification Service
environmentPNAPNSEnvironmentYesOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringYesNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoAdd notifications for channels request completion block.

Basic Usage

Adding Device to Channel

[self.client addPushNotificationsOnChannels:@[@"wwdc",@"google.io"]
withDevicePushToken:self.devicePushToken
andCompletion:^(PNAcknowledgmentStatus *status) {

if (!status.isError) {

// Handle successful push notification enabling on passed channels.
}
else {

/**
Handle modification error. Check 'category' property
to find out possible reason because of which request did fail.
Review 'errorData' property (which has PNErrorData data type) of status
object to get additional information about issue.
show all 20 lines

Response

Response objects which is returned by client when APNS Add Device API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Other Examples

  1. Example For Method no. 2

    [self.client addPushNotificationsOnChannels:@[@"wwdc",@"google.io"]
    withDevicePushToken:self.devicePushToken
    pushType:PNAPNSPush
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    // Push notifications successful enabled on passed channels.
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    *
    * Request can be resent using: [status retry];
    */
    }
    show all 16 lines
  2. Example For Method no. 3

    [self.client addPushNotificationsOnChannels:@[@"wwdc",@"google.io"]
    withDevicePushToken:self.devicePushToken
    pushType:PNAPNS2Push
    environment:PNAPNSProduction
    topic:@"com.my-application.bundle"
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    // Push notifications successful enabled on passed channels.
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    *
    * Request can be resent using: [status retry];
    show all 18 lines

Adding Device to Channel (Builder Pattern)

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Enable push notifications on provided set of channels.

Method(s)

To run Adding Device to Channel you can use the following method(s) in the Cocoa SDK

APNS2 Token

push().enable().channels(NSArray<NSString *> *).token(id).pushType(PNPushType).environment(PNAPNSEnvironment).topic(NSString *).performWithCompletion(nullable PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
channelsNSArray<NSString *>YesList of channel names for which push notifications should be enabled.
tokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentNoOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringNoNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoAdd notifications for channels request completion block.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

FCM Token

push().enable().channels(NSArray<NSString *> *).fcmToken(NSString *).performWithCompletion(PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be enabled.
fcmTokenNSString *YesFCM-provided device push token which should be used to enabled push notifications on specified set of channels.
completionPNPushNotificationsStateModificationCompletionBlockNoPush notifications addition on channels processing completion block which pass only one argument - request processing status to report about how data pushing was successful or not.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

Basic Usage

APNS2 Token

self.client.push().enable()
.token(self.devicePushToken)
.channels(@[@"wwdc",@"google.io"])
.pushType(PNAPNS2Push)
.environment(PNAPNSProduction)
.topic(@"com.my-application.bundle")
.performWithCompletion(^(PNAcknowledgmentStatus *status) {
if (!status.isError) {
// Push notifications successful enabled on passed channels.
} else {
/**
* Handle modification error. Check 'category' property to find out possible issue because
* of which request did fail.
*
* Request can be resent using: [status retry];
show all 18 lines

FCM Token

self.client.push().enable()
.token(self.devicePushToken)
.channels(@[@"wwdc",@"google.io"])
.pushType(PNFCMPush)
.performWithCompletion(^(PNAcknowledgmentStatus *status) {
if (!status.isError) {
// Push notifications successful enabled on passed channels.
} else {
/**
* Handle modification error. Check 'category' property to find out possible issue because
* of which request did fail.
*
* Request can be resent using: [status retry];
*/
}
show all 16 lines

Response

Response objects which is returned by client when APNS Add Device API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Listing Channels For Device

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Request for all channels on which push notification has been enabled using specified pushToken.

Method(s)

To run Listing Channels For Device you can use the following method(s) in the Cocoa SDK:

- (void)pushNotificationEnabledChannelsForDeviceWithPushToken:(NSData *)pushToken andCompletion:(PNPushNotificationsStateAuditCompletionBlock)block;
ParameterTypeRequiredDescription
pushTokenNSDataYesDevice push token against which search on PubNub service should be performed.
blockPNPushNotificationsStateAuditCompletionBlockYesPush notifications status processing completion block which pass two arguments: result - in case of successful request processing data field will contain results of push notifications audit operation; status - in case if error occurred during request processing.
- (void)pushNotificationEnabledChannelsForDeviceWithPushToken:(id)pushToken pushType:(PNPushType)pushType andCompletion:(PNPushNotificationsStateAuditCompletionBlock)block
ParameterTypeRequiredDescription
pushTokenidYesDevice token / identifier that you must set to NSString.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
blockPNPushNotificationsStateAuditCompletionBlockYesAudit notifications enabled channels request completion block.
- (void)pushNotificationEnabledChannelsForDeviceWithPushToken:(id)pushToken pushType:(PNPushType)pushType environment:(PNAPNSEnvironment)environment topic:(NSString *)topic andCompletion:(PNPushNotificationsStateAuditCompletionBlock)block
ParameterTypeRequiredDescription
pushTokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentYesOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringYesNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateAuditCompletionBlockYesAudit notifications enabled channels request completion block.

Basic Usage

Listing Channels For Device

[self.client pushNotificationEnabledChannelsForDeviceWithPushToken:self.devicePushToken
andCompletion:^(PNAPNSEnabledChannelsResult *result,
PNErrorStatus *status) {
if (!status) {

// Handle downloaded list of channels using: result.data.channels
}
else {

/**
Handle audition error. Check 'category' property
to find out possible reason because of which request did fail.
Review 'errorData' property (which has PNErrorData data type) of status
object to get additional information about issue.

show all 19 lines

Response

Response objects which is returned by clientAPNS List Devices API is used:

@interface PNAPNSEnabledChannelsData : PNServiceData

// Channels with active push notifications.
@property (nonatomic, readonly, strong) NSArray<NSString *> *channels;

@end

@interface PNAPNSEnabledChannelsResult : PNResult

// APNS enabled channels audit request processed information.
@property (nonatomic, readonly, strong) PNAPNSEnabledChannelsData *data;

@end

Error response which is used in case of APNS List Devices API call failure:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNErrorStatus : PNStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Other Examples

  1. Example For Method no. 2

    [self.client pushNotificationEnabledChannelsForDeviceWithPushToken:self.devicePushToken
    pushType:PNFCMPush
    andCompletion:^(PNFCMEnabledChannelsResult *result, PNErrorStatus *status) {

    if (!status.isError) {
    // Handle downloaded list of channels using: result.data.channels
    } else {
    /**
    * Handle audition error. Check 'category' property to find out possible issue because of
    * which request did fail.
    *
    * Request can be resent using: [status retry];
    */
    }
    }];
  2. Example For Method no. 3

    [self.client pushNotificationEnabledChannelsForDeviceWithPushToken:self.devicePushToken
    pushType:PNAPNS2Push
    environment:PNAPNSDevelopment
    topic:@"com.my-application.bundle"
    andCompletion:^(PNAPNSEnabledChannelsResult *result, PNErrorStatus *status) {

    if (!status.isError) {
    // Handle downloaded list of channels using: result.data.channels
    } else {
    /**
    * Handle audition error. Check 'category' property to find out possible issue because of
    * which request did fail.
    *
    * Request can be resent using: [status retry];
    */
    show all 17 lines

Listing Channels For Device (Builder Pattern)

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Request for all channels on which push notification has been enabled using specified pushToken.

Method(s)

To run Listing Channels For Device you can use the following method(s) in the Cocoa SDK

APNS2 Token

push().audit().token(id).pushType(PNPushType).environment(PNAPNSEnvironment).topic(NSString *).performWithCompletion(PNPushNotificationsStateAuditCompletionBlock)
ParameterTypeRequiredDescription
tokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentNoOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringNoNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateAuditCompletionBlockYesAudit notifications enabled channels request completion block.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

FCM Token

push().audit().fcmToken(NSString *).performWithCompletion(PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
fcmTokenNSString *YesFCM-provided device push token against which search on PubNub service should be performed.
completionPNPushNotificationsStateAuditCompletionBlockYesPush notifications status processing completion block which pass two arguments: result - in case of successful request processing data field will contain results of push notifications audit operation; status - in case if error occurred during request processing.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

Basic Usage

APNS2 Token

self.client.push().audit()
.token(self.devicePushToken)
.pushType(PNAPNS2Push)
.environment(PNAPNSProduction)
.topic(@"com.my-application.bundle")
.performWithCompletion(^(PNAPNSEnabledChannelsResult *result, PNErrorStatus *status) {
if (!status.isError) {
// Handle downloaded list of channels using: result.data.channels
} else {
/**
* Handle audition error. Check 'category' property to find out possible issue because of
* which request did fail.
*
* Request can be resent using: [status retry];
*/
show all 17 lines

FCM Token

self.client.push().audit()
.fcmToken(self.pushToken)
.performWithCompletion(^(PNAPNSEnabledChannelsResult *result, PNErrorStatus *status) {
if (!status) {
// Handle downloaded list of channels using: result.data.channels
} else {
/**
Handle audition error. Check 'category' property
to find out possible reason because of which request did fail.
Review 'errorData' property (which has PNErrorData data type) of status
object to get additional information about issue.

Request can be resent using: [status retry];
*/
}
show all 16 lines

Response

Response objects which is returned by client when APNS List Devices API is used:

@interface PNAPNSEnabledChannelsData : PNServiceData

// Channels with active push notifications.
@property (nonatomic, readonly, strong) NSArray<NSString *> *channels;

@end

@interface PNAPNSEnabledChannelsResult : PNResult

// APNS enabled channels audit request processed information.
@property (nonatomic, readonly, strong) PNAPNSEnabledChannelsData *data;

@end

Error response which is used in case of APNS List Devices API call failure:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNErrorStatus : PNStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Removing Device From Channel

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Disable push notifications on provided set of channels.

Method(s)

To run Removing Device From Channel you can use the following method(s) in the Cocoa SDK:

- (void)removePushNotificationsFromChannels:(NSArray<NSString *> *)channels withDevicePushToken:(NSData *)pushToken andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block;
ParameterTypeRequiredDescription
channelsNSArrayYesList of channel names for which push notifications should be disabled. If passed list is empty all notifications will be disabled.
pushTokenNSDataYesDevice push token which should be used to disable push notifications on specified set of channels.
blockPNPushNotificationsStateModificationCompletionBlockNoPush notifications removal from channels processing completion block which pass only one argument - request processing status to report about how data pushing was successful or not.
- (void)removePushNotificationsFromChannels:(NSArray<NSString *> *)channels withDevicePushToken:(id)pushToken pushType:(PNPushType)pushType andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be disabled.
pushTokenidYesDevice token / identifier that you must set to NSString.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
    <
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
blockPNPushNotificationsStateModificationCompletionBlockNoRemove notifications from channels request completion block.
- (void)removePushNotificationsFromChannels:(NSArray<NSString *> *)channels withDevicePushToken:(id)pushToken pushType:(PNPushType)pushType environment:(PNAPNSEnvironment)environment topic:(NSString *)topic andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be disabled.
pushTokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentYesOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringYesNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoRemove notifications from channels request completion block.

Basic Usage

Removing Device From Channel

[self.client removePushNotificationsFromChannels:@[@"wwdc",@"google.io"]
withDevicePushToken:self.devicePushToken
andCompletion:^(PNAcknowledgmentStatus *status) {

if (!status.isError) {

// Handle successful push notification disabling on passed channels.
}
else {

/**
Handle modification error. Check 'category' property
to find out possible reason because of which request did fail.
Review 'errorData' property (which has PNErrorData data type) of status
object to get additional information about issue.
show all 20 lines

Response

Response objects which is returned by client when APNS Remove Device API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Other Examples

  1. Example For Method no. 2

    [self.client removePushNotificationsFromChannels:@[@"wwdc",@"google.io"]
    withDevicePushToken:self.devicePushToken
    pushType:PNFCMPush
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    // Push notification successfully disabled on passed channels.
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    *
    * Request can be resent using: [status retry];
    */
    }
    show all 16 lines
  2. Example For Method no. 3

    [self.client removePushNotificationsFromChannels:@[@"wwdc",@"google.io"]
    withDevicePushToken:self.devicePushToken
    pushType:PNAPNS2Push
    environment:PNAPNSProduction
    topic:@"com.my-application.bundle"
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    // Push notification successfully disabled on passed channels.
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    *
    * Request can be resent using: [status retry];
    show all 18 lines

Removing Device From Channel (Builder Pattern)

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Disable push notifications on provided set of channels.

Method(s)

To run Removing Device From Channel, you can use the following method(s) in the Cocoa SDK.

APNS2 Token

push().disable().channels(NSArray<NSString *> *).token(id).pushType(PNPushType).environment(PNAPNSEnvironment).topic(NSString *).performWithCompletion(nullable PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be disabled.
tokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentNoOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringNoNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoRemove notifications from channels request completion block.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

FCM Token

push().disable().channels(NSArray<NSString *> *).fcmToken(NSString *).performWithCompletion(PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be disabled. If passed list is empty all notifications will be disabled.
fcmTokenNSString *YesFCM-provided device push token which should be used to disable push notifications on specified set of channels.
completionPNPushNotificationsStateAuditCompletionBlockNoPush notifications removal from channels processing completion block which pass only one argument - request processing status to report about how data pushing was successful or not.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

Basic Usage

APNS Token

self.client.push().disable()
.token(self.devicePushToken)
.channels(@[@"wwdc",@"google.io"])
.pushType(PNAPNS2Push)
.environment(PNAPNSProduction)
.topic(@"com.my-application.bundle")
.performWithCompletion(^(PNAcknowledgmentStatus *status) {
if (!status.isError) {
// Push notification successfully disabled on passed channels.
} else {
/**
* Handle modification error. Check 'category' property to find out possible issue because
* of which request did fail.
*
* Request can be resent using: [status retry];
show all 18 lines

FCM Token

self.client.push().disable()
.channels(@[@"channel1", @"channel2"])
.fcmToken(self.pushToken)
.performWithCompletion(^(PNAcknowledgmentStatus *status) {
if (!status.isError) {
// Handle successful push notification enabling on passed channels.
} else {
/**
Handle modification error. Check 'category' property
to find out possible reason because of which request did fail.
Review 'errorData' property (which has PNErrorData data type) of status
object to get additional information about issue.

Request can be resent using: [status retry];
*/
show all 17 lines

Response

Response objects which is returned by client when APNS Remove Device API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Remove all push notifications

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Description

Disable push notifications from all channels registered with the specified pushToken.

Method(s)

To run Remove all push notifications you can use the following method(s) in the Cocoa SDK:

- (void)removeAllPushNotificationsFromDeviceWithPushToken:(NSData *)pushToken andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block;
ParameterTypeRequiredDescription
pushTokenNSDataYesDevice push token which should be used to disable push notifications on specified set of channels.
blockPNPushNotificationsStateModificationCompletionBlockNoPush notifications removal from device processing completion block which pass only one argument - request processing status to report about how data pushing was successful or not.
- (void)removeAllPushNotificationsFromDeviceWithPushToken:(id)pushToken pushType:(PNPushType)pushType andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
pushTokenidYesDevice token / identifier that you must set to NSString.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
blockPNPushNotificationsStateModificationCompletionBlockNoRemove all notifications request completion block.
- (void)removeAllPushNotificationsFromDeviceWithPushToken:(id)pushToken pushType:(PNPushType)pushType environment:(PNAPNSEnvironment)environment topic:(NSString *)topic andCompletion:(nullable PNPushNotificationsStateModificationCompletionBlock)block
ParameterTypeRequiredDescription
channelsNSArray<NSString *> *YesList of channel names for which push notifications should be disabled.
pushTokenidYesDevice token / identifier that you must set to NSData.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
environmentPNAPNSEnvironmentYesOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringYesNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoRemove all notifications request completion block.

Basic Usage

Remove all push notifications

[self.client removeAllPushNotificationsFromDeviceWithPushToken:self.devicePushToken
andCompletion:^(PNAcknowledgmentStatus *status) {

if (!status.isError) {

/**
Handle successful push notification disabling for all channels associated with
specified device push token.
*/
}
else {

/**
Handle modification error. Check 'category' property
to find out possible reason because of which request did fail.
show all 22 lines

Response

Response objects which is returned by client when APNS Remove All Devices API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines

Other Examples

  1. Example For Method no. 2

    [self.client removeAllPushNotificationsFromDeviceWithPushToken:self.devicePushToken
    pushType:PNFCMPush
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    /**
    * Push notification successfully disabled for all channels associated with specified
    * device push token.
    */
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    *
    * Request can be resent using: [status retry];
    show all 18 lines
  2. Example For Method no. 3

    [self.client removeAllPushNotificationsFromDeviceWithPushToken:self.devicePushToken
    pushType:PNAPNS2Push
    environment:PNAPNSProduction
    topic:@"com.my-application.bundle"
    andCompletion:^(PNAcknowledgmentStatus *status) {

    if (!status.isError) {
    /**
    * Push notification successfully disabled for all channels associated with specified
    * device push token.
    */
    } else {
    /**
    * Handle modification error. Check 'category' property to find out possible issue because
    * of which request did fail.
    show all 20 lines

Remove all push notifications (Builder Pattern)

Requires Mobile Push Notifications add-on

This method requires that the Mobile Push Notifications add-on is enabled for your key in the Admin Portal. Read the support page on enabling add-on features on your keys.

Method(s)

push().disableAll().token(id).pushType(PNPushType).environment(PNAPNSEnvironment).topic(NSString *).performWithCompletion(nullable PNPushNotificationsStateModificationCompletionBlock)
ParameterTypeRequiredDescription
tokenidYesDevice token / identifier which depending from passed pushType should be NSData (for PNAPNS2Push) or NSString for other.
pushTypePNPushTypeYesOne of PNPushType fields which specify service to manage notifications for device specified with pushToken.
Available push types:
  • PNAPNS2Push - Apple Push Notification service over HTTP/2
  • PNFCMPush - Firebase Cloud Messaging (Google Cloud Messaging)
environmentPNAPNSEnvironmentNoOne of PNAPNSEnvironment fields which specify environment within which device should manage list of channels with enabled notifications (works only if pushType set to PNAPNS2Push).
topicNSStringNoNotifications topic name (usually it is application's bundle identifier).
blockPNPushNotificationsStateModificationCompletionBlockNoRemove all notifications request completion block.
Optional arguments

This method uses the builder pattern, you can remove the arguments which are optional.

Basic Usage

Remove all push notifications, using Builder Pattern

self.client.push().disableAll()
.token(self.devicePushToken)
.pushType(PNAPNS2Push)
.environment(PNAPNSProduction)
.topic(@"com.my-application.bundle")
.performWithCompletion(^(PNAcknowledgmentStatus *status) {
if (!status.isError) {
/**
* Push notification successfully disabled for all channels associated with specified
* device push token.
*/
} else {
/**
* Handle modification error. Check 'category' property to find out possible issue because
* of which request did fail.
show all 20 lines

Response

Response object returned by the client when APNS Remove All Devices API is used:

@interface PNErrorData : PNServiceData

// Stringified error information.
@property (nonatomic, readonly, strong) NSString *information;

@end

@interface PNAcknowledgmentStatus : PNErrorStatus

// Whether status object represent error or not.
@property (nonatomic, readonly, assign, getter = isError) BOOL error;

// Additional information related to error status object.
@property (nonatomic, readonly, strong) PNErrorData *errorData;

show all 16 lines