Flutter、Firebase ios、クラウドメッセージは、アプリがバックグラウンドにある場合は表示されず、アプリがフォアグラウンドにある場合にのみ表示されます

Dec 01 2020

私はフラッター依存関係を使用しています:

firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6

次のようなFirebaseCloudメッセージを送信します。

{
"to": "/topics/demo_ios"
"notification" : {
"body" : "Hi there now now",
"title" : "Wow!",
"sound": "default"

},
 "priority": "high"
"data": {
    "title": "Hi there yes",
    "body": "Wow",
}
}

iOSでは、通知はアプリがフォアグラウンドにあるときに表示されますが、バックグラウンドにあるときはまったく表示されません。多くのことを読んで修正しようとしましたが、それでも機能しません。xcodeからバックグラウンドフェッチ、リモート通知、バックグラウンド処理を設定しましたが、それでも機能しません。

plistファイルでFirebaseAppDelegateProxyEnabledをfalseに設定しましたが、役に立ちませんでした。

許可を求めます:

_messaging.requestNotificationPermissions(
  const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false)
);
_messaging.onIosSettingsRegistered.listen((event) {print('2124: ios Setting registered');});

回答

NihadDelic Dec 01 2020 at 05:11

まず、プラグインをに更新することをお勧めしますfirebase_messaging: ^8.0.0-dev.8。iOSのバックグラウンド処理が有効になっているためです。ここでこの変更を参照してください:

  • iOSバックグラウンドハンドラーのサポート。

次に、それらすべてをFlutterプロジェクトに統合する方法については、公式ドキュメントFlutterFire(これはプラグインの8.xx-devバージョンの直後のドキュメントです)に従ってください。

最後に、APNの詳細をお読みください。これは、Appleがこれらのメッセージを異なる方法で処理APNSConfigし、通知を送信するためにスクリプト内にプロパティを含める必要があるためです。

あなたはFirebaseAdmin経由で通知を送信している場合は、お読みくださいこれを。

その場合、プロパティcontent_available=True内に含まれるものを設定する必要があることを忘れないでくださいAPNSConfig。したがって、基本的にFirebaseAdminを使用している場合は、次のようなプロパティも含める必要があります。

apns=messaging.APNSConfig(
        payload=messaging.APNSPayload(
            aps=messaging.Aps(
                alert='alert text',
                sound='s',
                content_available=True,
                mutable_content=True,
                category='c',
                thread_id='t',
                custom_data={
                    'id': 'xxx',
                    'type': 'xxx',
                    'title': 'Robb',
                    'content': 'Axxxx',
                    'image': 'xxx',
                    'deepLink': 'xxxx',
                },
            ),
        )
    ),
ParveshKhan Dec 01 2020 at 10:31

私も同じ問題を抱えていました。testflightにIPAファイルをアップロードしてみてください。そうすればうまくいきます。

RJB Dec 03 2020 at 02:28

まあ、解決策は非常に簡単で、私に代わって間違いがありました。

文書pub.devが述べているように:

Firebaseドキュメントのこのガイドに従って、プッシュ通知を受信するためにAppleが必要とする証明書を生成します。「プロビジョニングプロファイルの作成」というタイトルのセクションはスキップできます。

リンクは次のとおりです。 https://firebase.google.com/docs/cloud-messaging/ios/certs

これらの手順を実行するのを忘れました。これを行った後、それはうまくいきました