我正在将我的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一起使用,要么就只是一个不同的问题。
编辑
答案 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()
)