, когда пользователь получает push-уведомление и отбирает уведомление, он/она будет отправлен в мое приложение, где я хочу, чтобы появился определенный контроллер представления. Поэтому я использую центр уведомлений.Load ViewController при получении Push-уведомления
Мой вопрос: где мне нужно выполнить загрузку контроллера вида, чтобы он отображался и нажимался на стек навигации, когда пользователь входит в приложение?
func processReceivedRemoteNotification(userInfo:[NSObject:AnyObject]) {
let notification = userInfo as! Dictionary<String, AnyObject>
let json = JSON(notification)
// Get information from payload
let dispatchType:String = json["dispatch"]["dispatchType"].stringValue
switch dispatchType {
case "alert":
self.notificationCenter.postNotificationName("ALERT_RECEIVED", object: nil, userInfo: userInfo as [NSObject:AnyObject])
break
default:
break
}
}
View Controller для загрузки
class AlertViewController: UIViewController {
let notificationCenter: NSNotificationCenter = NSNotificationCenter.defaultCenter()
override func viewWillAppear(animated: Bool) {
self.notificationCenter.addObserver(self, selector: "alertMessageReceived:", name: "ALERT_RECEIVED", object: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func alertMessageReceived(notification: NSNotification) {
let userInfo = notification.userInfo as! Dictionary<String, AnyObject>
print(userInfo)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc1: AlertViewController = storyboard.instantiateViewControllerWithIdentifier("example1") as! AlertViewController
self.navigationController?.pushViewController(vc1, animated: true)
}
'processReceivedRemoteNotification' находится в AppDelegate. Поэтому я бы поставил код для загрузки VC непосредственно в оператор switch в методе выше? – sesc360
Если у вас есть ссылка на ваш навигационный контроллер в AppDelegate, вы можете сделать это там. Можете ли вы показать мне код, где будет создан navigationController? – Misternewb
на самом деле это сделано только в интерфейсе builder – sesc360