iOS 11 加入了短信过滤,几个关键点:
- 这个功能在新的 IdentityLookup Framework 里。
- 只能拦截通讯录之外的来信。
- App 通过构建 filter extension 的方式进行过滤,系统会把短信发送方和短信内容发给 extension 询问结果,extension 会给出三种可能的回复:允许、过滤、不处理(信息不足不知道怎么处理)。这一步的处理逻辑都是预先在本地 extension 里写好的。
- 如果过滤结果是不处理,那么系统会将相关信息发送到你 App 的服务器进行查询,并将服务端的结果再返给 extension 进行决策。
- 出于隐私考虑,这个 extension 不能写回数据到它的 host app,就是说你的短信内容 app 里面是拿不到的,同时 extension 不能直接连接网络,只能通过系统帮你发送请求到服务端。
- 那么问题来了,服务端是别人的,怎么确保这一步的查询没有隐私问题?万一短信过来的是银行的验证码,extension 认为决策不了,系统就把验证码内容发到服务端去了,不会有风险吗?
官方文档: https://developer.apple.com/documentation/identitylookup
如果我的理解有误欢迎指出,谢谢~