Configuración de la mensajería en la nube de Firebase (mensajería FCM) de Felix Ivance Runye | Octubre de 2020

¿Qué está revoloteando? Flutter es un kit de desarrollo de interfaz de usuario de software de código abierto creado por Google. Se utiliza para desarrollar aplicaciones para Android, iOS, Linux, Mac, Windows, Google Fuchsia y la web desde una única base de código.

Increíble, ¿no? 😎

Vayamos directo a eso.

Una foto de James Pond en Unsplash

Debes estar ejecutando flutter y firebase

Abra el manifiesto para Android en el directorio android / app / src y agregue el siguiente código para obtener la carga útil

<application ...>
<activity ... >

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

<!-- Add below to ensure we get the payload when tapping on a notification -->
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

</activity>
</application>

Eso es todo lo que necesitamos para Android.

Veamos la importaciónYnt parts para iOS. Asegúrese de tener sus certificados generados para notificaciones push y de haber agregado el archivo GoogleService-Info.plist a su proyecto. Estos pasos se pueden ver aquí dentro de la integración de iOS.

Abra su proyecto en Xcode usando el espacio de trabajo. Seleccione Corredores en el Navegador de proyectos para activar las notificaciones automáticas, los modos en segundo plano y, en la sección Modos en segundo plano, habilitar la carga en segundo plano y las notificaciones remotas.

Abra el archivo AppDelegate.ma y agréguelo

if (@available(iOS 10.0, *)) {
[UNUserNotificationCenter currentNotificationCenter].delegate = (id) self;
}

Eso es todo por la configuración.

Ahora podemos agregar el paquete firebase_messaging a su pubspec.yaml desde pub.dev

(El momento de publicación de este artículo es el último paquete firebase_messaging: ^ 7.0.3)

Necesitamos crear un nuevo archivo en la carpeta de servicios llamado pushNotificationService.dart

luego crea una clase llamada PushNotificationService almacenar una instancia local en él Clase FirebaseMessaging

En esta clase, tendremos una función de inicialización que hace lo siguiente.

  • Si la plataforma es iOS, solicite permisos de iOS.
  • Configurar funciones de devolución de llamada cuando recibimos notificaciones push
class PushNotificationService {
final FirebaseMessaging _fcm = FirebaseMessaging();

Future initialise() async {
if (Platform.isIOS) {
_fcm.requestNotificationPermissions(IosNotificationSettings());
}

_fcm.configure(

//when app is open and it receives a push notification onMessage: (Map<String, dynamic> message) async {

print("onMessage: $message");
},

//when the app is completely closed and not running in the background, and opened directly from the push notification onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
},
//when the app is in the background and opened directly from the push notification onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
},
);
}
}
Future getToken() async{
return _fcm.getToken();
}

Las devoluciones de llamada onLaunch y onResume son donde deserializaría su mensaje y navegaría o usaría esta información para hacer algo en la aplicación.

También queremos tener el servicio en ejecución cuando abramos nuestra aplicación. (lógica de arranque), en este caso uso mi widget de estado, que maneja la pantalla de bienvenida

final PushNotificationService _pushNotificationService = PushNotificationService();

cree una función handleStartUpLogic en el widget de estado para obtener un token de dispositivo específico. ahora puede almacenar este token en su base de datos y programar notificaciones para sus clientes o usuarios

Future handleStartUpLogic() async {
await _pushNotificationService.initialise();
print("token is");
_pushNotificationService.getToken().then((res){
print(res);
});
}

luego en initState (); función, llame a la función anterior e inicialice fcm en la aplicación

@override
void initState() {
super.initState();
handleStartUpLogic();
}

Finalmente, cree una aplicación en console.firebase.com y descargue google-services.json y colóquelo en la carpeta raíz de Android / app /

Ahora pruebe usando la mensajería en la nube en la consola como se muestra a continuación

¡Y ya está!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *