Flattern, Firebase ios, Cloud-Nachricht wird nicht angezeigt, wenn sich die App im Hintergrund befindet, nur wenn sich die App im Vordergrund befindet

Dec 01 2020

Ich benutze Flatterabhängigkeiten:

firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6

Ich sende eine Firebase-Cloud-Nachricht wie folgt:

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

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

In ios wird die Benachrichtigung angezeigt, wenn sich die App im Vordergrund befindet, im Hintergrund jedoch überhaupt nicht. Ich habe versucht, viele Dinge zu lesen und zu reparieren, aber es funktioniert immer noch nicht. Ich habe Hintergrundabruf, Remote-Benachrichtigungen und Hintergrundverarbeitung über xcode festgelegt, und es funktioniert immer noch nicht.

Ich habe FirebaseAppDelegateProxyEnabled in der plist-Datei auf false gesetzt, aber es hat nicht geholfen.

Ich bitte um Erlaubnis:

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

Antworten

NihadDelic Dec 01 2020 at 05:11

Zuerst empfehle ich Ihnen, das Plugin auf zu aktualisieren firebase_messaging: ^8.0.0-dev.8, da dort die iOS-Hintergrundbehandlung aktiviert ist. Sehen Sie hier diese Änderung:

  • Unterstützung für iOS-Hintergrundhandler.

Wie Sie all das in Ihr Flatterprojekt integrieren können, folgen Sie bitte der offiziellen Dokumentation FlutterFire (dies ist die Dokumentation direkt nach den 8.xx-dev-Versionen des Plugins.

Lesen Sie abschließend mehr über APN, da Apple diese Nachrichten anders behandelt und Sie die APNSConfigEigenschaft zum Senden von Benachrichtigungen in Ihrem Skript haben müssen.

Wenn Sie Benachrichtigungen über FirebaseAdmin senden, lesen Sie dies bitte .

Vergessen Sie nicht, dass Sie in diesem Fall festlegen müssen, content_available=Truewas in der APNSConfigEigenschaft enthalten ist. Wenn Sie also FirebaseAdmin verwenden, sollten Sie auch eine ähnliche Eigenschaft einschließen:

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

Ich hatte auch das gleiche Problem, versuche IPA-Datei auf Testflight hochzuladen, dann funktioniert es hoffentlich.

RJB Dec 03 2020 at 02:28

Nun, die Lösung war recht einfach und ein Fehler in meinem Namen.

Wie die documnents pub.dev angeben:

Generieren Sie die von Apple für den Empfang von Push-Benachrichtigungen erforderlichen Zertifikate gemäß diesem Handbuch in den Firebase-Dokumenten. Sie können den Abschnitt "Erstellen des Bereitstellungsprofils" überspringen.

Hier ist der Link: https://firebase.google.com/docs/cloud-messaging/ios/certs

Ich habe vergessen, diese Schritte zu machen. Danach hat es funktioniert