Flutter, Firebase ios, mensagem na nuvem não é exibida quando o aplicativo está em segundo plano, apenas se estiver em primeiro plano
Estou usando dependências de flutter:
firebase_messaging: ^7.0.3
flutter_local_notifications: ^3.0.1+6
Eu envio a mensagem do Firebase Cloud assim:
{
"to": "/topics/demo_ios"
"notification" : {
"body" : "Hi there now now",
"title" : "Wow!",
"sound": "default"
},
"priority": "high"
"data": {
"title": "Hi there yes",
"body": "Wow",
}
}
No ios, a notificação mostra quando o aplicativo está em primeiro plano, no entanto, quando está em segundo plano, ela não aparece. Tentei ler e consertar muitas coisas, mas ainda não funciona. Eu defino a busca em segundo plano, notificações remotas e processamento em segundo plano do xcode e ainda não funciona.
Defini FirebaseAppDelegateProxyEnabled como false no arquivo plist, mas não ajudou.
Eu solicito permissão:
_messaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true, provisional: false)
);
_messaging.onIosSettingsRegistered.listen((event) {print('2124: ios Setting registered');});
Respostas
primeiro, recomendo que você atualize o plug-in para firebase_messaging: ^8.0.0-dev.8
, porque o tratamento em segundo plano do iOS está ativado lá. Veja aqui esta mudança:
- Suporte ao manipulador de segundo plano do iOS.
A seguir, como integrar tudo isso ao seu projeto flutter, siga a documentação oficial do FlutterFire (esta é a documentação logo após as versões 8.xx-dev do plugin.
Por fim, leia mais sobre o APN, porque a Apple está tratando essas mensagens de maneira diferente e você precisa ter a APNSConfig
propriedade dentro do seu script para enviar notificações.
Se você estiver enviando notificações por meio do FirebaseAdmin, leia isto .
Não se esqueça de que, nesse caso, você precisa definir o content_available=True
que está contido dentro da APNSConfig
propriedade, então, basicamente, se você estiver usando FirebaseAdmin, deve incluir também uma propriedade semelhante a esta:
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',
},
),
)
),
Eu também estava tendo o mesmo problema, tente fazer o upload do arquivo IPA no testflight, então espero que funcione.
Bem, a solução foi bastante simples e um erro da minha parte.
Como o documento pub.dev afirma:
Gere os certificados exigidos pela Apple para receber notificações push seguindo este guia nos documentos do Firebase. Você pode pular a seção intitulada "Criar o perfil de provisionamento".
Aqui está o link: https://firebase.google.com/docs/cloud-messaging/ios/certs
Esqueci de fazer essas etapas. Depois de fazer isso, funcionou