やりたいこと
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通知を受信できる端末とそうじゃない端末があるのは何故でしょうか?
上記のプログラムに何か問題があればご指摘頂けると幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。