Я создаю приложение на iOS и Android, используя AWS Amplify. У меня есть лямбда-выражение, которое принимает долготу, широту, имя пользователя, идентификатор объекта и возвращает мне логическое значение, которое говорит мне, если да или нет, пользователь физически близок к этому объекту.
Он отлично работает в моем приложении для iOS, я получаю true
или false
в зависимости от местоположения пользователя, но на Android я всегда получаю null
в качестве ответа.
Вот моя функция, которая запускает мою лямбду:
fun locationLambda() {
if ( ContextCompat.checkSelfPermission( this, Manifest.permission.ACCESS_FINE_LOCATION ) == PackageManager.PERMISSION_GRANTED ) {
fusedLocationClient.lastLocation.addOnSuccessListener { location : Location? ->
if (location != null) {
val latitude = location.latitude.toString()
val longitude = location.longitude.toString()
val username = AWSMobileClient.getInstance().username
val objectId = (intent.extras.getSerializable("object") as Object).getId()
Log.i("ObjectId", objectId)
Log.i("Longitude", longitude)
Log.i("Latitude", latitude)
Log.i("Username", username)
mAWSAppSyncClient?.query(IsObjectFoundQuery.builder()
.latitude(latitude)
.longitude(longitude)
.username(username)
.objectID(objectId)
.build())
?.responseFetcher(AppSyncResponseFetchers.NETWORK_ONLY)
?.enqueue(locationCallback)
}
}
}
}
Когда я печатаю в логах параметры, отправленные в лямбду, все нормально, отправляются правильные значения.
А вот моя функция обратного вызова:
private val locationCallback = object : GraphQLCall.Callback<IsObjectFoundQuery.Data>() {
override fun onResponse( response: com.apollographql.apollo.api.Response<IsObjectFoundQuery.Data>) {
Log.i("Results", response.data()?.isObjectFound.toString())
}
override fun onFailure(e: ApolloException) {
Log.e("ERROR", e.toString())
}
}
Здесь я успешно получил ответ, но response.data()?.isObjectFound
- это null
Я что-то здесь не так делаю или мне нужно искать где-то еще?