AWS AppSync onUpdate 订阅无法在模拟器上运行

AWS AppSync onUpdate Subscription not working on simulator

我正在尝试 运行 Android 上的订阅。我可以在 android 客户端上进行所有其他查询 运行,例如创建、更新、列表等,但不能进行订阅。但是,在 AWS Appsync 控制台上,我可以打开两个控制台选项卡并创建一个订阅并添加新对象,它在那里工作,我收到回调。

当我从控制台(Android 模拟器)添加对象时,

None 方法在客户端被触发。

I am using client key for auth mode.

下面是我的代码:

 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@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@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

尝试将观察者作为 class 级别变量而不是在您的方法中声明。

Ok so for those who face similar issues in future, the problem lies in the schema used to define subscription.

默认情况下,AWS 会添加您需要输入的参数,否则它会起作用并且您不会收到任何回调。所以,我修改了我的模式以订阅这样的东西并将新的更改拉到我的应用程序中:

type Subscription {
    onCreateGuest: Guest
        @aws_subscribe(mutations: ["createGuest"])
    onUpdateGuest: Guest
        @aws_subscribe(mutations: ["updateGuest"])
    onDeleteGuest: Guest
        @aws_subscribe(mutations: ["deleteGuest"])
} 

link 帮助我理解并找到了问题。