Push通知からアプリを起動した時に画面遷移させたい
アプリを起動していないときにPUSH通知を受け取り、通知領域をタップしてアプリを起動したときに、画面遷移させたいのですが、現状その方法がわからず困っています。
ログインしているかの情報をデバイスに保存しており、もしログインしていなければログイン画面に遷移
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//// アプリ起動時処理
// 最初の画面を準備
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// ログイン判定
let defaults = NSUserDefaults.standardUserDefaults()
let isLogin: Bool? = defaults.objectForKey("isLogin") as? Bool
// 未ログインの場合
if isLogin == nil || !isLogin! {
//ログイン画面に遷移
let storyboard = UIStoryboard(name: "Login", bundle: nil)
self.loginNavigationController = storyboard.instantiateViewControllerWithIdentifier("LoginNavigationController") as! UINavigationController
self.window?.rootViewController = self.loginNavigationController
self.window?.makeKeyAndVisible()
}
// ログイン中の場合
else {
//PUSH通知経由でアプリを起動した場合
if(launchOptions == nil){
let storyboard = UIStoryboard(name: "Ctab", bundle: nil)
self.CtabNavigationController = storyboard.instantiateViewControllerWithIdentifier("CtabNavigationController") as! UINavigationController
self.window?.rootViewController = self.CtabNavigationController
self.window?.makeKeyAndVisible()
}else{
//PUSH通知ではなく、アイコンをタップしてアプリを開いた場合
let storyboard = UIStoryboard(name: "TabBarController", bundle: nil)
self.tabBarViewController = storyboard.instantiateViewControllerWithIdentifier("TabBarController") as! UITabBarController
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = self.tabBarViewController
self.window?.makeKeyAndVisible()
}
}
//省略
//アイコンバッチを0にする
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
return true
以下のサイトなども参考にしました。
iOS Push通知 デフォルト通知のカスタマイズ方法