gpt4 book ai didi

ios - 如何正确处理接收远程推送通知

转载 作者:可可西里 更新时间:2023-11-01 01:37:42 25 4
gpt4 key购买 nike

我有一个关于如何处理传入推送通知的问题。如您所知,一个应用程序可以有很多 View 。例如,当我收到通知时,我想在用户所在的 View 中显示警报或做其他事情(因为我真的不知道用户在收到通知时将在哪个 View 中)。现在,如果每个 View 代表一个 swift 文件,那么我是否需要在每个 swift 文件中实现相同的代码来处理传入的推送通知,或者我猜有更好的设计或技术来处理这个问题?

我已经搜索了一段时间,我所能找到的只是人们在应用程序处于后台而不是前台时遇到问题:/

任何东西都很好,教程、指南、代码示例。如果可能的话,有很多方法可以解决这个问题,这样我就可以研究它们并选择最适合我的方法。

最佳答案

希望这会有所帮助:

收到通知时查找可见的 View Controller 。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

let currentViewControlelr :UIViewController = topViewController(UIApplication.sharedApplication().keyWindow?.rootViewController)!;

if(currentViewControlelr == YourViewController()){

//Display Alert
let alert = UIAlertView()
alert.title = "Alert"
alert.message = "Here's a message"
alert.addButtonWithTitle("Understod")
alert.show()

//Implement other function according to your needs
}

NSLog("UserInfo : %@",userInfo);
}

获取当前可见的Top ViewController的辅助方法

func topViewController(base: UIViewController? ) -> UIViewController? {
if let nav = base as? UINavigationController {
return topViewController(nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(presented)

}
return base
}

关于ios - 如何正确处理接收远程推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34434048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com