Handling push notifications
Note: We Recommend taking advantage of our KnockAppDelegate to make managing your Push Notifications simpler.
Prerequisites
Before proceeding, ensure you've configured push notifications within your Knock account. For guidance on this initial setup, refer to our Push Notification Configuration Guide.
Step 1: Enabling Push Notifications in Your App
- Configure APNs in Your App:
- Open your project in Xcode.
- Navigate to your app target's Signing & Capabilities tab.
- Click the "+" capability button and add Push Notifications to enable Apple Push Notification service (APNs).
- Enable Background Modes:
- Still in the Signing & Capabilities tab, add the Background Modes capability.
- Check Remote notifications to allow your app to receive silent push notifications.
Step 2: Registering for Push Notifications
Implement the following in your AppDelegate or SceneDelegate to register for push notifications:
KnockAppDelegate:
If using the KnockAppDelegate
, this will be handled for you automatically.
Manually:
Step 3: Updating the Message Status of a Push Notification.
If a push notification is sent via Knock, it will contain a knock_message_id
property that includes the corresponding message Id. This can then be used to update the message status.
KnockAppDelegate:
If using the KnockAppDelegate
, this will be handled for you automatically.
Manually:
Step 4: Configuring Silent Push Notifications
Silent push notifications allow your app to update content in the background without alerting the user. Ensure that your Knock APNS message template has silent notifications enabled.
KnockAppDelegate:
Manually:
Full Example
Here's the complete AppDelegate
implementation:
Using FCM in iOS
If you prefer to use Firebase Cloud Messaging (FCM) within your iOS app, you can follow the same steps outlined above for push notifications with a few modifications to your AppDelegate
.
Step 1: Configure Firebase
In your application(_:didFinishLaunchingWithOptions:)
method, add the following:
-
Initialize Firebase:
-
Set the Messaging Delegate:
-
Setup Knock:
Step 2: Override Push Notification Registration Methods
Override the application(_:didRegisterForRemoteNotificationsWithDeviceToken:)
method to prevent the KnockAppDelegate
from handling this automatically:
MessagingDelegate
Step 3: Implement Extend your AppDelegate
to conform to MessagingDelegate
and implement the messaging(_:didReceiveRegistrationToken:)
method:
Full Example
Here's the complete AppDelegate
implementation with FCM support: