質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

7400閲覧

【Swift】【プッシュ通知】通知画面から指定画面に飛んだ後、通常起動している画面に戻るにはどうしたらいいでしょうか?

HNSZ

総合スコア33

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2019/01/29 16:36

編集2019/01/30 12:51

いつもアドバイス頂きましてありがとうございます。
少し分かりづらいかもしませんがヒント頂けると幸いです。

現状

私はFirebaseCloudMessageを利用して、プッシュ通知を送信しています。
通知をクリックした際には、アプリトップ画面(is Initial ViewControllerでの指定画面)ではなく、
アプリの特定の画面に推移します。

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { //windowを生成 self.window = UIWindow(frame: UIScreen.main.bounds) //Storyboardを指定 let storyboard = UIStoryboard(name: "Main", bundle: nil) //推移先を指定 let initialViewController = storyboard.instantiateViewController(withIdentifier:"EventDetail") self.window?.rootViewController = initialViewController self.window?.makeKeyAndVisible() completionHandler() }

問題点

希望する画面(withIdentifier:"EventDetail")を開けるのは良いのですが、
この画面を開いた後、通常開いている画面へ移動ができません。

作成したwindow(self.window = UIWindow(frame: UIScreen.main.bounds))を消せば、
通常開いている画面が現れるかと思い、

self.view.window?.isHidden = true

を実行しましたが、画面が真っ暗になるだけです。

実現したいこと

こちらがアプリの全体像となります。
プッシュ通知で画面を開いた後、イベント詳細画面より、
イベント一覧が表示されている画面への推移を行いたいです。
(UITabBarControllerも合わせて開くことになると思っています。)

イメージ説明

「rootViewController」「window」「makeKeyAndVisible()」等、ビューに関係しそうな
ワードで検索してみたのですが全然わかりませんでした。

ヒントとなるワードや、考え方、学ぶべきことなど
どんなことでも構いませんのでヒントがありましたらご教示頂きたいです。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

タップ後にタブバーの1(イベント一覧テーブル)に行きたいということですよね?

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { //windowを生成 self.window = UIWindow(frame: UIScreen.main.bounds) let storyboard = UIStoryboard(name: "Main", bundle: nil) //推移先を指定 if let initialViewController = storyboard.instantiateViewController(withIdentifier:"EventDetail") {        initialViewController.modalPresentationStyle = .overFullScreen self.window?.rootViewController = initialViewController self.window?.makeKeyAndVisible() } completionHandler() }

修正しました

投稿2019/01/30 07:01

編集2019/01/30 14:38
akaakoz

総合スコア183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HNSZ

2019/01/30 12:58

ご丁寧にありがとうございます! 説明が分かりづらく申し訳ございません。 正確には、 「通知をタップ後に、まずはイベント詳細(画像内 画面3)に移動した後に、「戻るボタン(self.dismiss)」を押すと、 タブバーの1(イベント一覧テーブル)に行きたい」 となります。 ご教示頂いたコードですと、起動後、真っ黒な画面になってしまいました・・・ =========== //推移先を指定 let initialViewController = storyboard.instantiateViewController(withIdentifier:"EventDetail") self.window?.makeKeyAndVisible() =========== ↓ =========== //推移先を指定 let initialViewController = storyboard.instantiateViewController(withIdentifier:"EventDetail") self.window?.rootViewController = initialViewController self.window?.makeKeyAndVisible() =========== としてみると、 タブバーの1(イベント一覧テーブル)が表示された後にすぐ、 イベント詳細(画像内 画面3)が連続して表示されたのですが、 その後、タブバーの1(イベント一覧テーブル)へ戻れない状況です・・・ 何かヒントございませんでしょうか。
HNSZ

2019/01/31 18:56

akaakoz様 ご丁寧にありがとうございます!!! 問題解決できました! 英語が苦手な為、stackoverflowについては疎遠がちになってしまっていましたが、 今後は必ず目を通して進めたいと思います。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問