Share via


Abilitare le notifiche push nell'app di chat

Questa esercitazione illustra come abilitare la notifica push nell'app IOS usando Azure Communication Chat SDK.
Notifiche push avvisa i client dei messaggi in arrivo in un thread di chat in situazioni in cui l'app per dispositivi mobili non è in esecuzione in primo piano. Servizi di comunicazione di Azure supporta due versioni delle notifiche push.

  • Basic Version : l'utente potrà visualizzare un numero di badge pari a 1 nell'icona dell'app, ricevere un suono di notifica e visualizzare un banner di avviso popup.

  • Advanced Version: ad eccezione delle funzionalità supportate nella versione di base, Contoso sarà in grado di personalizzare la sezione title & message preview nel banner di avviso.

    Screenshot della versione di base della notifica push.

    [Versione di base]

    Screenshot della versione avanzata della notifica push.

    [Versione avanzata]

Scaricare il codice

Accedere al codice di esempio per questa esercitazione su GitHub.

Prerequisiti

  1. Completare tutti i passaggi dei prerequisiti in Avvio rapido di Chat

  2. Installazione di ANH
    Creare un hub di notifica di Azure nella stessa sottoscrizione della risorsa di Servizi di comunicazione e collegare l'hub di notifica alla risorsa di Servizi di comunicazione. Vedere Provisioning dell'hub di notifica.

  3. Configurazione del certificato APNS
    In questo caso è consigliabile creare un certificato APNS p12 e impostarlo nell'hub di notifica.

    If you are not a Microsoft internal client, seguire il passaggio 1 al passaggio 9.
    If you are a Microsoft internal client, inviare un ticket qui e specificare l'ID bundle dell'app per ottenere un certificato .p12. Dopo aver rilasciato un certificato valido, eseguire il passaggio 9.

  • Passaggio 1: Accedere al portale per sviluppatori Apple. Passare a Certificates, IDs & Profiles > Identifiers > App IDs e fare clic sull'ID app associato all'app.

    Screenshot del passaggio 1 della configurazione del certificato APNS.
  • Passaggio 2: Nella schermata dell'ID app selezionare Capabilities > Push Notifications. Fare clic su Salva e rispondere "Conferma" nella finestra di dialogo Modifica funzionalità app visualizzata.

    Screenshot del passaggio 2-1 della configurazione del certificato APNS.Screenshot del passaggio 2-2 della configurazione del certificato APNS.
  • Passaggio 3: Nella stessa pagina fare clic su Capabilities > Push Notifications > Configure. Fare clic su uno dei pulsanti seguenti:

    • Development SSL Certificate > Create Certificate (per testare le notifiche push durante lo sviluppo di un'app iOS)
    • Produzione certificato > SSL Creazione certificato (per l'invio di notifiche push nell'ambiente di produzione)
    Screenshot del passaggio 3 della configurazione del certificato APNS.
  • Passaggio 4: Passare quindi alla pagina seguente. In questo caso, si caricherà una richiesta di firma del certificato (CSR). Seguire il passaggio successivo per creare una richiesta di firma del certificato.

    Screenshot del passaggio 4 della configurazione del certificato APNS.
  • Passaggio 5: In una nuova scheda del browser, seguire questa pagina della Guida per creare una richiesta di firma del certificato e salvare il file come "App name.cer".

    Screenshot del passaggio 5 - 1 della configurazione del certificato APNS.Screenshot del passaggio 5 - 2 della configurazione del certificato APNS.
  • Passaggio 6: Trascinare il file .cer nell'area "Scegli file". Quindi premere "continua" nell'angolo in alto a destra.

    Screenshot del passaggio 6 della configurazione del certificato APNS.
  • Passaggio 7: Fare clic su "Scarica" e salvare il file nel disco locale.

    Screenshot del passaggio 7 della configurazione del certificato APNS.
  • Passaggio 8: Aprire il file .cer scaricato; aprirà l'accesso keychain. Selezionare il certificato, fare clic con il pulsante destro del mouse ed esportare il certificato in formato .p12.

    Screenshot del passaggio 8 della configurazione del certificato APNS.
  • Passaggio 9: Passare all'hub di notifica, fare clic su "Apple (APNS)" in Impostazioni e selezionare "Certificato" in Modalità di autenticazione. Selezionare anche la modalità applicazione in base alle esigenze. Caricare quindi il file con estensione p12 appena creato.

    Screenshot del passaggio 9 della configurazione del certificato APNS.
  1. Configurazione di XCode
  • In XCode passare a Signing & Capabilities. Aggiungere una funzionalità selezionando "+ Funzionalità" e quindi selezionare "Notifiche push".

  • Aggiungere un'altra funzionalità selezionando "+ Funzionalità" e quindi "Modalità in background". Selezionare anche "Notifiche remote" in Modalità in background.

Screenshot di Abilita notifiche push e modalità in background in Xcode.
  • Impostare "Require Only App-Extension-Cassaforte API" (Richiedi solo l'API App-Extension-Cassaforte) come "No" per La destinazione pod - AzureCore

Implementazione

1 - Versione di base

Se si vuole implementare una versione di base di Notifica push, è necessario registrarsi per le notifiche remote con APNS (Apple Push Notification Service). Fare riferimento al codice di esempio per visualizzare l'implementazione correlata in AppDelegate.swift.

2 - Versione avanzata

Se vuoi implementare una versione avanzata di Notifica push, devi includere gli elementi seguenti nella tua app. Il motivo è che crittografiamo il contenuto dei clienti (ad esempio, il contenuto dei messaggi di chat, il nome visualizzato del mittente e così via) nel payload della notifica push e richiede una soluzione alternativa sul lato.

  • Elemento 1: Archiviazione di dati per le chiavi di crittografia

Prima di tutto, è necessario creare un archivio dati permanente nel dispositivo IOS. Questa risorsa di archiviazione dati deve essere in grado di condividere i dati tra l'app principale e le estensioni dell'app (fare riferimento all'elemento 2 per altre informazioni sull'estensione dell'app - estensione del servizio di notifica).

Nel codice di esempio si sceglierà "Gruppo di app" come risorsa di archiviazione dei dati. Di seguito sono riportati i passaggi consigliati per creare e usare "Gruppo di app":

Seguire la procedura descritta in Aggiungere una funzionalità per aggiungere la funzionalità Gruppi di app alle destinazioni dell'app, sia l'app principale che l'estensione del servizio di notifica (fare riferimento all'elemento 2 per informazioni su come creare un'estensione del servizio di notifica).

Seguire anche i passaggi descritti in questo documento ufficiale di Apple per configurare il gruppo di app. Assicurarsi che l'app principale e l'estensione dell'app abbiano lo stesso nome del contenitore.

  • Elemento 2: Estensione del servizio di notifica

In secondo luogo, è necessario implementare un'estensione del servizio di notifica in bundle con l'app principale. Viene usato per decrittografare il payload di notifica push durante la ricezione.

Vai a questo documento ufficiale di Apple. Seguire il passaggio "Aggiungere un'estensione dell'app di servizio al progetto" e "Implementare i metodi del gestore dell'estensione".

Si noti che nel passaggio "Implement your Extension's Handler Methods", Apple fornisce il codice di esempio per decrittografare i dati e seguiremo la struttura complessiva. Tuttavia, poiché si usa chat SDK per la decrittografia, è necessario sostituire la parte a partire dalla “// Try to decode the encrypted message data.” logica personalizzata. Fare riferimento al codice di esempio per visualizzare l'implementazione correlata in NotificationService.swift.

  • Articolo 3: Implementazione del protocollo PushNotificationKey Archiviazione

Terzo, PushNotificationKeyStorage è obbligatorio per la versione avanzata. L'utente dell'SDK può usare la classe predefinita AppGroupPushNotificationKeyStorage fornita da Chat SDK. Se non si usa App Group come risorsa di archiviazione delle chiavi o si vuole personalizzare i metodi di archiviazione delle chiavi, creare una classe personalizzata conforme al protocollo PushNotificationKey Archiviazione.

Per PushNotificationKey Archiviazione, definisce due metodi: onPersistKey(encryptionKey:expiryTime) e onRetrieveKeys() -> [String].

Il primo metodo viene usato per rendere persistente la chiave di crittografia nella risorsa di archiviazione del dispositivo IOS dell'utente. Chat SDK imposta 45 minuti come ora di scadenza della chiave di crittografia. Se si vuole rendere effettiva la notifica push per più di 45 minuti, è necessario pianificare la chiamata chatClient.startPushNotifications(deviceToken:) con frequenza relativamente frequente (ad esempio ogni 15 minuti) in modo che una nuova chiave di crittografia possa essere registrata prima della scadenza della chiave precedente.

Il secondo metodo viene usato per recuperare le chiavi valide archiviate in precedenza. Si ha la flessibilità necessaria per offrire la personalizzazione in base all'archiviazione dei dati (elemento 1) scelto.

Nell'estensione del protocollo, chat SDK fornisce l'implementazione del decryptPayload(notification:) -> PushNotificationEvent metodo che è possibile sfruttare. Fare riferimento al codice di esempio per visualizzare l'implementazione correlata in NotificationService.swift.

Test in corso

  1. Creare un thread di chat con l'utente A e l'utente B.

  2. Scaricare il repository di app di esempio e seguire i passaggi precedenti nella sezione prerequisiti e implementazione.

  3. Inserire l'ACESS_TOEKN> e l'ACS_RESOURCE_ENDPOINT> dell'utente <A in AppSettings.plist<.

  4. Impostare "Abilita Bitcode" su "No" per due destinazioni pod: AzureCommunicationChat e Trouter.

  5. Collegare il dispositivo IOS nel mac, eseguire il programma e fare clic su "Consenti" quando viene chiesto di autorizzare la notifica push nel dispositivo.

  6. Come utente B, inviare un messaggio di chat. L'utente A deve essere in grado di ricevere una notifica push nel dispositivo IOS.

Rinnovo automatico della registrazione

Per consentire a Microsoft di fornire un servizio di chat sicuro, la registrazione per le notifiche push nei dispositivi iOS rimane valida solo per 45 minuti. Per mantenere la funzionalità delle notifiche push, è necessario implementare il rinnovo della registrazione nell'app client.

Qui proponiamo due soluzioni allineate alle linee guida ufficiali di Apple. È importante notare che l'efficacia di una delle due soluzioni può essere influenzata da vari fattori, ad esempio lo stato della batteria del dispositivo, le condizioni di rete e le restrizioni specifiche di iOS che potrebbero influire sulla capacità dell'app di eseguire attività in background, come indicato in Apple WWDC Video e apple wiki ufficiale. È consigliabile implementare entrambe le soluzioni insieme per aumentarne l'efficacia.

Soluzione 1. Attività in background

Le attività in background offrono un modo per eseguire attività anche quando l'app non è in primo piano. Implementando un'attività in background, l'app può richiedere tempo aggiuntivo per completare un'attività specifica, ad esempio rinnovare la registrazione della notifica push. Ecco come sfruttare le attività in background per il rinnovo della registrazione:

Passaggio 1: Configurare l'aggiornamento automatico del token di accesso utente

Per garantire l'accesso ininterrotto ai servizi di chat, è necessario mantenere token di accesso utente validi. I token hanno in genere un periodo di validità predefinito (24 ore), dopo il quale scadono, richiedendo il rinnovo. L'implementazione di un meccanismo di aggiornamento automatico garantisce che il token sia sempre valido ogni volta che viene attivata l'applicazione di chat.
Chat SDK semplifica la gestione dei token automatizzando il processo di aggiornamento quando viene implementato un aggiornamento del token di accesso personalizzato. Completare i passaggi seguenti per configurare l'applicazione chat per supportare l'aggiornamento automatico dei token:

1.1 Stabilire un livello di servizio per il rilascio di token

Per garantire che l'applicazione di chat mantenga l'accesso utente continuo e sicuro, è necessario implementare un livello di servizio dedicato al rilascio di token. Un'opzione consiste nel sfruttare Funzioni di Azure a questo scopo.

Per creare la funzione di Azure, vedere Creare un servizio di accesso utente attendibile usando Funzioni di Azure. Questa guida descrive come configurare l'app per le funzioni e distribuire il codice necessario per rilasciare i token.

1.2 Implementare l'aggiornamento del token nell'applicazione Chat

Dopo aver configurato la funzione di Azure:
Ottenere l'URL dell'autorità di certificazione token dal portale di Azure, usato dall'applicazione chat per richiedere nuovi token.
Creare e integrare l'aggiornamento dei token all'interno dell'applicazione chat. Questo implementa un componente di aggiornamento del token che richiede token aggiornati e inizializza il client chat con questo componente per il rinnovo automatico dei token senza problemi.

Per informazioni di riferimento e implementazione semplici, il codice di esempio per l'aggiornamento del token e la relativa integrazione con il client chat è disponibile nel repository di app di esempio .

Passaggio 2. Seguire le istruzioni Apple per abilitare e pianificare le attività in background

Per attivare e pianificare le attività in background nell'applicazione, attenersi alle linee guida di Apple, come descritto nella documentazione relativa all'uso delle attività in background per aggiornare l'app. Questa guida fornisce passaggi completi per l'integrazione delle funzionalità delle attività in background nell'app iOS.

Per un'implementazione pratica, consultare il repository di app di esempio. Nell'esempio fornito viene usato BGProcessingTask configurato per avviare non prima di 1 minuto in futuro, dimostrando come recuperare in modo efficiente i dati in background.

Soluzione 2. Notifica remota

La notifica remota è il meccanismo per le applicazioni iOS per eseguire attività in background in risposta a trigger esterni. Possono essere usati per attività come l'aggiornamento delle registrazioni senza l'intervento dell'utente. Ecco come usare la notifica remota per eseguire un'attività in background:

1.Implementare un meccanismo di attivazione
Ad esempio, è possibile usare un'app per le funzioni di Azure come meccanismo di attivazione. Consente di eseguire il codice in risposta a vari trigger, incluse le richieste HTTP, rendendolo ideale per l'avvio di notifiche push invisibile all'utente. Ricordarsi di implementare il Registro di sistema del dispositivo alla fine in modo che l'app per le funzioni sappia dove recapitare le notifiche.

2.Configurare un hub di notifica di Azure
Hub di notifica di Azure offre un'infrastruttura di notifica push scalabile e facile da usare che può inviare notifiche a qualsiasi piattaforma (iOS, Android, Windows e così via) da qualsiasi back-end (cloud o locale). È essenziale per la gestione e il push delle notifiche ai dispositivi. È possibile riutilizzare lo stesso hub di notifica usato per le normali notifiche push. Per configurare una nuova, vedere la documentazione di Hub di notifica di Azure.

3.Configurare l'app per le funzioni di Azure per le notifiche regolari
Modificare l'app per le funzioni di Azure per inviare periodicamente notifiche remote tramite l'hub di notifica di Azure. Queste notifiche vengono inoltrate al servizio APN (Apple Push Notification Service) e indirizzate al dispositivo specificato. Per altre istruzioni, vedere Functions-bindings-notification-hubs.

4.Gestire le notifiche nell'app
Nell'app iOS implementare il metodo di istanza dell'applicazione per attivare un aggiornamento automatico della registrazione al momento della ricezione di una notifica invisibile all'utente.