I am trying to run the subscription on Android. I am able to make all other queries run like create, update, list, etc on the android client but not subscription. However, on AWS Appsync console I can open two console tabs and create a subscription and add new objects, it's working there, I get callbacks.
None of the methods are triggered on client when I add objects from console(Android simulator).
I am using client key for auth mode.
Below is my code:
private void subscribeNew(){
OnCreateRtGuestSubscription subscription = OnCreateRtGuestSubscription.builder().build();
subscriptionWatcher = mAWSAppSyncClient.subscribe(subscription);
subscriptionWatcher.execute(new AppSyncSubscriptionCall.Callback() {
@Override
public void onResponse(@Nonnull Response response) {
Log.i("Response", response.data().toString());
}
@Override
public void onFailure(@Nonnull ApolloException e) {
Log.i("Response", e.toString());
}
@Override
public void onCompleted() {
Log.i("Response","");
}
});
}
private AppSyncSubscriptionCall.Callback<OnUpdateRtGuestSubscription> subscriptionCallBack= new AppSyncSubscriptionCall.Callback<OnUpdateRtGuestSubscription>() {
@Override
public void onResponse(@Nonnull Response<OnUpdateRtGuestSubscription> response) {
Log.i("Response", "");
}
@Override
public void onFailure(@Nonnull ApolloException e) {
Log.i("Response", "");
}
@Override
public void onCompleted() {
Log.i("Response", "");
}
};
private void subscribeEdit(){
OnUpdateRtGuestSubscription subscription = OnUpdateRtGuestSubscription.builder().build();
AppSyncSubscriptionCall subscriptionWatcher=this.mAWSAppSyncClient.subscribe(subscription);
subscriptionWatcher.execute(subscriptionCallBack);
}
2019-05-27 14:45:55.540 1362-1384/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 13086062 , only wrote 13086000 2019-05-27 14:45:55.548 12881-13064/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Adding listener [com.example.umarfarooque.rtdbtest.MainActivity$2@361b720] to SubscriptionObject: com.amazonaws.amplify.generated.graphql.OnCreateRtGuestSubscription@b3f4623 got: com.amazonaws.amplify.generated.graphql.OnCreateRtGuestSubscription@b3f4623 2019-05-27 14:45:55.548 12881-13064/com.example.umarfarooque.rtdbtest V/SubscriptionObject: Adding listener to com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@926e8d9 2019-05-27 14:45:55.551 12881-13063/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Adding listener [com.example.umarfarooque.rtdbtest.MainActivity$1@3f740ef] to SubscriptionObject: com.amazonaws.amplify.generated.graphql.OnUpdateRtGuestSubscription@836217f got: com.amazonaws.amplify.generated.graphql.OnUpdateRtGuestSubscription@836217f 2019-05-27 14:45:55.551 12881-13063/com.example.umarfarooque.rtdbtest V/SubscriptionObject: Adding listener to com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@47b254c 2019-05-27 14:45:55.564 12881-13067/com.example.umarfarooque.rtdbtest D/RetryInterceptor: Retry Interceptor called 2019-05-27 14:45:55.564 12881-13067/com.example.umarfarooque.rtdbtest D/AppSyncSigV4SignerInterceptor: Signer Interceptor called 2019-05-27 14:45:55.566 12881-13067/com.example.umarfarooque.rtdbtest D/AppSyncSigV4SignerInterceptor: Subscriber ID is 61c60911-18ea-4ac2-8a7f-79f13d7b03e6 2019-05-27 14:45:55.773 12881-13067/com.example.umarfarooque.rtdbtest I/RetryInterceptor: Returning network response: success 2019-05-27 14:45:55.775 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: subscribe called for com.amazonaws.amplify.generated.graphql.OnCreateRtGuestSubscription@b3f4623 2019-05-27 14:45:55.776 12881-13065/com.example.umarfarooque.rtdbtest D/RealSubscriptionManager: Subscription Infrastructure: Adding subscription object com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@926e8d9 to topic 443301200413/eytajgboqjcllkyv6jkqycc4me/onCreateRTGuest/08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d. Total subscription objects: 2 2019-05-27 14:45:55.776 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Attempting to make [1] MQTT clients] 2019-05-27 14:45:56.779 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set subscription message transmitting to false for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.779 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set Connection transmitting to false for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set subscription message transmitting to false for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set Connection transmitting to false for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Connecting with Client ID[tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Calling MQTT Connect with actual endpoint for client ID[tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.143 12881-13072/com.example.umarfarooque.rtdbtest D/AlarmPingSender: Register alarmreceiver to MqttServiceMqttService.pingSender.tgvihzfuync35pl4m6ihy6gidu 2019-05-27 14:45:57.145 12881-13072/com.example.umarfarooque.rtdbtest D/AlarmPingSender: Schedule next alarm at 1558961187145 2019-05-27 14:45:57.146 12881-13072/com.example.umarfarooque.rtdbtest D/AlarmPingSender: Alarm scheule using setExactAndAllowWhileIdle, next: 30000 2019-05-27 14:45:57.151 12881-12881/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Connection successful for clientID [tgvihzfuync35pl4m6ihy6gidu]. Will subscribe up to 2 topics 2019-05-27 14:45:57.151 12881-12881/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Subscribing to MQTT topic:[443301200413/eytajgboqjcllkyv6jkqycc4me/onUpdateRTGuest/08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d] 2019-05-27 14:45:57.151 12881-12881/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: com.amazonaws.mobileconnectors.appsync.subscription.mqtt.MqttSubscriptionClient@5c66981Subscription Infrastructure: Attempting to subscribe to topic 443301200413/eytajgboqjcllkyv6jkqycc4me/onUpdateRTGuest/08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d on clientID [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-12881/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Subscribing to MQTT topic:[443301200413/eytajgboqjcllkyv6jkqycc4me/onCreateRTGuest/08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d] 2019-05-27 14:45:57.152 12881-12881/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: com.amazonaws.mobileconnectors.appsync.subscription.mqtt.MqttSubscriptionClient@5c66981Subscription Infrastructure: Attempting to subscribe to topic 443301200413/eytajgboqjcllkyv6jkqycc4me/onCreateRTGuest/08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d on clientID [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Made [1] MQTT clients 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Unmuting the new clients [1] in total 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set subscription message transmitting to true for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set Connection transmitting to true for client [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Muting the old clients [ 1] in total 2019-05-27 14:45:57.152 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set subscription message transmitting to false for client [7aybllsw45gfnbuahn3khahrr4] 2019-05-27 14:45:57.153 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Subscription Infrastructure: Set Connection transmitting to false for client [7aybllsw45gfnbuahn3khahrr4] 2019-05-27 14:45:57.153 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Closing the old clients [1] in total 2019-05-27 14:45:57.153 12881-13065/com.example.umarfarooque.rtdbtest V/RealSubscriptionManager: Subscription Infrastructure: Closing client: com.amazonaws.mobileconnectors.appsync.subscription.mqtt.MqttSubscriptionClient@90ffefa 2019-05-27 14:45:57.153 12881-13065/com.example.umarfarooque.rtdbtest V/MqttSubscriptionClient: Closing MQTT client [7aybllsw45gfnbuahn3khahrr4 2019-05-27 14:45:57.163 12881-13067/com.example.umarfarooque.rtdbtest D/RetryInterceptor: Retry Interceptor called 2019-05-27 14:45:57.163 12881-13067/com.example.umarfarooque.rtdbtest D/AppSyncSigV4SignerInterceptor: Signer Interceptor called 2019-05-27 14:45:57.163 12881-13067/com.example.umarfarooque.rtdbtest D/AppSyncSigV4SignerInterceptor: Subscriber ID is 61c60911-18ea-4ac2-8a7f-79f13d7b03e6 2019-05-27 14:45:57.199 12881-13040/com.example.umarfarooque.rtdbtest D/AlarmPingSender: Unregister alarmreceiver to MqttService7aybllsw45gfnbuahn3khahrr4
Ok so for those who face similar issues in future, the problem lies in the schema used to define subscription.
By default, AWS adds the parameters which you need to put else it doest work and you dont get any callbacks. So, I modified my schema for subscription to somethning like this and pulled the new changes to my app:
type Subscription {
onCreateGuest: Guest
@aws_subscribe(mutations: ["createGuest"])
onUpdateGuest: Guest
@aws_subscribe(mutations: ["updateGuest"])
onDeleteGuest: Guest
@aws_subscribe(mutations: ["deleteGuest"])
}
This link helped me understand and find the issue.