Подписка на Android AWS Appsync не запускает события - PullRequest
2 голосов
/ 25 апреля 2019

Подписка AWS Appsync не запускает события. Я не получил события из сокета.Наблюдатель, кажется, работает нормально, потому что, если я передаю неправильный токен (для теста), он запускает событие onFailure.

Я сделал следующее:

Обновление моего проекта:

classpath 'com.amazonaws:aws-android-sdk-appsync-gradle-plugin:2.7.+'

Обновление моего приложения:

apply plugin: 'com.amazonaws.appsync'

и зависимости:

implementation 'com.amazonaws:aws-android-sdk-appsync:2.7.+' 
implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0'
implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'

Поместите эти файлы в app / src / main / graphql

query.graphql

subscription subscribeToNotify($userId: ID!, $deviceId: ID!){ subscribeToNotify(userId: $userId, deviceId: $deviceId){ userId deviceId body } }

schema.json (загружено с консоли)

Моя конфигурация json:

{
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "1.0",
"IdentityManager": {
    "Default": {}
},
"AppSync": {
    "Default": {
        "ApiUrl": "https://XXX",
        "Region": "eu-west-1",
        "AuthMode": "OPENID_CONNECT"
    },
    "Demo": {
        "ApiUrl": "https://XXX",
        "Region": "eu-west-2",
        "AuthMode": "OPENID_CONNECT"
    }
}

}

Манифест: `

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />



<service android:name="org.eclipse.paho.android.service.MqttService" />

Моя активность:

 private lateinit var appSyncClient : AWSAppSyncClient
    private lateinit var watcher: AppSyncSubscriptionCall<SubscribeToNotifySubscription.Data>

    private var callback:AppSyncSubscriptionCall.Callback<SubscribeToNotifySubscription.Data> = object : AppSyncSubscriptionCall.Callback<SubscribeToNotifySubscription.Data> {

        override fun onResponse(response: Response<SubscribeToNotifySubscription.Data>) {
            runOnUiThread {
                Timber.i("Subcription onResponse invoked  $response")
                Timber.e("Subcription onResponse invoked  $response")
                Timber.d("Subcription onResponse invoked  $response")
            }
        }
        override fun onCompleted() {
            Timber.i("Subcription onCompleted invoked")
        }

        override fun onFailure(e: ApolloException) {
            Timber.e("Subcription ERROR $e")
        }
    }

override fun subscribeToNotification(userID: String, deviceID: String, clearToken:String) {
        try{

            Timber.d("subscribeToNotification INVOKED")

            val clientConfiguration : AWSConfiguration =  AWSConfiguration(this)

            appSyncClient =  AWSAppSyncClient.builder().context(applicationContext).awsConfiguration(clientConfiguration).oidcAuthProvider { clearToken }.build()
            //subscribeToNotify

            var app_event_subscription = SubscribeToNotifySubscription.builder().deviceId(deviceID).userId(userID!!).build()

            watcher = appSyncClient.subscribe(app_event_subscription)
            watcher.execute(callback)

        }catch (ex:Exception){
            Timber.e("EXCEPTION CONNETING "+ex.message)
        }
    }

Когда сервер отправляет мне уведомление, в консоли журнала ничего не появляется, но я могу прочитать, что подпискасделано:

2019-04-25 10: 49: 28.456 12082-12317 / infinite_software.intelligence_center.intelligencecenter D / RealSubscriptionManager: инфраструктура подписки: добавление объекта подписки com.amazonaws.mobileconnectors.appsync.subscription.SubscriptionObject @ 4d109b1 в тему 156616541434 / 2b4hzivvqvdwzmcy4wibyy2sku / subscribeToNotify / 85582f91c6e6a66749f4e0e9c4d74ea7abef52b2e4c0242517e5236d4d51be60.Всего объектов подписки: 1

и планировщик, который работает (каждые X секунд):

2019-04-25 10: 50: 59.996 12082-12082 / infinite_software.Intelligence_center.intelligencecenter D / AlarmPingSender: Отправка Ping по адресу: 1556185859996 2019-04-25 10: 51: 00.006 12082-12082 / infinite_software.intelligence_center.intelligencecenter D / AlarmPingSender: Расписание следующего аварийного сообщения в 1556185890006 2019-04-25 10: 51: 0012082-12082 / infinite_software.intelligence_center.intelligencecenter D / AlarmPingSender: Схема сигнализации с использованием setExactAndAllowWhileIdle, следующая: 30000 2019-04-25 10: 51: 00.033 12082-12350 / infinite_software.intelligence_center.intelligencecenter D / AlarmPingSing:Снять блокировку (MqttService.client.dcuju2iftbdgplcvdamtlghzuu): 1556185860033

Я что-то пропустил?

...