Previously i used the following code to differentiation whether my notification is local or remote when the app starts
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if (launchOptions?[UIApplication.LaunchOptionsKey.localNotification] != nil)
{
}
if (launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] != nil)
{
}
}
The conditions is that my app is killed and I am opening it from notification.
The problem is that this method
if (launchOptions?[UIApplication.LaunchOptionsKey.localNotification] != nil)
{
}
is deprecated and the following method isnot called when the app is opened from notification center
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {}
You can check the notification type in userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
too,
Class hierarchy is:
UNNotificationResponse
>UNNotification
>UNNotificationRequest
>UNNotificationTrigger
There are 4 types of triggers in UNNotificationRequest
:
UNLocationNotificationTrigger
UNPushNotificationTrigger
UNTimeIntervalNotificationTrigger
UNCalendarNotificationTrigger
Just use,
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
if response.notification.request.trigger is UNPushNotificationTrigger {
print("remote notification");
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With