Amazon SNS Apple推送通知教程中的错误(空指针异常)
我的目标最终目标是通过SNS向iOS应用发送推送通知。 我正在浏览本教程:http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html。
我已经添加了我的AWS凭证,并添加了我的应用程序的开发密钥,证书,私钥和当前推送令牌的相应apns凭证。 当我运行教程时,我得到:
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)
在SNSMobilePush.java的顶部有一个叫做attributesMap的Map。 它最初的值为Platform.APNS和Platform.APNS_SANDBOX关键字设置为null。 在代码期间,这些值永远不会改变,并且负责引起空指针异常。 本教程不表示要更改这些值。
我没有做任何超出或超出教程的指示。
我知道我的凭据是正确的,因为我通过亚马逊管理控制台使用这些相同凭据向我的iOS应用发送了一条消息。
谁能指出
更新我添加了一个空检查getValidNotificationAttributes(),现在我可以使用本教程使用sns和apns发送推送通知。
我能够通过向AmazonSNSClientWrapper类中的getValidNotificationAttributes()添加null检入来获得教程的工作。 我确信这是使用Platform APNS_SANDBOX和APNS(也可能是ADM和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>();
}
}
我希望这可以帮助任何正在通过此在线教程工作的人。
链接地址: http://www.djcxy.com/p/21911.html上一篇: Bug in the Amazon SNS Apple Push Notification Tutorial (Null Pointer Exception)
下一篇: Rspec/Rails: uninitialized constant ActiveSupport::Autoload (NameError)