当前位置: 首页 > 知识库问答 >
问题:

如何将C2D(云到设备)Azure IoT中心消息的有效载荷的显式响应发送回发起者?

周阳成
2023-03-14

我目前正在尝试实现对C2D消息的一些处理。到目前为止,从IoT中心功能发送C2D消息就像一个魔咒,我接收和处理有效负载没有任何问题。

然而,我的问题是,在启动端,我总是得到肯定的确认,即使我在处理命令时杀死了物联网设备。似乎所有文档在涉及到对C2D消息的响应时都开始变得有点模糊。我确实多次阅读了物联网中心功能的相关文档。。。希望我没有错过一个重要的部分,但我对此表示怀疑。

那么,我如何显式地将响应发送回包含有效载荷的发起者呢?

我目前正在免费演示订阅,因为我正在与物联网中心进行第一步。

非常感谢你的帮助。

共有1个答案

鱼锦
2023-03-14

从云到设备的任何通信都可以从这个页面开始。据我所知,在您的情况下,您可能希望使用直接方法而不是C2D消息。C2D消息非常适合通知设备,但是正如您所体验到的,没有用于响应消息的内置功能。

直接方法允许向设备发送请求,并允许该设备响应该请求。请求和响应都允许使用128 KB的JSON负载,因此您可以在设备端使用该负载发送回一些内容。

更新:如评论中所述,除了接受/拒绝来自设备的C2D消息外,您对如何处理该设备的C2D消息没有太大影响。下面是如何使用C#Device SDK拒绝消息。

private async Task RejectSample()
{
    var deviceClient = DeviceClient.CreateFromConnectionString("muchconnectionstring");
    var message = await deviceClient.ReceiveAsync();
    // await deviceClient.CompleteAsync(message);
    await deviceClient.RejectAsync(message);
}
 类似资料:
  • 在搜索文档之后,我找不到任何关于如何在没有使用外部服务器的情况下使用FCM向设备发送消息的信息。 例如,如果我正在创建一个聊天应用程序,我将需要向用户发送关于未读消息的推送通知,因为他们不会一直在线,而且我不可能在后台有一个始终连接到实时数据库的持久服务,因为这会占用太多资源。 那么当某个用户“B”向他/她发送聊天消息时,我将如何向用户“a”发送推送通知呢?我需要一个外部服务器来完成这个任务吗?还

  • null 当我确实从Firebase云消息发送给自己一条测试消息时,它确实工作正常,并且成功地向每个设备发送了一个推送通知。 例如,以下是 null

  • 我正在构建一个基于MQTT的Rust应用程序,该应用程序向IoTHub发送消息,以便将消息转发到监听云到设备消息的目标设备。 目标设备“myDev”订阅了主题,它可以从IoTHub接口(“Azure门户上的消息到设备”)接收消息。 我发现的用其他编程语言实现这一点的示例使用Azure IoT SDK,它有一个客户端服务。例如,参见Java示例:https://docs.microsoft.com/

  • 我正在使用Azure IOT SDK,试图发送一条带有字符串正文的云到设备消息,并在SDK中接收该消息。无论我发送什么,SDK都会以字节数组格式显示。如何从云向我的设备SDK发送字符串而不是字节数组? 这是我遵循的代码示例:https://github.com/Azure/azure-iot-sdk-c/blob/master/iothub_client/samples/iothub_ll_c2d

  • 我可以在iOS和Android上从Firebase控制台向我的应用程序发送测试通知。因此,我的应用程序设置正确,可以在两个平台上接收推送通知。但是,当我使用云函数发送通知时。仅接收Android设备上的通知。iOS设备上未显示任何通知。我怀疑这可能与我在云函数中创建有效负载的方式有关。也许我错过了iOS的一些东西。如果你能给我一些建议,那就太好了。 我检查了iOS设备的deviceToken是否正

  • 我正在实现将推送通知从我的google应用程序引擎服务器发送到客户端应用程序。向Firebase云消息服务器发送post消息时,我收到401响应(https://fcm.googleapis.com/fcm/send). 我已经按照指示去做了https://firebase.google.com/docs/cloud-messaging/server,所以我用我的服务器密钥发送“Authoriza