我正在使用AWS Amplify在iOS和Android上构建一个应用程序。我有一个lambda表达式,它接受经度、纬度、用户名和对象id,并返回一个布尔值,告诉我用户是否在物理上接近该对象。
它完美地工作在我的iOS应用程序,我得到true
或false
取决于用户位置,但在Android上,我总是得到null
作为响应。
这是触发lambda的函数:
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)
}
}
}
}
当我打印日志的参数发送到lambda一切正常,正确的值被发送。
这是我的回调函数:
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())
}
}
这里我成功地得到了一个响应,但是响应。数据()?。isObjectFound
为null
我在这里做错了什么,还是我必须找别的地方?
在没有日志记录的情况下对lambda函数进行故障排除有点像是在黑暗中发现了什么:这非常困难。您需要记录客户端和服务器端(也称为后端)才能对此进行故障排除。
对于后端日志记录,AWS为Lambda和API网关提供Cloudwatch日志。
一旦确认已打开cloudwatch日志,请遵循以下策略:
>
接下来,使用上面的代码从Android运行第二个测试。在cloudwatch中查找两者之间的差异,这将揭示详细信息,帮助您解决Android呼叫中出现的问题。
如果Amplify没有为API网关或Lambda函数创建Cloudwatch日志,请按照此处的步骤进行设置。希望这能帮助您找到解决方案。
问题内容: 我正在编写一个需要连接到在node.js服务器上运行的Socket.IO实例的android应用。 尝试使用iOS设备连接到实例并传输数据可以正常工作,但是当我尝试使用android设备进行操作时却失败了。 我正在使用Native java client,这是我在android端使用的代码: 每当我尝试连接时(基本上是在line上),日志将显示以下行: 因此,尝试连接后我立即收到xhr
我知道这个问题和下面的问题是重复的。 我打开了许多选项卡,但结果getWindowHandles()总是返回1。
我已经看了很多教程,但我无法使我的简单JAX-RS应用程序工作。Tomcat总是返回错误404。 要获取类的应用程序: 我的JAX-RS文件: web.xml http://localhost:8080/msm-master/resources/hello/ 编辑:已添加Tomcat控制台输出:
问题内容: 结果始终为1: 我在phpMyAdmin中运行了$ sql查询,它返回3,所以查询不是问题。$ vote_total全局初始化为0,因此1来自某个地方。我还需要提供什么其他信息来帮助我? 谢谢,瑞安 问题答案: 返回选定的行数,而不是特定行的字段。使用来获取您与您的查询选择的行: 您还可以用来获取一行并获取特定字段: 这将获取第一行(从零开始)并返回第一字段(从零开始)。
问题内容: 我已经写了这段简单的代码: 在我的情况当属。谁能建议/建议出什么问题了? 问题答案: 错误检查和处理是程序员的朋友。检查初始化和执行cURL函数的返回值。并在失败的情况下包含更多信息: *在 手动状态: 成功返回cURL句柄,错误返回 FALSE 。 我观察到该函数在您使用其参数且无法解析域时会返回。如果未使用该参数,则该函数 可能 永远不会返回。但是,请务必始终进行检查,因为该手册并
我使用Ehcache 2.6.8作为Spring Boot应用程序的一部分,作为Hibernate 4.3.11的二级缓存。我有一个JMX MBean,它允许我检查缓存的内容(如果您感兴趣,可以在这里查看)。 首先,我使用CacheManager名称来获取缓存列表。这很好。我可以用返回缓存。然后我调用。这很好,cacheName是“com.myapp.DomainObjectName”,键被列为“