Description
Thanks @muellerfr @minbi @desokroshan to solve this one:
AndroidPubSub Sample does not work!!!
#719
Now I tried to follow the above method to use it in the following:
AndroidPubSubWebSocket
https://github.com/awslabs/aws-sdk-android-samples/tree/master/AndroidPubSubWebSocket
there still has some problems:
State your question
The apk keeps reconnceting
Which AWS Services are you utilizing?
AWS IoT
Provide code snippets (if applicable)
Followed the instruction https://github.com/awslabs/aws-sdk-android-samples/tree/master/AndroidPubSubWebSocket to set the parameter on the AWS cloud
Downloaded the whole code from https://github.com/awslabs/aws-sdk-android-samples
Used Android Studio 3.3.1 to open the folder AndroidPubSubWebSocket
I change in the awsconfiguration.json
"PoolId": "REPLACE_ME",
"Region": "us-east-1"
PubSubActivity.java
// Customer specific IoT endpoint
// AWS Iot CLI describe-endpoint call returns: XXXXXXXXXX.iot..amazonaws.com,
private static final String CUSTOMER_SPECIFIC_IOT_ENDPOINT = "REPLACE_ME";
add implementation "com.amazonaws:aws-android-sdk-auth-userpools:$aws_version in AndroidPubSub/build.gradle
Sync, Build and Run App on emulator9.0 or Mobile Phone8.0, the result in Logcat is
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: clientId = ***
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: MQTT broker: ***:443
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: Inspecting user state details
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: waitForSignIn: userState:GUEST
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: ready to do mqtt connect
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: metrics collection is enabled, username: ?SDK=Android&Version=2.12.1
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: resetting reconnect attempt and retry time
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Setting up Callback for MqttClient
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Connecting
com.amazonaws.demo.androidpubsubwebsocket D/NetworkSecurityConfig: No Network Security Config specified, using platform default
com.amazonaws.demo.androidpubsubwebsocket W/AWSIotMqttManager: onFailure: connection failed.
MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
at java.lang.Thread.run(Thread.java:764)
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Reconnecting
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: schedule Reconnect attempt 0 of 10 in 4 seconds.
com.amazonaws.demo.androidpubsubwebsocket E/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Connection error.
MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
at java.lang.Thread.run(Thread.java:764)
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: TID: 5505 trying to reconnect to session
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: attempting to reconnect to mqtt broker
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: Inspecting user state details
com.amazonaws.demo.androidpubsubwebsocket D/AWSMobileClient: waitForSignIn: userState:GUEST
/com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Reconnect to mqtt broker: *** mqttWebSocketURL: wss://***:443/mqtt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=***
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: Setting up Callback for MqttClient
com.amazonaws.demo.androidpubsubwebsocket D/AWSIotMqttManager: mqtt reconnecting attempt 1
com.amazonaws.demo.androidpubsubwebsocket W/AWSIotMqttManager: Reconnect failed
MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
at java.lang.Thread.run(Thread.java:764)
com.amazonaws.demo.androidpubsubwebsocket I/AWSIotMqttManager: schedule Reconnect attempt 1 of 10 in 8 seconds.
com.amazonaws.demo.androidpubsubwebsocket D/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Status = Reconnecting
com.amazonaws.demo.androidpubsubwebsocket E/com.amazonaws.demo.androidpubsubwebsocket.PubSubActivity: Connection error.
MqttException (0) - java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:664)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.receiveHandshakeResponse(WebSocketHandshake.java:133)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketHandshake.execute(WebSocketHandshake.java:74)
at org.eclipse.paho.client.mqttv3.internal.websocket.WebSocketSecureNetworkModule.start(WebSocketSecureNetworkModule.java:77)
at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:650)
at java.lang.Thread.run(Thread.java:764)
The Apk keeps reconnectiong.
How to deal with this problem?
Should there some other code be added?
Environment(please complete the following information):
- SDK Version: [e.g. 2.6.25]
Device Information (please complete the following information):
- Device: [e.g. Pixel XL, Simulator]
- Android Version: [e.g. Nougat 7.1.2]
- Specific to simulators:
If you need help with understanding how to implement something in particular then we suggest that you first look into our developer guide. You can also simplify your process of creating an application, as well as the associated backend setup by using the Amplify CLI.