Kotlin 如何获取子属性/TwinCollection的元数据/版本?

Kotlin 如何获取子属性/TwinCollection的元数据/版本?,kotlin,azure-iot-sdk,Kotlin,Azure Iot Sdk,我正在使用Azure IoT SDK实现Java DeviceTwin功能。调用startDeviceTwin()时,我会在TwinPropertyCallBack中收到一次报告的和所需的属性 但是,在发送的属性中,我只能获取“根节点”的版本,而不能获取子属性或TwinCollection的版本(它们都是null)。在Azure Portal上,我可以清楚地看到,在JSON的元数据部分中,所有这些文件都有自己的版本。例如: ... "properties": {

我正在使用Azure IoT SDK实现Java DeviceTwin功能。调用
startDeviceTwin()
时,我会在
TwinPropertyCallBack
中收到一次报告的和所需的属性

但是,在发送的
属性
中,我只能获取“根节点”的
版本
,而不能获取子属性或
TwinCollection
的版本(它们都是
null
)。在Azure Portal上,我可以清楚地看到,在JSON的元数据部分中,所有这些文件都有自己的版本。例如:

...
  "properties": {
    "desired": {
      "Broadcast": {
        "0": {
          "Scene": 2,
          "Brightness": 13
        }
      },
      "$metadata": {
        "$lastUpdated": "2020-12-01T07:53:53.0372127Z",
        "$lastUpdatedVersion": 17,
        "Broadcast": {
          "0": {
            "$lastUpdated": "2020-12-01T07:53:53.0372127Z",
            "$lastUpdatedVersion": 17,
            "Scene": {
              "$lastUpdated": "2020-12-01T07:53:53.0372127Z",
              "$lastUpdatedVersion": 17
            },
            "Brightness": {
              "$lastUpdated": "2020-12-01T07:28:08.5730028Z",
              "$lastUpdatedVersion": 15
            }
          },
          "$lastUpdated": "2020-12-01T07:53:53.0372127Z",
          "$lastUpdatedVersion": 17
        }
      },
      "$version": 17
    },
...
如何接收嵌套的
TwinCollection
s的这些版本?它是某种配置还是目前不受支持


在上面的示例中,我希望阻止亮度值的重新处理,因为我的本地状态已经是“版本15”。

根据Azure,您应该获得每个属性的最新更新版本。我能够在NodeJS中获得整个元数据对象,包括lastUpdatedVersion,因此类似的功能也可以在Java中使用。

相关Github问题发布在:

以下是微软团队的回应

该服务不会按设计将该元数据发送到设备。它是 仅适用于请求设备孪生兄弟的服务客户。在里面 一般来说,您需要依赖文档的整体版本 用于并发保护

如果您在这件事上需要进一步的帮助,请在下面发表评论