Push Notificação usando o Embarcadero Rad Studio Tóquio 10.2.3 em dispositivos Android e Apple escritos em C ++ e Delphi.
Este projeto é baseado no código C ++ e no código Delphi. O principal aplicativo principal deve ser desenvolvido em C ++ usando o código Delphi como unidades separadas para realizar com o resultado. Este documento é dedicado a todos aqueles que tentaram fazer sua própria notificação por push usando o Embarcadero Rad Studio e é testado na versão Tóquio 10.2.3 com um Android SM-520 (Galaxy A5) e iPhone X (iOS 11.4.1)
_File necessário:
• 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 ++
Unidade1.cpp unidade1.h
Android. Para enviar notificações push no Android, você precisa criar uma conta de mensagens em nuvem do Firebase e usando o console (login), você precisa criar seu próprio aplicativo e atribuir a ele um identificador de aplicativo que deve ser o mesmo no aplicativo final (por exemplo. No iOS, você precisa criar um certificado de push no site de desenvolvedores da Apple, que permite enviar notificações push para um aplicativo específico dentro da mesma faixa de domínio do aplicativo (por exemplo, as notificações de com.duolabs.mypushapp) para o Android precisam ter uma conta FCM e a notificação para a Apple deve ter um Appid e um push e um push. Vamos enviar mensagens push usando dois scripts .php, um para Android e outro para iOS.
Pequena explicação de código.
Código C ++:
Funções:
bool __fastCall checkInet ();
_ChaCks se a conexão com a Internet estiver disponível. Não é tão interessante.
void __fastCall tform1 :: resendRequestbutClick (tabject *remetente) _requests O aplicativo de dispositivo móvel é registrado através do FCM para servidores e gatilhos FCM e APN.
Variáveis:
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 *remetente, tpushService :: tchanges achange)
_Quando um token é recebido. O token Android é recebido no formato FCM (string longa) e o token da Apple é retornado no formato hexadecimal (32Bytes). O valor do token da Apple é passado de Delphi para C ++ usando o “String apnsken” declarado em sharedvariables.pas
void __fastCall tform1 :: resendRequestButClick (tabjas *remetente)
_Requests para aplicativo de dispositivo móvel a ser registrado através da função FCM para FCM e APN Servidores e gatilhos:
void __fastCall TForm1 :: OnReCeenOtificationEvent ( remetente de tabjas, tpushServicenotification const Anotification)
_ Esta função é acionada quando uma mensagem de notificação é recebida
• O ID do dispositivo permanece o mesmo em todos os dispositivos e é enviado à APN ou FCM para obter um token para uma notificação de push remota. Alterações de token sempre que o aplicativo é instalado (nova instalação). Se você se registrar em um banco de dados, o token lembre-se de atualizá-lo e verificar sempre que o aplicativo móvel iniciar, pois pode ter mudado devido a uma reinstalação do aplicativo (remove-> install).
• Este aplicativo C ++ é baseado no código -fonte Delphi (créditos para Dave Nottage@ Delphi World). Um agradecimento caloroso e minhas apreciações a Dave Nottage por seu tempo e paciência que isso pagou para mim! Não se esqueça de dar uma olhada em seu site incrível para os amantes da Delphi !!
• Um bom guia para o registro da APN pode ser encontrado aqui: https://www.raywenderlich.com/584-push-notifications-tutorial-getting-started
• Decidimos não evitar o FCM SDK para evitar o fato de estar vinculado aos serviços do Google, que são e permanecem ótimos, mas ter mais controle sobre a notificação de push define o desenvolvedor livre para agir da maneira que ele deseja.
Divirta -se e aproveite. Qualquer feedback será muito apreciado. Riccardo Alessi