2016-10-01 10 views
0

У меня встроенный AWS SNS API в приложении для Android. Когда я открываю приложение на устройстве, я получаю этот журнал ошибок:Недействительный параметр в приложении для Android AWS SNS

E/AndroidRuntime: FATAL EXCEPTION: main 
                  Process: com.intap.appme, PID: 20780 
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.intap.appme/com.intap.appme.MainActivity}: com.amazonaws.services.sns.model.InvalidParameterException: Invalid parameter: Endpoint (Service: AmazonSNS; Status Code: 400; Error Code: InvalidParameter; Request ID: e8589d7c-dec8-55e1-807f-cd16c8794be8) 
                   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.services.sns.model.InvalidParameterException: Invalid parameter: Endpoint (Service: AmazonSNS; Status Code: 400; Error Code: InvalidParameter; Request ID: e8589d7c-dec8-55e1-807f-cd16c8794be8) 
                   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.subscribe(AmazonSNSClient.java:1256) 
                   at com.amazonaws.mobile.push.PushManager.subscribeToTopic(PushManager.java:251) 
                   at com.intap.appme.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)  

строк кода в журнале являются те строки: PushManager.java:251 (Весь метод)

public void subscribeToTopic(final SnsTopic topic) { 
    final SubscribeRequest request = new SubscribeRequest(); 
    request.setEndpoint(endpointArn); 
    request.setTopicArn(topic.getTopicArn()); 
    request.setProtocol(SNS_PROTOCOL_APPLICATION); 
    /* Line 251 -> */ final SubscribeResult result = sns.subscribe(request); 

    // update topic and save subscription in shared preferences 
    final String subscriptionArn = result.getSubscriptionArn(); 
    topic.setSubscriptionArn(subscriptionArn); 
    sharedPreferences.edit().putString(topic.getTopicArn(), subscriptionArn).apply(); 
} 

MainActivity.java:50

pushManager.subscribeToTopic(pushManager.getDefaultTopic()); 

Я не очень понял, что это неверный параметр в моем приложении, так что вы могли бы вы мне помочь?

ответ

0

Согласно журналам, недопустимым является Конечная точка.
Чтобы получить конечную точку вы могли бы сделать ...

final CreatePlatformEndpointRequest request = new CreatePlatformEndpointRequest(); 
    request.setPlatformApplicationArn(platformApplicationArn); 
    request.setToken(gcmToken); 
    final CreatePlatformEndpointResult result = snsClient.createPlatformEndpoint(request); 

Конечная точка может быть восстановлена ​​путем:

result.getEndpointArn(); 
+0

У меня нет каких-либо переменных идет по именам 'gcmToken' или' snsClient' в моем приложении. Не могли бы вы мне помочь? Или есть другой способ получить ARN конечной точки? –

+0

К сожалению, snsClient == sns и gcmToken могут быть получены: gcmToken = instanceID.getToken (gcmSenderID, GoogleCloudMessaging.INSTANCE_ID_SCOPE); ... где instanceID - объект InstanceID (com.google.android.gms.iid.InstanceID) –

+0

ОК, я добавил его в свой код, но теперь я получаю этот журнал ошибок: «Значение null в 'token' не удалось удовлетворить ограничение: член не должен быть null. Возможно, вы знаете, почему я получаю эту ошибку и как ее исправить? Я выложу полный журнал через несколько минут. –

 Смежные вопросы

  • Нет связанных вопросов^_^