IBM Cloud Docs
Creare e inviare notifiche push a dispositivi mobili iOS utilizzando Event Notifications

Creare e inviare notifiche push a dispositivi mobili iOS utilizzando Event Notifications

Crea un servizio Event Notifications, aggiungi una destinazione di push per APNS (Apple Push Notification service) e invia messaggi ai dispositivi iOS.

Che cos'è Event Notifications?

Event Notifications è un servizio di routing delle notifiche di eventi che notifica gli eventi critici che si verificano nell'account IBM Cloud o attiva azioni automatiche tramite webhook. Puoi filtrare e instradare le notifiche degli eventi da IBM Cloud servizi come Availability Monitoring, a email, SMS, notifiche di push (FCM o APNs) e webhook.

In che modo i client utilizzano le notifiche push iOS ?

Il seguente diagramma mostra come i client utilizzano iOS Push Notifications.

Come i clienti utilizzano le
i clienti utilizzano le notifiche

Obiettivi

Questa esercitazione ti mostra come inviare le notifiche di push come segue:

  • Creare un'applicazione mobile con Event Notifications.
  • Ottenere le credenziali APNS.
  • Scaricate il codice e completate la configurazione delle notifiche.
  • Configurare e inviare iOS Push Notifications a un dispositivo mobile.

Prima di iniziare

È necessario disporre dei seguenti prerequisiti:

  • Un IBM Cloud. Se non ne hai uno, crea un account IBM Cloud.
  • Un'istanza Event Notifications.
  • Una chiave API IAM per consentire all'SDK di accedere al tuo account. Creane uno qui.
  • Xcode 9.3+
  • Swift 4.2+
  • iOS 10.0+

Creare un'istanza del servizio Event Notifications

  • Accedi al tuo accountIBM Cloud.
  • Nel catalogo IBM Cloud, cerca Event Notifications > Event Notifications.
  • Selezionare un Region dall'elenco di regioni supportate e selezionare un pricing plan.
  • Fornire un 'Service name.
  • Selezionare un 'resource group.
  • Accettare i termini e gli accordi di licenza facendo clic sulla check box.
  • Fare clic su 'Create.

Ottieni le credenziali APNS

Per i dispositivi e le applicazioni iOS, APNs (Apple Push Notification Service) consente agli sviluppatori di applicazioni di inviare notifiche remote dall'istanza del servizio Event Notifications su IBM Cloud (il provider) a dispositivi e applicazioni iOS: I messaggi sono inviati a un'applicazione di destinazione sul dispositivo.

Devi ottenere e configurare le tue credenziali APNs. I certificati APNs sono gestiti in modo sicuro dal servizio Event Notifications e utilizzati per stabilire una connessione al server APNs come un provider.

Registrazione di un ID applicazione

L'ID applicazione (l'identificativo del bundle) è un identificativo univoco che identifica una specifica applicazione. Ogni applicazione richiede un ID applicazione. I servizi come Push Notifications Service sono configurati sull'ID applicazione.

  • Vai a Apple developer portal e seleziona Certificates, Identifiers & Profiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Andare a 'Identifiers > Add identifier button.

    Pulsante
    identificativo*
    identificativo*

  • Fare clic sul pulsante Aggiungi nuovo Identifier.

    Aggiungi nuovo identificativo*Pulsante Aggiungi nuovo

  • Selezionare l'opzione ID app.

    {: caption="ID appOpzione ID " caption-side="bottom"} ID app

  • Selezionare un tipo e fare clic su 'Continue.

    App ID type
    App ID type

  • Fornisci una stringa per il prefisso dell'ID applicazione. Fornire il nome dell'applicazione nel campo Description. Ad esempio, l'applicazione Event Notifications iOS.

  • Per il 'Bundle ID, scegliere Explicit e fornire un valore di ID bundle. Ti consigliamo di fornire una stringa di stile nome dominio inversa. Ad esempio, com.ibm.cloud.en.app.

    Creare nuovi App ID
    Creare nuovi App ID

  • Selezionate la casella di controllo " Push Notifications dalle funzionalità e fate clic su " Continue.

    Attiva le{: caption="pushAttiva le " caption-side="bottom"} push

  • Passare alle impostazioni e fare clic su " Register > Done.

Il tuo ID applicazione è ora registrato.

App ID
Newly created App ID

Crea un certificato SSL di APNs di sviluppo e distribuzione

Prima di ottenere un certificato APNs, devi generare una CSR (certificate signing request) e inoltrarla ad Apple, l'autorità di certificazione (CA). La CSR contiene informazioni che identificano la tua società e la tua chiave pubblica e privata che usi per firmare le tue notifiche push Apple. Genera quindi il certificato SSL nel portale per sviluppatori iOS. Il certificato, insieme alla sua chiave pubblica e a quella privata, viene archiviato in Keychain Access.

Puoi utilizzare le APNs in due modi:

  • Modalità sandbox per lo sviluppo e il test.
  • Modalità di produzione quando si distribuiscono le applicazioni tramite l'App Store (o altri meccanismi di distribuzione aziendali).

Devi ottenere dei certificati separati per i tuoi ambienti di sviluppo e distribuzione. I certificati sono associati a un ID applicazione per l'applicazione destinataria delle notifiche remote. Per la produzione, è possibile creare fino a due certificati. IBM Cloud utilizza i certificati per stabilire una connessione SSL con APNS.

Creare un certificato p12 APNs

  • Vai a Apple Developer Portal e seleziona Certificati, Identificativi e Profili.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Nel 'Identifiers area, selezionare il 'App ID.

    Identifiers tab
    Identifiers tab

  • Selezionare la casella di controllo " Push Notifications OPPURE selezionare l'opzione " Edit.

    Notifiche push
    Notifiche push

    • Nel riquadro Sviluppo certificato SSL, fare clic su Crea certificato...
    • Nel riquadro Certificato SSL di produzione, fare clic su Crea certificato...

    Certificate type
    Certificate type

  • Utilizzare l'applicazione Accesso Portachiavi sul Mac per creare una richiesta di firma del certificato (CSR).

  • Dal menu, selezionare 'Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority….

    Richiesta di un nuovo
    di un nuovo
    di certificato*

  • In Informazioni sul certificato, inserire l'indirizzo e-mail associato all'account App Developer e un nome comune. Fornisci un nome significativo che ti aiuta a identificare se si tratta di un certificato per lo sviluppo (sandbox) o la distribuzione (produzione); ad esempio, sandbox-apns-certificate o production-apns-certificate.

  • Selezionate 'Saved to disk per scaricare il file '.certSigningRequest sul vostro Mac, quindi fate clic su 'Continue.

    ![](images/en-apns-p12-certificate-details.png "del certificato*Dettagli del " caption-side="bottom"} del "){: caption="

  • Nell'opzione di menu Save As, denominare il file .certSigningRequest, selezionare l'ubicazione in cui salvare il file e fare clic su Save.

    Salvare il file{: caption="CSRSalvare il " caption-side="bottom"} CSR

  • Fare clic su 'Done. Ora hai una CSR.

    caption-side=bottom"
    CSR

  • Tornate al portale degli sviluppatori Apple, per l'opzione Carica file CSR, fate clic su Scegli file e selezionate il file 'CertificateSigningRequest.certSigningRequest. Fare clic su 'Continue.

    Caricare il{: caption="CSRCaricare il " caption-side="bottom"} CSR

  • Fare clic su 'Download. Il file aps_development.cer è stato scaricato.

    Scarica il
    il

  • Individuare il certificato appena installato. Fai doppio clic sul certificato per installarlo in Keychain Access.

  • Sul tuo Mac, vai a Keychain Access > My Certificates.

  • Selezionare il certificato e la chiave privata, quindi selezionare " Export per convertire il certificato nel formato di scambio di informazioni personali (formato .p12 ).

    ![Certificato di](images/en-apns-p12-export-cer.png "di esportazione*Certificato di " caption-side="bottom"} di "){: caption="

  • Nel campo " Save As, assegnare al certificato un nome significativo. Ad esempio, sandbox-apns.p12 o production-apns.p12, quindi fare clic su Save.

    Salvare il
    il

  • Nel campo 'Enter a password, inserire una password per proteggere gli elementi esportati, quindi fare clic su 'OK. Puoi utilizzare questa password per configurare le tue impostazioni APNS sulla console del servizio Event Notifications.

    Proteggere il
    Proteggere il

  • L'applicazione Key Access richiede di esportare la chiave dalla schermata Portachiavi. Immettere la password amministrativa del Mac per consentire al sistema di esportare questi elementi, quindi selezionare l'opzione Consenti sempre. Viene generato un certificato .p12 nella posizione selezionata.

Creare un token p8 APNs

  • Vai a Apple developer portal e seleziona Certificates, Identifiers & Profiles.

    Certificates, Identifiers & Profiles
    Certificates, Identifiers & Profiles

  • Andare alla scheda Keys.

    Keys tab
    Keys tab

  • Immettere Key Name e abilitare APNS, fare clic su continue.

    P8 token details
    P8 token details

  • Fare clic su 'Register.

    Registra p8
    p8

  • Assicurarsi di scaricare le chiavi nella nuova pagina di reindirizzamento dopo la registrazione, poiché si tratta di un'attività unica.

KeyID è visibile come parte del file e visualizzato nella IU, questo KeyID viene utilizzato per registrare il certificato APNS. TeamID viene fornito da apple per l'account sviluppatore, può essere visualizzato accanto a Nome team. TeamID viene utilizzato per la registrazione del certificato APNS. BundleID può essere registrato come certificato P12.

Aggiungi un'origine API generica

Effettuare le seguenti operazioni:

  • Vai alla sezione Sources del dashboard Event Notifications.
  • Fare clic su Add e selezionare un'origine API.
  • Immettere un nome e una descrizione facoltativa e fare clic su Add.

Creare una destinazione Event Notifications

Fai clic Destinations nella console Event Notifications e aggiungi i seguenti dettagli di destinazione:

  • Name: aggiungere un nome per la destinazione.
  • Description: aggiungere una descrizione facoltativa per la destinazione.
  • Type: selezionare il tipo iOS Push Notifications dall'elenco a discesa.
  • Selezionare un piano di destinazione: destinazione di pre - produzione o destinazione di produzione.
    • Pre-production destination- seleziona questa destinazione come destinazione push a basso costo, per i tuoi ambienti di sviluppo e test.
    • Production destination- utilizzare la funzionalità completa di questa destinazione. Dispositivi illimitati e messaggi in uscita consentiti.
  • Aggiorna le credenziali di push iOS con i dettagli basati su Authentication Type e seleziona Environment.
    • se il tipo di certificato è p8, caricare il file .p8 e fornire KeyID, TeamID e BundleID.
    • se il tipo di certificato è p12, caricare il certificato p12 e fornire il certificato password.
  • Fare clic su 'Add.

Crea un argomento Event Notifications

Selezionare Topics nella console Event Notifications e fare clic su Create. Immettere i seguenti dettagli argomento:

  • Name: immettere un nome per l'argomento.
  • Description: aggiungere una descrizione facoltativa per l'argomento.
  • Source: selezionare un'origine dall'elenco a discesa.
  • Event type: selezionare il tipo di evento dall'elenco a discesa.
  • Event sub type selezionare il tipo secondario di evento dall'elenco a discesa del tipo secondario di evento.
  • Severity: selezionare la severità dall'elenco a discesa della severità.
  • Advanced conditions: scrivi le tue proprie condizioni personalizzate, che devono seguire le specifiche jsonpath.

Crea una sottoscrizione Event Notifications

Fai clic su Subscriptions nella console Event Notifications. Immettere i dettagli della sottoscrizione riportati di seguito:

  • Click Crea per visualizzare la procedura guidata di sottoscrizione.
  • Completare le seguenti informazioni di sottoscrizione:
    • Subscription name: nome della sottoscrizione.
    • Subscription description: aggiungere una descrizione facoltativa.
  • Nella sezione Subscribe to a topic, selezionare un argomento dall'elenco a discesa e selezionare una destinazione dall'elenco a discesa di destinazione.
  • Destination type: selezionare il tipo in Destination e fare clic su Add.

Configura l'SDK IOS Event Notifications

L'SDK iOS consente alle app iOS di ricevere notifiche di push. Completa la seguente procedura per installare l'SDK Event Notifications iOS, inizializza l'SDK e registrati per le notifiche per la tua iOS app.

Installazione

La versione corrente di questo SDK è: 0.0.1

Per utilizzare l'SDK di destinazione Event Notifications iOS, definisci una dipendenza che contenga le coordinate della risorsa utente (ID gruppo, ID risorsa utente e versione) per il servizio, come segue:

CocoaPods

use_frameworks!

target 'MyApp' do
   pod 'ENPushDestination', '~> 0.0.1'
end

Carthage

Per installare ENPushDestination utilizzando Carthage, aggiungi quanto segue al tuo Cartfile.

github "IBM/event-notifications-destination-ios-sdk" ~> 0.0.1

Quindi, esegui questo comando per creare le dipendenze e i framework:

carthage update --platform iOS

gestore pacchetti swift

Aggiungere quanto segue al file Package.swift per identificare ENPushDestination come dipendenza. Il gestore pacchetti clona ENPushDestination quando crei il progetto con la build swift.

dependencies: [
   .package(url: "https://github.com/IBM/event-notifications-destination-ios-sdk", from: "0.0.1")
]

Installazione - Inizializza SDK

Completa la seguente procedura per consentire alle applicazioni iOS di ricevere notifiche.

  1. Aggiungere le dichiarazioni import nel proprio file .swift.

    import ENPushDestination
    
  2. Inizializzare l'SDK ENPushDestination

    let instanceGUID = "<instance_guid>>";
    let destinationID = "<instance_destination_id>";
    let apiKey = "<instance_apikey>";
    
    let enPush = ENPush.sharedInstance
    enPush.setCloudRegion(region: .usSouth)
    enPush.initialize(instanceGUID, destinationID, apiKey)
    
    • region: regione dell'istanza Event Notifications. Ad esempio, Region.usSouth.

Registra per notifiche

Utilizza la API ENPush.registerDevice() per registrare il dispositivo con una destinazione iOS nel servizio Event Notifications.

Sono supportate le seguenti opzioni:

  • Registrazione senza userId:

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>") { response, statusCode, error in
       print(response?.id ?? "")
    }
    
  • Registrazione con UserId. Per la notifica basata su userId, il metodo di registrazione accetta un altro parametro - userId.

    /**Register iOS devices*/
    enPush.registerWithDeviceToken(deviceToken: "<apns-device-token>", withUserId: "userId") { response, statusCode, error in
    
       print(response?.id ?? "")
    
    }
    

    Il userId viene utilizzato per passare il valore userId univoco per la registrazione per Event Notifications.

Annullamento della registrazione dalle notifiche

Utilizza i seguenti frammenti di codice per annullare la registrazione da Event Notifications.

enPush.unregisterDevice { response, statusCode, error in
   /**.....*/
}

Per annullare la registrazione dalla registrazione basata su UserId, è necessario chiamare il metodo di registrazione. Vedi Register without userId option in Register for notifications.

Sottoscrizioni di tag di destinazione Event Notifications

Sottoscrivi tag

L'API subscribe sottoscrive il dispositivo per una determinata tag. Dopo aver sottoscritto un particolare tag, il dispositivo può ricevere le notifiche inviate per quel tag.

Aggiungi il seguente frammento di codice alla tua applicazione mobile iOS per sottoscrivere un elenco di tag.

// Subscribe to the given tag
enPush.subscribeToTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
});

Richiama tag sottoscritte

L'API retrieveSubscriptionsWithCompletionHandler restituisce l'elenco di tag a cui è sottoscritto il dispositivo. Utilizza i seguenti frammenti di codice nell'applicazione mobile per ottenere un elenco di sottoscrizioni.

// Get a list of tags that to which the device is subscribed.
enPush.retrieveSubscriptionsWithCompletionHandler { response, statusCode, error in
   /**.....*/
}

Annulla sottoscrizione da tag

L'API unsubscribeFromTags rimuove la sottoscrizione del dispositivo dalle tag di elenco. Utilizzare i seguenti frammenti di codice per consentire ai dispositivi di annullare la sottoscrizione da una tag.

// unsubscibe from the given tag ,that to which the device is subscribed.
enPush.unsubscribeFromTags(tagName: "<tag_name>") { response, statusCode, error in
   /**.....*/
}

Ricezione di notifiche di push su dispositivi iOS

Per ricevere le notifiche push sui dispositivi iOS, aggiungete il seguente metodo Swift al 'appDelegate.swift della vostra applicazione:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

   //UserInfo dictionary will contain data sent from the server
}

Opzioni di notifica

Sono supportate le seguenti opzioni di notifica.

Notifiche interattive

  1. Per abilitare le notifiche di push interattive, i parametri dell'azione di notifica devono essere passati come parte dell'oggetto di notifica. Il seguente è un codice di esempio per abilitare le notifiche interattive:
let actionOne = ENPushNotificationAction(identifierName: "FIRST", buttonTitle: "Accept", isAuthenticationRequired: false, defineActivationMode: .foreground)

let actionTwo = ENPushNotificationAction(identifierName: "SECOND", buttonTitle: "Reject", isAuthenticationRequired: false, defineActivationMode: .destructive)

let category = ENPushNotificationActionCategory(identifierName: "category", buttonActions: [actionOne, actionTwo])

let notificationOptions = ENPushClientOptions()
notificationOptions.setInteractiveNotificationCategories(categoryName: [category])
enPush.initialize(instanceGUID, destinationID, apiKey, notificationOptions)
  1. Implementare il metodo callback su AppDelegate.swift:

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
       switch response.actionIdentifier {
          case "Accept":
          print("Clicked Accept")
          case "Reject":
          print("Clicked Reject")
          default:
       }
       completionHandler()
    }
    

Questo metodo di callback viene invocato quando l'utente fa clic sul pulsante di azione. L'implementazione di questo metodo deve eseguire le attività associate all'identificatore specificato ed eseguire il blocco nel parametro completionHandler.

Aggiunta di DeviceId personalizzato per la registrazione

Per inviare DeviceId utilizzare il metodo setDeviceId della classe ENPushClientOptions.

let options = ENPushClientOptions();
options.setDeviceId(deviceId: "YOUR_DEVICE_ID");

Ricorda di conservare il DeviceId unique personalizzato per ogni dispositivo.

Abilitazione delle notifiche Rich Media

Le notifiche rich media sono supportate su iOS 10 o versioni successive. Per ricevere notifiche rich media, implementare UNNotificationServiceExtension. L'estensione intercetterà e gestirà la notifica rich media.

Nel metodo didReceive() dell'estensione del servizio, aggiungere il seguente codice per recuperare il contenuto della notifica push.

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
   self.contentHandler = contentHandler
   bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
   ENPushRichPushNotificationOptions.didReceive(request, withContentHandler: contentHandler)
}

Invia notifiche al dispositivo di iOS

Utilizza l'API Send Notification per inviare la notifica push per il dispositivo iOS. Puoi utilizzare l'SDK admin Node o Go invece di richiamare direttamente l'API.

Invio di
di

Ricevere le
le