从 iOS 上的消息过滤器扩展进行 API 调用

问题描述

我正在开发适用于 iOS 的消息过滤器扩展程序,但有点卡住了。我想在负责过滤接收到的消息的扩展类中进行 API 调用,但到目前为止它不起作用。我可以在 ViewController 类中使用完全相同的代码,并且一切正常。
所以我的问题是:是否可以从消息过滤器扩展进行 API 调用? (如果是,我是否缺少某种特殊设置?)

解决方法

根据documentation的规定,无法在扩展程序内部进行任何网络调用,系统应该处理它并为您与与您的应用程序关联的服务器通信

出于隐私原因,系统会处理与您关联的服务器的所有通信;您的消息过滤器应用扩展程序无法直接访问网络。

同样出于隐私原因,您的应用扩展程序无法将数据写入与包含应用程序共享的容器。

因此要调用您的服务器,您应该在 table1 +----+--------+----------+ | id |table2Id| value | +----+--------+----------+ | 1 | 4 |value1 | | 2 | 4 |value2 | | 3 | 5 |value3 | | 4 | 5 |value3 | | 5 | 5 |value3 | +----+--------+----------+ table2 +----+ | id | +----+ | 4 | | 5 | +----+ 实例上调用 deferQueryRequestToNetwork(completion:)

如果您的应用扩展程序无法自行确定,它会告诉 Messages 将有关消息的信息发送到与您的应用关联的服务器。您的服务器检查消息信息并向 Messages 发送响应,后者将响应传递给您的应用扩展程序。