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

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

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

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

1713閲覧

Swift, Firebase, CloudMessagingでプッシュ通知を受け取れない

nekogrammer

総合スコア33

Firebase

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2022/02/13 06:39

やりたいこと

Swift(iOS)でFirebaseのCloudMessaging経由のプッシュ通知を受け取る
Lineの通知のように自分とチャットをしている特定の相手に対して通知を飛ばします

前提

すでにリリース済みのアプリのアップデートを考えています
アップデート内容はプッシュ通知に対応させることです
Apple DeveloperのサイトからCapabilityでPush Notificationを追加し、
Xcode側でもその追加変更に対応済みです

ここまでは出来た

プッシュ通知は機能としては実装済みです。
XcodeのiPhoneシミュレーターから、実機のiPhone7にプッシュ通知を送ることができました。
また、FirebaseのWebコンソールからテストメッセージを送りそれを受信することも出来ました。

問題点

アップデート機能の開発を行っていたiPhone実機(iPhone7)ではプッシュ通知を受信できるが
XcodeのiPhoneシミュレーターやその他のiPhone実機ではプッシュ通知を受信できないこと。
確認済みの事項として、各端末においてアプリのプッシュ通知は許可しています。
また、FirebaseのCloud MessagingのWebコンソール上から
テストメッセージをブロードキャストしたところiPhone7でのみプッシュ通知を受信しました。
それ以外の実機iPhoneおよびシミュレーターではプッシュ通知を受信することが出来ませんでした。

機器環境

○プッシュ通知を受信できたiPhone → iOS15.2.1 / iPhone7
×プッシュ通知を受信できないiPhone① → iOS14.8.1 / iPhoneXs
×プッシュ通知を受信できないiPhone② → iOS15.1 / iPhone8
×プッシュ通知を受信出来ないシミュレーター → iOS15.2 / iPhone11

プログラム

Swift

1// AppDelegate.swift (関係のある処理のみを抜粋して記載します) 2class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate { 3 4 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 5 6 // リモート通知に登録 7 if #available(iOS 14.0, *) { 8 UNUserNotificationCenter.current().delegate = self 9 10 let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound] 11 UNUserNotificationCenter.current().requestAuthorization( 12 options: authOptions, 13 completionHandler: { _, _ in } 14 ) 15 } else { 16 let settings: UIUserNotificationSettings = 17 UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil) 18 application.registerUserNotificationSettings(settings) 19 } 20 21 // FCMトークンを取得 22 Messaging.messaging().delegate = self 23 24 return true 25 } 26 27 // 通知トークンを取得したとき 28 func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) { 29 print("Firebase token: \(String(describing: fcmToken))") 30 } 31 32 // 通知が到着した時の挙動 33 func userNotificationCenter(_ center: UNUserNotificationCenter, 34 willPresent notification: UNNotification, 35 withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 36 print("通知1") 37 completionHandler([[.banner, .sound]]) 38 } 39 40 // 通知を選択した時の挙動 41 func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { 42 print("通知をタップした") 43 completionHandler() 44 } 45}

質問事項

すべての実機iPhone、およびシミュレーターに上記のプログラムを入れているのですが、
Push通知を受信できる端末とそうじゃない端末があるのは何故でしょうか?
上記のプログラムに何か問題があればご指摘頂けると幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
プログラムを書き直しているどこかのタイミングで
application.registerForRemoteNotifications()
この1行が抜け落ちていたようです。

○プッシュ通知を受信できたiPhone → iOS15.2.1 / iPhone7

このiPhone7では一度このコードを実行していたので
この行が抜け落ちた後も正常に動作していたのかもしれないです。

投稿2022/02/13 11:15

nekogrammer

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問