Flutter, Firebase iOS, le message cloud ne s'affiche pas lorsque l'application est en arrière-plan, uniquement si l'application est au premier plan
J'utilise des dépendances flottantes:
firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6
J'envoie un message cloud Firebase comme ceci:
{
"to": "/topics/demo_ios"
"notification" : {
"body" : "Hi there now now",
"title" : "Wow!",
"sound": "default"
},
"priority": "high"
"data": {
"title": "Hi there yes",
"body": "Wow",
}
}
Dans iOS, la notification indique lorsque l'application est au premier plan, mais lorsqu'elle est en arrière-plan, elle ne s'affiche pas du tout. J'ai essayé de lire et de réparer beaucoup de choses, mais cela ne fonctionne toujours pas. J'ai défini la récupération en arrière-plan, les notifications à distance et le traitement en arrière-plan à partir de xcode, et cela ne fonctionne toujours pas.
J'ai défini FirebaseAppDelegateProxyEnabled sur false dans le fichier plist, mais cela n'a pas aidé.
Je demande l'autorisation:
_messaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false)
);
_messaging.onIosSettingsRegistered.listen((event) {print('2124: ios Setting registered');});
Réponses
Je vous recommande d'abord de mettre à jour le plugin firebase_messaging: ^8.0.0-dev.8
, car la gestion d'arrière-plan iOS y est activée. Voir ici ce changement:
- Prise en charge du gestionnaire d'arrière-plan iOS.
Ensuite, comment intégrer tout cela à votre projet Flutter , veuillez suivre la documentation officielle FlutterFire (il s'agit de la documentation juste après les versions 8.xx-dev du plugin.
Enfin, veuillez en savoir plus sur APN, car Apple gère différemment ces messages et vous devez avoir la APNSConfig
propriété dans votre script pour envoyer des notifications.
Si vous envoyez des notifications via FirebaseAdmin, veuillez lire ceci .
N'oubliez pas que dans ce cas, vous devez définir content_available=True
ce qui est contenu à l'intérieur de la APNSConfig
propriété.Par conséquent, si vous utilisez FirebaseAdmin, vous devez également inclure une propriété similaire à celle-ci:
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',
},
),
)
),
J'avais également le même problème, essayez de télécharger un fichier IPA sur testflight, puis cela fonctionne, espérons-le.
Eh bien, la solution était assez simple et une erreur de ma part.
Comme l'indiquent les documents pub.dev:
Générez les certificats requis par Apple pour recevoir des notifications push en suivant ce guide dans la documentation Firebase. Vous pouvez ignorer la section intitulée «Créer le profil d'approvisionnement».
Voici le lien: https://firebase.google.com/docs/cloud-messaging/ios/certs
J'ai oublié de faire ces étapes. Après avoir fait cela, cela a fonctionné