Parse LiveQuery не подписывается - Android (Kotlin) - PullRequest
3 голосов
/ 11 апреля 2019

Я переписываю свое Android-приложение с Java на Kotlin.Я использую Parse LiveQuery на Android и не могу заставить работать подписки.

Я использую этот код для запуска LiveQuery, но не получаю никакого ответа.Я знаю, что в таблице в БД включена функция liveQuery.Я также знаю, что та же подписка работала в Java-версии этого приложения.

fun startListeningToNotifications() {
        //Build Live Query Client
        val parseLiveQueryClient = ParseLiveQueryClient.Factory.getClient()

        //Build Query
        var parseQuery = ParseQuery.getQuery<ParseObject>("Notifications")
        parseQuery.whereEqualTo("toUser", ParseUser.getCurrentUser())
        parseQuery.orderByAscending("createdAt")
        parseQuery.findInBackground { objects, e ->
            //Do something with notifications
        }

        //Build Live Query Listener
        var subscriptionHandling: SubscriptionHandling<ParseObject> = parseLiveQueryClient.subscribe(parseQuery)
        subscriptionHandling.handleSubscribe {
            Toast.makeText(this, "SUBSCRIBED", Toast.LENGTH_LONG).show()
        }
        subscriptionHandling.handleEvents { query, event, `object` ->
            fetchNotificationCount()
        }
        subscriptionHandling.handleError { query, exception ->
            Toast.makeText(this, exception.message, Toast.LENGTH_LONG).show()
        }
    }

Любая помощь очень ценится.Занимался этим уже несколько дней, и система отслеживания проблем GitHub не поможет, поскольку она либо старая, либо не работает с Kotlin, либо просто связана с другой проблемой.

EDIT

Прикрепление изображения отладчика здесь в надежде, что это поможет кому-то понять, где я ошибаюсь.Android Studio Debugger Snapshot

1 Ответ

1 голос
/ 02 мая 2019

Я решил проблему. При указании URL-адреса сервера, если вы используете сервер nginx, порт должен быть указан, в противном случае произойдет сбой.

Моя конфигурация разбора выглядела так:

Parse.initialize(
                Parse.Configuration.Builder(context)
                        .applicationId("appId")
                        .clientKey("clientKey")
                        .server("https://yourdomain.com/database/parse")
                        .enableLocalDataStore()
                        .build()
        )

Правильная конфигурация:

Parse.initialize(
                Parse.Configuration.Builder(context)
                        .applicationId("appId")
                        .clientKey("clientKey")
                        .server("https://yourdomain.com:1337/parse")
                        .enableLocalDataStore()
                        .build()
        )
...