Как обработать уведомление pu sh нажмите в iOS Swift? - PullRequest
2 голосов
/ 04 апреля 2020

Я пытаюсь обработать pu sh щелчок уведомления. Когда приходит уведомление pu sh, я хочу направить пользователя в определенную часть приложения после нажатия на уведомление pu sh. Во-первых, в приложении есть SplashScreen, где он показывает вкладку как «Представлять модально», проверяя, вошел ли пользователь ранее в API Call. Что я хочу показать пользователю, это содержимое ленты в табличном представлении в контроллере навигации на первой вкладке TabBar. Но я не могу добраться до него и показать его как нажатый на табличном представлении.

-SplashScreen -------> TabBar -> Контроллер навигации -> Контроллер табличного представления -> ContentView (я хочу показать)

Я пытался написать расширение UIApplication, но оно не сработало. Вот расширение

extension UIApplication {
class func topViewController(base: UIViewController? = (UIApplication.shared.delegate as! AppDelegate).window?.rootViewController) -> UIViewController? {
    if let nav = base as? UINavigationController {
        return topViewController(base: nav.visibleViewController)
    }
    if let tab = base as? UITabBarController {
        if let selected = tab.selectedViewController {
            return topViewController(base: selected)
        }
    }
    if let presented = base?.presentedViewController {
        return topViewController(base: presented)
    }
    return base
}
}

Я написал следующий код в didFinishLaunchingWithOptions

      if let option = launchOptions {
        let info = option[UIApplication.LaunchOptionsKey.remoteNotification] as? [String:Any]
        if let info = info {
            if info["type"] as! String == "site-notification" {
                let contentVC = Destination().FeedCoontentVC

                contentVC.selectedSite = (info["link"] as! String)
                contentVC.title = "asd"
               UIApplication.topViewController()?.present(contentVC, animated: true, completion: nil)
            }
        }
    }

1 Ответ

0 голосов
/ 04 апреля 2020
if info["type"] as! String == "site-notification" {

    let tabbarSB = UIStoryboard(name: StoryBoard.tabBar, bundle: nil)
    let tabbarVC = tabbarSB.instantiateViewController(withIdentifier: ViewController.TabBar) as! TabBarController
    self.window?.rootViewController = tabbarVC 

    tabbarVC.viewControllers = [] // add your tab view controllers

    for child in (tabbarVC.childViewControllers) {
        if child.restorationIdentifier == "tablevc" //add restoration id to storyboard {
            tabbarVC.selectedIndex = 1
            let tableVC = (child.childViewControllers[0]) as! TableViewController
            let contentSB = UIStoryboard(name: StoryBoard.contentSB , bundle: nil)
            let contentVC = contentSB.instantiateViewController(withIdentifier: ViewController.contentVC ) as! FeedCoontentVC    
            contentVC.selectedSite = (info["link"] as! String)
            contentVC.title = "asd"
            tableVC.navigationController?.pushViewController(contentVC, animated: false)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...