FCM+错误;Android应用程序上的SNS令牌

FCM+错误;Android应用程序上的SNS令牌,android,amazon-web-services,firebase-cloud-messaging,amazon-sns,Android,Amazon Web Services,Firebase Cloud Messaging,Amazon Sns,我遵循了AWS Mobile Hub推送集成指南,并在我的应用程序中集成了AWS SNS推送服务。打开应用程序时,我会收到以下错误日志: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.intap.appme, PID: 23576

我遵循了AWS Mobile Hub推送集成指南,并在我的应用程序中集成了AWS SNS推送服务。打开应用程序时,我会收到以下错误日志:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                             Process: com.intap.appme, PID: 23576
                                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{com.intap.name/com.intap.name.MainActivity}: com.amazonaws.AmazonServiceException: 1 validation error detected: Value null at 'token' failed to satisfy constraint: Member must not be null (Service: AmazonSNS; Status Code: 400; Error Code: ValidationError; Request ID: 21d6a3b2-0459-513a-bf7a-f3c1d99d41ac)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
                                                                 at android.app.ActivityThread.access$1100(ActivityThread.java:221)
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                 at android.os.Looper.loop(Looper.java:158)
                                                                 at android.app.ActivityThread.main(ActivityThread.java:7224)
                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                              Caused by: com.amazonaws.AmazonServiceException: 1 validation error detected: Value null at 'token' failed to satisfy constraint: Member must not be null (Service: AmazonSNS; Status Code: 400; Error Code: ValidationError; Request ID: 21d6a3b2-0459-513a-bf7a-f3c1d99d41ac)
                                                                 at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:712)
                                                                 at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:388)
                                                                 at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:199)
                                                                 at com.amazonaws.services.sns.AmazonSNSClient.invoke(AmazonSNSClient.java:2262)
                                                                 at com.amazonaws.services.sns.AmazonSNSClient.createPlatformEndpoint(AmazonSNSClient.java:447)
                                                                 at com.amazonaws.mobile.push.PushManager.subscribeToTopic(PushManager.java:264)
                                                                 at com.intap.name.MainActivity.onCreate(MainActivity.java:50)
                                                                 at android.app.Activity.performCreate(Activity.java:6876)
                                                                 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
                                                                 at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
                                                                 at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                 at android.os.Looper.loop(Looper.java:158) 
                                                                 at android.app.ActivityThread.main(ActivityThread.java:7224) 
                                                                 at java.lang.reflect.Method.invoke(Native Method) 
                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
应用程序中提到的代码行包括以下代码行:
java:264(整个方法)

MainActivity.java:50

pushManager.subscribeToTopic(pushManager.getDefaultTopic());
当我试图通过在线Firebase控制台发送推送消息时,设备会收到推送消息,当我点击消息打开应用程序时,它会不断崩溃

当我试图通过在线SNS控制台发送推送消息时,我没有收到任何推送通知,这意味着错误在SNS注册中


我怎样才能解决它?我对此一无所知……

该令牌从Google的SDK返回为空。原因在于这一行:

endpointRequest.setToken(InstanceID.getInstance(context)
    .getToken(sharedPreferences.getString("deviceToken", ""),
       GoogleCloudMessaging.INSTANCE_ID_SCOPE));
getToken()的第一个参数应该是GCM发送者ID,而不是从SharedReferences获取的设备令牌。按如下方式更改代码以传递发件人ID,应该可以解决此问题:

endpointRequest.setToken(InstanceID.getInstance(context)
    .getToken(gcmSenderID, GoogleCloudMessaging.INSTANCE_ID_SCOPE));

此外,您粘贴的代码似乎是从一个移动集线器项目修改而来的,该项目是在相当遥远的过去生成的。从那时起,PushManager有了改进。MobileHub生成的最新版本将使用GCMTokenHelper类,这在粘贴的代码中不存在。请尝试再次使用Mobile Hub生成示例应用程序或SDK,并更新您的应用程序以使用最近生成的代码,如果您仍遇到问题,请返回报告。

标记从Google的SDK返回为空。原因在于这一行:

endpointRequest.setToken(InstanceID.getInstance(context)
    .getToken(sharedPreferences.getString("deviceToken", ""),
       GoogleCloudMessaging.INSTANCE_ID_SCOPE));
getToken()的第一个参数应该是GCM发送者ID,而不是从SharedReferences获取的设备令牌。按如下方式更改代码以传递发件人ID,应该可以解决此问题:

endpointRequest.setToken(InstanceID.getInstance(context)
    .getToken(gcmSenderID, GoogleCloudMessaging.INSTANCE_ID_SCOPE));
此外,您粘贴的代码似乎是从一个移动集线器项目修改而来的,该项目是在相当遥远的过去生成的。从那时起,PushManager有了改进。MobileHub生成的最新版本将使用GCMTokenHelper类,这在粘贴的代码中不存在。请尝试再次使用Mobile Hub生成示例应用程序或SDK,并更新应用程序以使用最近生成的代码,如果仍遇到问题,请报告