问题描述
我正在开发适用于 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 发送响应,后者将响应传递给您的应用扩展程序。