我正在尝试在Android上运行订阅。我能够使所有其他查询在android客户端上运行,例如创建,更新,列表等,但不能运行。但是,在AWS Appsync控制台上,我可以打开两个控制台选项卡并创建订阅并添加新对象,它在那里工作,并得到回调。
当我从控制台(Android模拟器)添加对象时,没有一种方法会在客户端上触发。
我将客户端密钥用于身份验证模式。
下面是我的代码:
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:不提供 足够的数据来HAL,预期位置13086062,仅写入13086000 2019-05-27 14:45:55.548 12881-13064 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:添加 侦听器[com.example.umarfarooque.rtdbtest.MainActivity$2@361b720] 订阅对象: com.amazonaws.amplify.generation.graphql.OnCreateRtGuestSubscription@b3f4623 得到了: com.amazonaws.amplify.generation.graphql.OnCreateRtGuestSubscription@b3f4623 2019-05-27 14:45:55.548 12881-13064 / com.example.umarfarooque.rtdbtest V / SubscriptionObject:将侦听器添加到 com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@926e8d9 2019-05-27 14:45:55.551 12881-13063 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:添加 侦听器[com.example.umarfarooque.rtdbtest.MainActivity$1@3f740ef] 订阅对象: com.amazonaws.amplify.generation.graphql.OnUpdateRtGuestSubscription@836217f 得到了: com.amazonaws.amplify.generation.graphql.OnUpdateRtGuestSubscription@836217f 2019-05-27 14:45:55.551 12881-13063 / com.example.umarfarooque.rtdbtest V / SubscriptionObject:将侦听器添加到 com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@47b254c 2019-05-27 14:45:55.564 12881-13067 / com.example.umarfarooque.rtdbtest D / RetryInterceptor:重试拦截器称为2019-05-27 14:45:55.564 12881-13067 / com.example.umarfarooque.rtdbtest D / AppSyncSigV4SignerInterceptor:签名者拦截器称为2019-05-27 14:45:55.566 12881-13067 / com.example.umarfarooque.rtdbtest D / AppSyncSigV4SignerInterceptor:订阅者ID为 61c60911-18ea-4ac2-8a7f-79f13d7b03e6 2019-05-27 14:45:55.773 12881-13067 / com.example.umarfarooque.rtdbtest I / RetryInterceptor: 返回网络响应:成功2019-05-27 14:45:55.775 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:订阅 呼吁 com.amazonaws.amplify.generation.graphql.OnCreateRtGuestSubscription@b3f4623 2019-05-27 14:45:55.776 12881-13065 / com.example.umarfarooque.rtdbtest D / RealSubscriptionManager:订阅基础结构:添加 订阅对象 com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject@926e8d9 话题 443301200413 / eytajgboqjcllkyv6jkqycc4me / onCreateRTGuest / 08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d。 订阅总数:2 2019-05-27 14:45:55.776 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:尝试 使[1] MQTT客户] 2019-05-27 14:45:56.779 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置 订阅消息向客户端发送为false [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.779 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置连接 为客户端传输为false [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置 订阅消息向客户端发送为false [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置连接 为客户端传输为false [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:正在连接 带有客户端ID [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:56.780 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:调用MQTT 与实际端点连接以获取客户机ID [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.143 12881-13072 / com.example.umarfarooque.rtdbtest D / AlarmPingSender:将警报接收器注册到 MqttServiceMqttService.pingSender.tgvihzfuync35pl4m6ihy6gidu 2019-05-27 14:45:57.145 12881-13072 / com.example.umarfarooque.rtdbtest D / AlarmPingSender:将下一个警报安排在1558961187145 2019-05-27 14:45:57.146 12881-13072 / com.example.umarfarooque.rtdbtest D / AlarmPingSender:使用setExactAndAllowWhileIdle的警报计划, 下一个:30000 2019-05-27 14:45:57.151 12881-12881 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:连接 对clientID [tgvihzfuync35pl4m6ihy6gidu]成功。将订阅 最多2个主题2019-05-27 14:45:57.151 12881-12881 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:订阅 MQTT 主题:[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 基础架构:尝试订阅主题 443301200413 / eytajgboqjcllkyv6jkqycc4me / onUpdateRTGuest / 08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d 在clientID上[tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-12881 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:订阅 MQTT 主题:[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 基础架构:尝试订阅主题 443301200413 / eytajgboqjcllkyv6jkqycc4me / onCreateRTGuest / 08388b10f697efc944dc0f96750be6b366bb7d1e9b6305769ea132320fa7470d 在clientID上[tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:Made [1] MQTT 客户2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:取消静音 新客户[1]总计2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置 订阅消息为客户端传输为true [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置连接 为客户端传输为true [tgvihzfuync35pl4m6ihy6gidu] 2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:使旧版本静音 客户[1]总计2019-05-27 14:45:57.152 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置 订阅消息向客户端发送为false [7aybllsw45gfnbuahn3khahrr4] 2019-05-27 14:45:57.153 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:订阅基础结构:设置连接 为客户端传输为false [7aybllsw45gfnbuahn3khahrr4] 2019-05-27 14:45:57.153 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:关闭 老客户[1]总计2019-05-27 14:45:57.153 12881-13065 / com.example.umarfarooque.rtdbtest V / RealSubscriptionManager:订阅基础结构:关闭 客户: com.amazonaws.mobileconnectors.appsync.subscription.mqtt.MqttSubscriptionClient@90ffefa 2019-05-27 14:45:57.153 12881-13065 / com.example.umarfarooque.rtdbtest V / MqttSubscriptionClient:关闭MQTT客户端 [7aybllsw45gfnbuahn3khahrr4 2019-05-27 14:45:57.163 12881-13067 / com.example.umarfarooque.rtdbtest D / RetryInterceptor: 重试拦截器称为2019-05-27 14:45:57.163 12881-13067 / com.example.umarfarooque.rtdbtest D / AppSyncSigV4SignerInterceptor:签名者拦截器称为2019-05-27 14:45:57.163 12881-13067 / com.example.umarfarooque.rtdbtest D / AppSyncSigV4SignerInterceptor:订阅者ID为 61c60911-18ea-4ac2-8a7f-79f13d7b03e6 2019-05-27 14:45:57.199 12881-13040 / com.example.umarfarooque.rtdbtest D / AlarmPingSender: 向MqttService7aybllsw45gfnbuahn3khahrr4取消注册警报接收器
答案 0 :(得分:0)
尝试将观察者作为类级别的变量,不要在方法内部声明。
答案 1 :(得分:0)
好吧,对于那些将来面临类似问题的人来说,问题在于 用于定义订阅的模式。
默认情况下,AWS添加您需要放入的参数,否则它将不起作用,并且您不会获得任何回调。因此,我修改了用于订阅这样的内容的模式,并将新的更改应用于我的应用程序:
type Subscription {
onCreateGuest: Guest
@aws_subscribe(mutations: ["createGuest"])
onUpdateGuest: Guest
@aws_subscribe(mutations: ["updateGuest"])
onDeleteGuest: Guest
@aws_subscribe(mutations: ["deleteGuest"])
}
这个link帮助我了解并找到了问题。