To redirect users to a specific page or view in your app via push notifications with custom action buttons, you can use deep links. Follow these steps to set up deep linking in your app:
Set Up a URL Scheme
In your Xcode project, define a custom URL scheme (netmera://).
Configure Info.plist
Open your Info.plist file.
Add a new key: URL types. Xcode will create an array with a dictionary called Item 0.
Inside Item 0, add:
URL identifier> Set it to your custom scheme.
URL Schemes >This creates an array.
Item 0 inside URL Schemes > Set it to your custom scheme.
Handle the Deep Link
Add this method to your app delegate:
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
{
//handle URL here to navigate to custom views
return true
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
{
//handle URL here to navigate to custom views
return YES;
}
Scheme and Host Properties
You can use the scheme and host of a URL to navigate to different screens in your app.
For example, if you have deep links like netmera://screenOne and netmera://screenTwo, the scheme is netmera, and the host tells you which screen to show (screenOne or screenTwo).
Here’s how you can use it in code:
if url.scheme == "netmera" {
if url.host == "screenOne" {
// Present view controller for screenOne
} else if url.host == "screenTwo" {
// Present view controller for screenTwo
}
// Or you can use the host property directly
}
Deep Link Callback
Netmera SDK triggers openURL when users tap a notification. To ensure deep linking works properly, implement Netmera Delegate:
// Extends NetmeraPushDelegate
// In didFinishLaunchingWithOptions, after calling Netmera.start()
Netmera.setPushDelegate(self)
func shouldHandleOpen(_ url: URL!, for object: NetmeraPushObject!) -> Bool {
// Deeplink is checked (valid or invalid)
return true
}
func handleOpen(_ url: URL!, for object: NetmeraPushObject!) {
// Control and redirect method
print("handleOpenUrl: \(url), for pushObject: \(object)")
}
// Extends NetmeraPushDelegate
// In didFinishLaunchingWithOptions
[Netmera setPushDelegate:self];
- (BOOL)shouldHandleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
// Deeplink is checked (valid or invalid)
return YES;
}
- (void)handleOpenURL:(NSURL *)url forPushObject:(NetmeraPushObject *)object {
// Control and redirect method
NSLog(@"handleOpenURL: %@ forPushObject %@", url, object);
}
Universal Links
Configure the Project
Add "Associated Domains" capability.
In the domain section, add entries like applinks:www.mywebsite.com.
Configure the Website
Create an apple-app-site-association file:
Host this file on your HTTPS server at / or /.well-known/.
The appID consists of the Team ID (found in Apple Developer Account) and the App Bundle ID (found in the project).
Specify the paths the app supports (e.g., /products).