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.
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 unpricing 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 -
Andare a '
Identifiers > Add identifier button
.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 -
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 -
Selezionate la casella di controllo "
Push Notifications
dalle funzionalità e fate clic su "Continue
.{: caption="pushAttiva le " caption-side="bottom"} push
-
Passare alle impostazioni e fare clic su "
Register > Done
.
Il tuo ID applicazione è ora registrato.

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 -
Nel '
Identifiers area
, selezionare il 'App ID.Identifiers tab -
Selezionare la casella di controllo "
Push Notifications
OPPURE selezionare l'opzione "Edit
.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 -
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…
.di un nuovo -
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
.{: caption="
-
Nell'opzione di menu
Save As
, denominare il file.certSigningRequest
, selezionare l'ubicazione in cui salvare il file e fare clic suSave
.{: caption="CSRSalvare il " caption-side="bottom"} CSR
-
Fare clic su '
Done
. Ora hai una CSR.caption-side=bottom" -
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
.{: caption="CSRCaricare il " caption-side="bottom"} CSR
-
Fare clic su '
Download
. Il fileaps_development.cer
è stato scaricato.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
).{: caption="
-
Nel campo "
Save As
, assegnare al certificato un nome significativo. Ad esempio, sandbox-apns.p12 o production-apns.p12, quindi fare clic suSave
.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 -
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 -
Andare alla scheda
Keys
.Keys tab -
Immettere
Key Name
e abilitare APNS, fare clic sucontinue
.P8 token details -
Fare clic su '
Register
.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 tipoiOS 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 selezionaEnvironment
.- se il tipo di certificato è
p8
, caricare il file .p8 e fornireKeyID
,TeamID
eBundleID
. - se il tipo di certificato è
p12
, caricare il certificato p12 e fornire il certificatopassword
.
- se il tipo di certificato è
- 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 inDestination
e fare clic suAdd
.
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.
-
Aggiungere le dichiarazioni
import
nel proprio file.swift
.import ENPushDestination
-
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 valoreuserId
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
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
- 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)
-
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.

