Deep Linking
Overview of how the SDK handles deep links and how to perform custom navigation within your application
The PushSDK handles opening of a notification in the following ways:
By default, the SDK will automatically call the
open
method using the landing URL attached to the notification.If you implement the
didReceiveNotificationDestination
lifecycle delegate you can perform any custom logic needed when the notification is opened.
Implementing URL Handling Delegates
The PushSDK provides delegates that will be called when a subscriber interacts with a notification. These delegates should be implemented so that the subscriber is automatically navigated to the proper controller, page, or other view after opening the notification.
It is recommend to put all SDK delegates within your application's AppDelegate
class to ensure proper handling of all notification events.
When the SDK receives a notification open event it will attempt to call one of the below delegates with parameters that you can use to navigate the subscriber to the appropriate view within your app. In order to implement these delegates you must have a class that implements PNNotificationLifecycleDelegate
.
You must inform the SDK what class is going to implement this protocol. This can be done using the setNotificationLifecycleDelegate
method on the SDK:
PushSDK.setNotificationLifecycleDelegate(self)
For example, if a landing URL was provided within the notification and you implemented the delegate to handle subscriber navigation within your AppDelegate
the code may look like this:
import Pushly
@main
class AppDelegate: UIResponder, UIApplicationDelegate, PNNotificationLifecycleDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
PushSDK.setConfiguration(appKey: "YOUR_APP_KEY", withLaunchOptions: launchOptions)
PushSDK.PushNotifications.showPermissionPrompt() { granted, settings, error in
// optional callback
print("User accepted permissions: \(granted)")
}
PushSDK.setNotificationLifecycleDelegate(self)
return true
}
func pushSDK(didReceiveNotificationDestination destination: String, withInteraction interaction: PNNotificationInteraction) -> Bool {
// Navigate to a view within your application using the destination (the Landing URL)
// Return true to inform the SDK that it should not navigate
return true
}
}
Notification Interaction Delegates
Notification Opened With URI/URL Destination
This delegate is called when a notification is opened that has a landing URL attached. The subscriber should be navigated to the view that represents the URL.
This method expects a Boolean response. If the response is true
then the SDK will perform no navigation action for this notification open. If the response is false
then the SDK will attempt to navigate the subscriber to the destination URL by using the open
method.
func pushSDK(didReceiveNotificationDestination destination: String, withInteraction interaction: PNNotificationInteraction) -> Bool {
// Navigate to a view within your application using the destination (the Landing URL)
// Return true to inform the SDK that it should not navigate
return true
}
x
Last updated