7

Il mio obiettivo obiettivo è inviare notifiche push a un'applicazione iOS tramite SNS. Sto passando questo tutorial: http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html.Bug in Amazon SNS Esercitazione notifica push Apple (Eccezione puntatore nullo)

Ho aggiunto le mie credenziali AWS e aggiunto nelle credenziali apns corrispondenti per la chiave di sviluppo, certificato, chiave privata e un token di push corrente per la mia app. Quando eseguo il tutorial ottengo:

Exception in thread "main" java.lang.NullPointerException 
at com.amazonaws.sns.samples.tools.AmazonSNSClientWrapper.getValidNotificationAttributes(AmazonSNSClientWrapper.java:162) 
at com.amazonaws.sns.samples.tools.AmazonSNSClientWrapper.publish(AmazonSNSClientWrapper.java:80) 
at com.amazonaws.sns.samples.tools.AmazonSNSClientWrapper.demoNotification(AmazonSNSClientWrapper.java:131) 
at com.amazonaws.sns.samples.mobilepush.SNSMobilePush.demoAppleSandboxAppNotification(SNSMobilePush.java:438) 
at com.amazonaws.sns.samples.mobilepush.SNSMobilePush.main(SNSMobilePush.java:68) 

In cima SNSMobilePush.java C'è una mappa chiamata attributesMap. Originariamente ha valori impostati su null per le chiavi Platform.APNS e Platform.APNS_SANDBOX. Questi valori non vengono mai modificati ovunque durante il codice e sono responsabili della causa dell'eccezione del puntatore nullo. Il tutorial non indica di modificare questi valori.

Non ho fatto nulla al di sopra o al di là delle istruzioni del tutorial.

So che le mie credenziali sono corrette perché ho inviato un messaggio alla mia app iOS utilizzando le stesse credenziali tramite Amazon Management Console.

chiunque può indicati

  • se il tutorial è incompleta
  • quali sono i valori associati alle Platform.APNS_SANDBOX dovrebbero essere al fine di ottenere questo lavoro
  • alcun suggerimento per aiutarmi a risolvere i problemi di questo

aggiornamento Ho aggiunto un controllo null a getValidNotificationAttributes() e ora sono in grado di inviare notifiche push usando sns e apns usando questo tutorial.

+1

Quindi, parte del problema è che il loro metodo "getValidNotificationAttributes" in AmazonSNSClientWrapper.java non esegue un controllo Null all'avvio. – CasualT

+0

ciao, ho certificato.pem e chiave privata per l'invio di notifiche apns alla mia applicazione. dovrebbero essere verificati prima di poter essere utilizzati perché non sono in grado di inviare notifiche. Ho seguito il tutorial di aws. Puoi aiutarmi. –

risposta

3

Sono riuscito a far funzionare il tutorial aggiungendo un check-in null a getValidNotificationAttributes() nella classe AmazonSNSClientWrapper. Sono convinto che questo è un difetto nel codice che viene esposto quando si utilizza Platform APNS_SANDBOX e APNS (e probabilmente anche ADM e GCM).

public static Map<String, MessageAttributeValue> getValidNotificationAttributes(
Map<String, MessageAttributeValue> notificationAttributes) { 
if (notificationAttributes != null) { 

Map<String, MessageAttributeValue> validAttributes = new HashMap<String, MessageAttributeValue>(); 
for (Map.Entry<String, MessageAttributeValue> entry : notificationAttributes.entrySet()) { 
if (!StringUtils.isBlank(entry.getValue().getStringValue())) { 
validAttributes.put(entry.getKey(), entry.getValue()); 
} 
} 
return validAttributes; 
} else { 
return new HashMap<String, MessageAttributeValue>(); 
} 
} 

Spero che questo aiuti chiunque altro stia lavorando attraverso questo tutorial online.

+0

Hai inviato notifiche all'app Ios tramite il codice di programmazione? –

Problemi correlati