解析LiveQuery不订阅-Android(Kotlin)

时间:2019-04-11 09:14:08

标签: android kotlin parse-platform

我正在将我的Android应用程序从Java重写为Kotlin。我正在使用Parse LiveQuery on 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一起使用,要么就只是一个不同的问题。

编辑

在此处附加调试器的图像,希望它可以帮助某人意识到我要去哪里了。 Android Studio Debugger Snapshot

1 个答案:

答案 0 :(得分:1)

我已经解决了问题。指定服务器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()
        )