Notifiche push
Abilita le notifiche push per le app iOS o Android che utilizzano Marketo Mobile SDK.
Configurare le notifiche push in iOS
Esistono tre passaggi per abilitare le notifiche push:
- Configura le notifiche push nel tuo account Apple Developer.
- Abilita le notifiche push in xCode.
- Abilita le notifiche push nell’app con Marketo SDK.
Configurare le notifiche push sull’account Apple Developer
- Accedi ad Apple Developer Centro membri.
- Seleziona “Certificati, identificatori e profili”.
- Seleziona la cartella “Certificati->Tutti” in “iOS, tvOS, watchOS”.
- Seleziona il segno “+” accanto ai certificati nell’angolo in alto a sinistra.
- Seleziona “Apple Push Notification service SSL (Sandbox & Production)”, quindi seleziona Continua.
- Selezionare l’identificatore dell’applicazione utilizzato per generare l’app.
- Crea e carica un CSR per generare il certificato push.
- Scarica il certificato e fai doppio clic su di esso per installarlo.
- Aprire “Accesso portachiavi”, fare clic con il pulsante destro del mouse sul certificato ed esportare entrambi gli elementi nel file
.p12.
- Carica questo file tramite Marketo Admin Console per configurare le notifiche.
- Aggiornare i profili di provisioning delle app.
Abilitare le notifiche push in xCode
Attiva la funzionalità di notifica push nel progetto xCode.
Abilitare le notifiche push in app con Marketo SDK
Aggiungere il codice seguente al file AppDelegate.m per inviare notifiche push ai dispositivi dei clienti.
Nota - Se si utilizza l’estensione Adobe Launch, utilizzare ALMarketo come nome della classe.
Aggiungi la seguente importazione a AppDelegate.h.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Aggiungi UNUserNotificationCenterDelegate a AppDelegate come mostrato di seguito.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Aggiungi il seguente codice per inizializzare il servizio di notifica push.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Chiama questo metodo per avviare la registrazione al servizio push di Apple. Se la registrazione ha esito positivo, l’app chiama il metodo application:didRegisterForRemoteNotificationsWithDeviceToken: dell’oggetto delegato dell’app e gli trasmette un token dispositivo.
Se la registrazione non riesce, l’app chiama il metodo application:didFailToRegisterForRemoteNotificationsWithError: del delegato dell’app.
Registra il token push con Marketo. Il token del dispositivo deve essere registrato per ricevere notifiche push da Marketo.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Puoi anche annullare la registrazione del token quando l’utente si disconnette.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Per registrare nuovamente il token push, estrai il codice dal passaggio 3 in un metodo AppDelegate. Chiamare tale metodo dal metodo di accesso ViewController.
Gestisci la notifica push dopo la registrazione del token dispositivo con Marketo.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Aggiungere il metodo seguente a AppDelegate.
Utilizza questo metodo per visualizzare un avviso, riprodurre un suono o aumentare il badge mentre l’app è in primo piano. Chiama il completionHandler appropriato in questo metodo.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Gestisce le notifiche push appena ricevute in AppDelegate.
Il delegato chiama questo metodo quando l’utente risponde a una notifica aprendo l’applicazione, ignorando la notifica o scegliendo un UNNotificationAction. Impostare il delegato prima che l’applicazione restituisca applicationDidFinishLaunching:.
| code language-objectivec |
|---|
|
| code language-swift |
|---|
|
Tracciare le notifiche push.
Se l’app è in background o inattiva, il dispositivo riceve una notifica push come mostrato di seguito. Marketo tiene traccia di quando l’utente seleziona la notifica.
Quando il dispositivo riceve una notifica push, la trasmette al callback application:didReceiveRemoteNotification: sul delegato dell’app.
Il seguente registro attività di Marketo mostra gli eventi dell’app e gli eventi di notifica push.
Configurare le notifiche push in Android
-
Aggiungi le seguenti autorizzazioni all’interno del tag dell’applicazione.
Apri
AndroidManifest.xmle aggiungi le seguenti autorizzazioni. L’app deve richiedere le autorizzazioni “INTERNET” e “ACCESS_NETWORK_STATE”. Ignora questo passaggio se l’app li richiede già.code language-xml <uses‐permission android:name="android.permission.INTERNET"/> <uses‐permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!‐‐Following permissions are required for push notification.‐‐> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <!‐‐Keeps the processor from sleeping when a message is received.‐‐> <uses-permission android:name="android.permission.WAKE_LOCK"/> <permission android:name="<PACKAGE_NAME>.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="<PACKAGE_NAME>.permission.C2D_MESSAGE" /> <!-- This app has permission to register and receive data message. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> -
Configurare FCM con HTTPv1.
- Abilitare MME FCM HTTPv1 in Gestione funzioni di Marketo.
- Carica il file JSON dell’account di servizio per l’app in MLM.
- Scarica il file Json dell’account di servizio da Firebase Console.
- Attendi un’ora dopo il caricamento del file Json dell’account di servizio in Marketo prima di inviare le notifiche push.
- Abilitare MME FCM HTTPv1 in Gestione funzioni di Marketo.
Dispositivi di prova Android
Aggiungi Attività Marketo al file manifesto all’interno del tag dell’applicazione.
<activity android:name="com.marketo.MarketoActivity" android:configChanges="orientation|screenSize">
<intent-filter android:label="MarketoActivity">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="add_test_device" android:scheme="mkto"/>
</intent-filter/>
</activity/>
Registra servizio push Marketo
-
Aggiungere il servizio di messaggistica Firebase a
AndroidManifest.xmlprima del tag applicazione di chiusura.code language-xml <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> -
Aggiungere i metodi SDK di Marketo a
MyFirebaseMessagingServicecome indicato di seguito.code language-java import com.marketo.Marketo; public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onNewToken(String s) { super.onNewToken(s); Marketo marketoSdk = Marketo.getInstance(this.getApplicationContext()); marketoSdk.setPushNotificaitonToken(s); // Add your code here... } @Override public void onMessageReceived(RemoteMessage remoteMessage) { Marketo marketoSdk = Marketo.getInstance(this.getApplicationContext()); marketoSdk.showPushNotificaiton(remoteMessage); // Add your code here... } }Nota - Se utilizzi l’estensione Adobe, aggiungi il seguente codice.
code language-java import com.marketo.Marketo; public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onNewToken(String token) { super.onNewToken(token); ALMarketo.setPushNotificationToken(token); // Add your code here... } @Override public void onMessageReceived(RemoteMessage remoteMessage) { ALMarketo.showPushNotification(remoteMessage); // Add your code here... } }
NOTA: FCM SDK aggiunge automaticamente le autorizzazioni richieste e la funzionalità del ricevitore. Se utilizzavi una versione precedente di SDK, rimuovi i seguenti elementi obsoleti, che potrebbero causare la duplicazione dei messaggi.
<receiver android:name="com.marketo.MarketoBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<!‐‐Receives the actual messages.‐‐>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<!‐‐Register to enable push notification‐‐>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<!‐‐‐Replace YOUR_PACKAGE_NAME with your own package name‐‐>
<category android:name="YOUR_PACKAGE_NAME"/>
</intent-filter>
</receiver>
<!‐‐Marketo service to handle push registration and notification‐‐>
<service android:name="com.marketo.MarketoIntentService"/>
-
Inizializza Marketo Push. Dopo aver salvato la configurazione, crea o apri la classe Application e aggiungi il seguente codice. Ottieni l’ID mittente da Firebase Console.
code language-java Marketo marketoSdk = Marketo.getInstance(getApplicationContext()); // Enable push notification here. The push notification channel name can by any string marketoSdk.initializeMarketoPush(SENDER_ID,"ChannelName");Se si utilizza l’estensione Adobe Launch, utilizzare il codice seguente.
code language-java // Enable push notification here. The push notification channel name can by any string ALMarketo.initializeMarketoPush(SENDER_ID,"ChannelName");Se non disponi di un SENDER_ID, abilita Google Cloud Messaging Service completando i passaggi descritti in questa esercitazione.
Puoi anche annullare la registrazione del token quando l’utente si disconnette.
code language-java marketoSdk.uninitializeMarketoPush();Se si utilizza l’estensione Adobe Launch, utilizzare il codice seguente.
code language-java ALMarketo.uninitializeMarketoPush();Nota: per registrare nuovamente il token push, estrai il codice dal passaggio 3 in un metodo AppDelegate. Chiamare tale metodo dal metodo di accesso ViewController.
-
Facoltativo: impostare un’icona di notifica. Chiama il metodo seguente per configurare un’icona di notifica personalizzata.
code language-java MarketoConfig.Notification config = new MarketoConfig.Notification(); // Optional bitmap for honeycomb and above config.setNotificationLargeIcon(bitmap); // Required icon Resource ID config.setNotificationSmallIcon(R.drawable.notification_small_icon); // Set the configuration //Use the static methods on ALMarketo class when using Adobe Extension Marketo.getInstance(context).setNotificationConfig(config); // Get the configuration set Marketo.getInstance(context).getNotificationConfig();
Risoluzione dei problemi
Se i messaggi push per dispositivi mobili non funzionano come previsto, controlla i problemi di configurazione comuni prima di esaminare i dettagli di implementazione.
Il messaggio push non viene visualizzato
Verifica se i messaggi push sono disabilitati sul dispositivo. Gli utenti mobili possono controllare se ricevono messaggi per ogni app e gli sviluppatori o gli addetti al marketing possono disabilitare i messaggi durante lo sviluppo.
Verifica se l’app è aperta e attiva. Quando l’app è attiva, i messaggi push mobili non vengono visualizzati sullo schermo. Vengono invece visualizzate nell’area “Notifiche locali” dell’app.
Visualizzare i registri attività in Marketo
Utilizza i registri attività di Marketo per verificare che sia stato inviato un messaggio.
Esamina i record di attività di una persona che avrebbe dovuto ricevere il messaggio. Se il messaggio è stato inviato, il registro attività contiene un record. Se non esiste alcun record, controlla il certificato iOS o la configurazione della chiave API Android in Marketo.
Certificato o chiave non valida
Verifica che sia caricato il certificato corretto per Sandbox o Produzione. Se necessario, riesporta i certificati iOS o le chiavi Android e ricaricali in Marketo.
Il file .p12 non dispone di un certificato o di una chiave (iOS)
Quando esporti il certificato, esporta sia la chiave che il certificato.
Provisioning dei profili non aggiornato (iOS)
Dopo aver aggiunto un dispositivo, aggiorna i profili di provisioning e genera nuovi certificati. Puntare il progetto Xcode ai profili e ai certificati corretti e importare i certificati in Marketo.
Impossibile caricare il certificato iOS (IOS)
Verifica che la password utilizzata per esportare il certificato non contenga spazi. Ad esempio, invece di:
Hello World 123
utilizza questo:
HelloWorld123
Risoluzione dei problemi dei certificati iOS
Per le applicazioni sandbox, utilizza un certificato “sviluppatore” o “universale”. Per le applicazioni di produzione, carica un certificato di “distribuzione” o “universale” valido.
Notifica di mancato recapito push/Token non valido
Un token di registrazione può diventare non valido nei seguenti scenari:
- Se l’app client si annulla dalla registrazione a GCM.
- Se la registrazione dell’app client viene annullata automaticamente, ciò può accadere se l’utente disinstalla l’applicazione. Ad esempio, in iOS, se il servizio di feedback APNS ha segnalato il token APNS come non valido.
- Se il token di registrazione scade. Ad esempio, Google potrebbe decidere di aggiornare i token di registrazione o il token APNS è scaduto per i dispositivi iOS.
- Se l’app client viene aggiornata ma la nuova versione non è configurata per la ricezione di messaggi.