Puse la notificación utilizando Embarcadero Rad Studio Tokio 10.2.3 en dispositivos Android y Apple escritos en C ++ y Delphi.
Este proyecto se basa en el código C ++ y el código Delphi. La aplicación principal principal está destinada a desarrollarse en C ++ utilizando el código Delphi como unidades separadas para lograr con el resultado. Este documento está dedicado a todos aquellos que intentaron hacer su propia notificación push utilizando Embarcadero Rad Studio y se prueba en la versión Tokio 10.2.3 con un Android SM-520 (Galaxy A5) y iPhone X (iOS 11.4.1)
_File necesario:
• Delphi
Dw.iosapi.usernotifications.pas dw.iosapi.usernotifications.hpp
Dw.remotenotificationspatch.ios.pas dw.remotenotificationspatch.ios.hpp
Dw.pushclient.pas dw.pushclient.hpp
Dw.registerfcm.pas dw.registerfcm.hpp
SharedVariables.pas SharedVariables.HPP
• C ++
Unidad1.CPP Unidad 1.H
Androide. Para enviar notificaciones push a Android, debe crear una cuenta de mensajería en la nube de Firebase y al usar la consola (Iniciar sesión), debe crear su propia aplicación y asignarle un identificador de aplicación que debe ser el mismo en la aplicación final (ex. Com.duolabs.mypushapp) iOS. En iOS, debe crear un certificado push en el sitio de desarrolladores de Apple que le permita enviar notificaciones push a una aplicación específica dentro de la misma gama de aplicaciones de dominio de aplicación (ex. Com.duolabs.mypushapp) Las notificaciones para Android deben tener una cuenta FCM y una notificación para Apple debe tener un appid y una cerificada push. Vamos a enviar mensajes push usando dos scripts .php, uno para Android y otro para iOS.
Pequeña explicación del código.
Código C ++:
Funciones:
bool __fastcall checkInet ();
_Cheks si la conexión a Internet está disponible. No tan interesante.
void __fastcall tForm1 :: ResendRequestButClick (tobject *remitente) _Requests para que la aplicación del dispositivo móvil se registre a través de los servidores FCM a FCM y APN y los desencadenantes funcionan una vez que OnserviceConnectionChange se recibe el token:
Variables:
String ServerAppID = L"8189xxxxxxxxx";
FPushClient->GCMAppID = ServerAppID;
FPushClient->ServerKey = L"AAAAxxxxxxx";
FPushClient->BundleID = L"com.duolabs.mypushapp";
FPushClient->UseSandbox = true;
FPushClient->OnChange = &OnServiceConnectionChange;
FPushClient->OnReceiveNotification = &OnReceiveNotificationEvent;
FPushClient->Active = true;
void __fastcall tForm1 :: onServiceConnectionChange (Tobject *remitente, tpushService :: tchanges Achange)
_ Cuando se recibe un token. El token de Android se recibe en formato FCM (cadena larga) y el token de Apple se devuelve en formato hexadecimal (32 bytes). El valor del token de Apple se pasa de Delphi a C ++ utilizando "String apnstoken" declarado en SharedVariables.pas
void __fastcall tForm1 :: ResendRequestButClick (Tobject *remitente)
_ Requests para la aplicación del dispositivo móvil se registrará a través de FCM a FCM y los servidores APN y la función de desencadenantes:
void __fastcall tForm1 :: OnRECeivenotificationEvent ( remitente de tobject, tpushserviceNotification const anotification)
_ Esta función se activa cuando se recibe un mensaje de notificación
• La ID del dispositivo sigue siendo la misma en cada dispositivo y se envía a APN o FCM para obtener un token para la notificación remota. Los cambios de token cada vez que se instala la aplicación (instalación fresca). Si se registra en un DB, el token, recuerde actualizarlo y verificarlo cada vez que se inicia la aplicación móvil, ya que puede haber cambiado debido a una reinstalación de la aplicación (eliminar-> Instalar).
• Esta aplicación C ++ se basa en el código fuente de Delphi (créditos para Dave Nottage@ Delphi World). ¡Un cálido agradecimiento y mis agradecimientos a Dave Nottage por su tiempo y paciencia que me valió la pena! ¡No olvides echar un vistazo a su increíble sitio web para los amantes de Delphi!
• Una buena guía para el registro de APN se puede encontrar aquí: https://www.raywenderlich.com/584-push-notifications-tutorial-getting-started
• Decidimos no evitar que FCM SDK evitara el hecho de estar vinculado a los servicios de Google, que son y siguen siendo excelentes, pero tener más control sobre la notificación push establece que el desarrollador se libera para actuar de la manera que quiere.
Diviértete y disfruta. Cualquier comentario será muy apreciado. Riccardo Alessi