IOS обрабатывает push-уведомления при закрытии приложения - PullRequest
0 голосов
/ 04 июля 2019

Я хочу нажать UIViewController при нажатии на уведомление и закрытии приложения

следующий мой код в didReceiveRemoteNotification

if application.applicationState == .inactive || application.applicationState == .background {
        DeeplinkHandler.handleNotification(userNotification: userNotification)
        completionHandler(UIBackgroundFetchResult.newData)
    }

следующий код для обработки уведомлений. Глубокая ссылка

class func handleNotification(userNotification :  UserNotification?){
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    var navigationVC = UINavigationController()

    if let tabBarVC = appDelegate.window?.rootViewController as? UITabBarController {
        if let navVC = tabBarVC.viewControllers?[tabBarVC.selectedIndex] as? UINavigationController {
            navigationVC = navVC
        }
        else {
            tabBarVC.selectedIndex = 0
            navigationVC = tabBarVC.viewControllers?[0] as! UINavigationController
        }

    }
   // let navigationVC = appDelegate.window?.rootViewController as! UINavigationController

    switch userNotification?.type ?? "" {
    case DeeplinkHandler.NOTIF_TYPE_WEBVIEW:
        let appWebView = AppStrings.appStoryBoard.instantiateViewController(withIdentifier: "webPageViewControllerID") as! WebPageViewController
        appWebView.url = userNotification?.url ?? ""
        navigationVC.pushViewController(appWebView, animated: true)
    //case DeeplinkHandler.NOTIF_TYPE_PAGE_ID:
    //case DeeplinkHandler.NOTIF_TYPE_FLIGHT_STATUS:
    default:
        let appWebView = AppStrings.appStoryBoard.instantiateViewController(withIdentifier: "notificationViewControllerID") as! NotificationViewController
        //appWebView.url = userNotification?.url ?? ""
        navigationVC.pushViewController(appWebView, animated: true)

    }
}

Но уведомление о щелчке вызывает сбой при нажатии на уведомление при закрытии приложения.

Как с этим справиться?

попробовал следующий код в didFinishLaunchingWithOptions

 var notification: [AnyHashable: Any]? = (launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] as? [AnyHashable: Any])
    if let notification = notification {
        print("app received notification from remote\(notification)")
        var userNotification : UserNotification?
        if notification is [String : Any] {
            userNotification = createNSaveNotification(notification)
            DeeplinkHandler.handleNotification(userNotification: userNotification)
        }
    }
    else {
        print("app did not receive notification")
    }

это также сбой приложения при нажатии на уведомление при закрытии приложения

1 Ответ

0 голосов
/ 04 июля 2019

когда приложение закрывается, вы должны проверить уведомление в методе

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;

и проверьте данные в launchOptions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...