3
我试图在接收远程推送通知时显示特定的viewcontroller。我已经添加了我所有的代码添加到方法didReceiveRemoteNotification
:当应用程序退出时显示远程通知的uiviewcontroller
func application(application: UIApplication, didReceiveRemoteNotification userinfo: [NSObject: AnyObject])
我已经添加以下代码:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
let code = (userInfo["aps"] as! [String: AnyObject])
// Call to retrieve blog
if let blog = code["b"] as? NSNumber {
let blogId = blog as! Int
// Show blog from notification
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
var controller = mainStoryboard.instantiateViewControllerWithIdentifier("blogCtrl") as! BlogController
controller.blogId = blogId
var rootController = mainStoryboard.instantiateViewControllerWithIdentifier("navCtrl1") as! UINavigationController
self.window?.rootViewController = rootController
rootController.pushViewController(controller, animated: true)
self.window?.makeKeyAndVisible()
}
if let tonic = code["t"] as? NSNumber {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
var controller = mainStoryboard.instantiateViewControllerWithIdentifier("tonicDetail") as! TonicDetailController
controller.tonicId = tonic as! Int
var rootController = mainStoryboard.instantiateViewControllerWithIdentifier("navCtrl1") as! UINavigationController
self.window?.rootViewController = rootController
rootController.pushViewController(controller, animated: true)
self.window?.makeKeyAndVisible()
}
if let gin = code["g"] as? NSNumber {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
var controller = mainStoryboard.instantiateViewControllerWithIdentifier("GinDetail") as! GinDetailController
controller.ginId = gin as! Int
var rootController = mainStoryboard.instantiateViewControllerWithIdentifier("navCtrl1") as! UINavigationController
self.window?.rootViewController = rootController
rootController.pushViewController(controller, animated: true)
self.window?.makeKeyAndVisible()
}
}
当应用程序在后台一切正常,但是当应用程序被quited,并我收到一个远程通知,它只启动应用程序。 如果应用程序之前被退出,是否有可以调用的方法?
在第一线你的代码创建了一个UILocalNotification,但是在第四行中,你将它用作NSDictionary。它是否正确? 因为当我试着你的代码我有一个错误: 'var notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? UILocalNotification 如果通知!= nil {“有一个通知”) self.application(application,didReceiveRemoteNotification:notification as!NSDictionary)}' Error说:'NSDictionary不能隐式转换为[NSObject:AnyObject] ]' –
@HannesVandenBerghe而不是'UILocalNotification'使用'NSDictionary'将工作 – Aanabidden
@Aababidden这确实是解决方案!谢谢! –