Xcode+FirebaseでTestFlight版だけプッシュ通知が届かない原因と確認ポイント

iOS開発

Xcodeで開発中のiOSアプリでFirebase Cloud Messaging(FCM)を利用している場合、実機ビルド版では通知が届くのに、TestFlight版だけ通知を受信できないケースがあります。この問題はAPNs証明書やBundle ID、Firebase設定の不一致が原因になっていることが多く、特に本番環境と開発環境の違いを理解することが重要です。この記事では、TestFlight版だけ通知が届かない場合の代表的な原因と対処法をまとめます。

TestFlight版は「本番APNs」で動作する

まず重要なのが、TestFlightで配布したアプリは「開発環境」ではなく「本番環境(Production APNs)」として扱われる点です。

Xcodeから直接ビルドした実機アプリはSandbox APNsを使用しますが、TestFlight版はProduction APNsを使用します。そのため、Firebase側に開発用APNsキーしか登録されていない場合、TestFlight版へ通知が届きません。

Firebase ConsoleのAPNs設定を確認する

Firebase ConsoleでAPNs認証キーが正しく設定されているか確認してください。

  • Firebase Console → プロジェクト設定 → Cloud Messaging
  • Apple app configurationのAPNs Authentication Keyを確認
  • .p8キー、Key ID、Team IDが正しいか確認

特に古い証明書方式を使用している場合、Production証明書が不足しているケースがあります。

Bundle Identifierの不一致を確認

TestFlight版とXcode実機版でBundle IDが一致しているか確認しましょう。

例えばDebug用とRelease用でBundle Identifierが異なる場合、Firebase側で別アプリとして認識されることがあります。

確認項目
Debug com.sample.app.dev
Release/TestFlight com.sample.app

Release用GoogleService-Info.plistが正しいかも確認してください。

Push Notifications Capabilityの確認

Signing & Capabilitiesで以下が有効になっているか確認します。

  • Push Notifications
  • Background Modes → Remote notifications

これらがDebugだけでなくRelease設定にも適用されている必要があります。

FCMトークンが取得できているか確認

TestFlight版でFCMトークン取得に失敗しているケースもあります。

App起動時に以下のようなログを確認してください。

  • didRegisterForRemoteNotificationsWithDeviceToken
  • Messaging.messaging().token

TestFlight版だけtokenが空になる場合は、APNs設定またはProvisioning Profileに問題がある可能性があります。

Provisioning Profileの確認

Apple Developer側でPush Notificationsが有効なProvisioning Profileを使用しているか確認してください。

古いProfileを使用している場合、Push権限が反映されていないことがあります。一度Profileを再生成して再ビルドすると改善することがあります。

Firebaseキャンペーン通知特有の注意点

Firebase Consoleの「Messagingキャンペーン」は、AnalyticsやFCM登録状況によって配信対象が変わる場合があります。

  • Analytics有効化確認
  • 通知許可ダイアログの許可確認
  • Audience条件の確認

単純なFCMトークン送信では届くのに、キャンペーンだけ届かない場合はAudience設定の問題も疑いましょう。

よくある改善手順

  1. FirebaseのAPNsキーを再登録
  2. Provisioning Profile再生成
  3. ReleaseビルドでPush Capability確認
  4. GoogleService-Info.plistをRelease用へ差し替え
  5. TestFlight版を削除して再インストール

特に「削除→再インストール」でFCMトークンが正常化することがあります。

まとめ

Xcode実機版では通知が届くのにTestFlight版だけ届かない場合、多くは「Sandbox APNs」と「Production APNs」の違いが原因です。FirebaseのAPNs設定、Provisioning Profile、Bundle ID、FCMトークン取得状況を順番に確認することで改善できるケースが非常に多いです。特にTestFlightは本番環境扱いになる点を意識して設定を見直すことが重要です。

コメント

タイトルとURLをコピーしました