Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Delphi 11 – Firebase Cloud Messaging ( FCM ) – iOS app Push Notification

Digital Innovation Partner

Delphi 11 – Firebase Cloud Messaging ( FCM ) – iOS app Push Notification

Obiettivi:

  • integrare le push notification Firebase (FCM) in una app realizzata con Delphi per iOS senza l’ausilio di librerie di terze parti.
  • Avere lo stesso base code nella applicazione e nei server per la gestione delle push in Delphi uguale a quello utilizzato per Android.

 

Ambiente di test utilizzato:

  • VM Delphi 11 Alexandria Ent. Edition su Windows 10 pro 64GB Ram
  • Xcode 13.2.1 
  • Mac OS Menterey 12.0.1
  • iOS sdk iPhoneOS 14.5
  • Device test
    • iPad 10.2 myl92ty/a os. ver 14.3
    • iPhone 12 mini

Prerequisiti:

  • Applicazione iOS operativa sui tuoi dispositivi in development
  • Account Firebase e progetto creato

Step necessari per associare le notifiche 

  1. Configurare la distribuzione della app sul portale developer.apple.com e su https://appstoreconnect.apple.com/apps/<appId>
  2. Aggiungere il codice di gestione sull’applicazione Delphi e importare l’sdk firebase per iOS
  3. Configurare il progetto su firebase https://console.firebase.google.com/project/
  4. Scaricare il file “GoogleService-Info.plist” da firebase, copiarlo nella directory del progetto e inserirlo nell’elenco di distribuzione (deploy)
  5. Invio di un messaggio di push di prova da firebase console o dal tuo server

Step 1 : Configurare la distribuzione della app sul portale developer.apple.com e su https://appstoreconnect.apple.com/apps/<appId>

  • (apple portal) Configurare la distribuzione della app sul portale apple developer per ricevere le push
    • creare un certificato per le push notifications, ricliccando su “configure” della voce “Push Notifications”
    • abilitare nella sezione “Identifier” “Push Notifications”  e associargli un certificato per le push “Production SSL Certificate” ( mac keystore–> Accesso Portachiavi–> Assistente certificato –> Richiedi un certificato da un autorità di certificazione )
    • nella sezione “keys” sempre del tuo pannello developers Creare una chiave per le push, questa chiave la si può scaricare una volta sola
    • (se non è già stato fatto) creare una app su “app Store Connect” ( il codice “sku” è un tuo codice interno (scrivici quello che vuoi basta che te lo ricordi) )
    • pubblicare la app su App Store Connect anche senza il supporto alle push utilizzando il programmino “Transporter”

Step 2 : Aggiungere il codice di gestione sull’applicazione Delphi e importare l’sdk firebase per iOS

  • (delphi) Scaricare da getit il package SDK FCM e decomprimerlo nella directory proposta oppure scegliere una path personalizzata
  • (delphi) Creare una “Variabile di ambiente” (environment variable) in cui definire la path base di Friebase SDK for iOS ( nel mio caso C:\Users\<myusername>\Documents\Embarcadero\Studio\22.0\CatalogRepository\FirebaseSDKforiOS-6.28\Firebase ) e che ho chiamato “Firebase_6_28
  • (delphi) Modificare la search path nelle opzioni di progetto ( project –> options –> Delphi compiler –> search Path :

    •  
    • Copiare la cartella PromisesObjC.xcframework in PromisesObjC.framework
  • (delphi) direttiva “-ObjC” al linker LD (project –> options –> Delphi Compiler –> Linking ) per permettere di includere i metodi dell’sdk
  •  (delphi) copiare il file “iOSapi.FirebaseCommon.pas” di Delphi nella cartella del tuo progetto  ( C:\Program Files (x86)\Embarcadero\Studio\22.0\source\rtl\ios\iOSapi.FirebaseCommon.pas –> e:\progetti\myApp ) editare il file e scriveteci dentro:

    •  
  • (delphi) copiare il file “iOSapi.FirebaseMessaging.pas” di Delphi nella cartella del tuo progetto ( C:\Program Files (x86)\Embarcadero\Studio\22.0\source\rtl\ios\iOSapi.FirebaseMessaging.pas–> e:\progetti\myApp )

  • Eliminare dai files la scritta “{$IFNDEF IOS32}framework{$ENDIF}” (direttiva al compilatore) dai due file appena menzionati
  • Includere le librerie di Embarcadero per la gestione delle push via FCM nel form principale del progetto

  • Definiamo nel form i metodi di gestione della ricezione notifiche e del cambio di connessione, inoltre utilizziamo l’evento onclick “btnInitializePushClick” di un bottone “btnInitializePush” per eseguire l’inizializzazione della gestione delle notifiche. L’interfaccia viene gestita in questo demo da un Tmemo “memoLog”
  • Implementiamo il metodo che gestisce la ricezione delle notifiche
  • Inizilizzazione delle push tramite evento “click” del bottone:

  • Step 3: Configurare il progetto su firebase:

  • Aggiungi la app al progetto cliccando su “Aggiungi App” e scarica il file GoggleService-Info.plist nella directory del tuo progetto Delphi.

  • Nella sezione impostazioni devi caricare il certificato APN che hai precedentemente generato sul portale di apple nella sezione “Keys” e caricarlo in:

 

 

A questo punto, compilate l’applicazione e fatela girare sul vostro dispositivo.

All’interno di memoLog troverete un JSON contente il deviceID, dovete copiarlo per fare un test di invio del primo messaggio da firebase.

 

Step 5) Invio di un messaggio di push di prova da firebase console o dal tuo server

 

Copiare la chiave server ed eseguire una chiamata rest come segue:

 

Il JSON deve contenere anche l’oggetto “notification” se volete che la notifica arrivi anche quando la vostra app non è attiva:

 

that’s all