Callkit可以阻止除白名单联系之外的所有通话吗?

时间:2017-11-08 15:26:51

标签: ios whitelist callkit

是否可以在iOS 11中创建白名单呼叫阻止应用?

例如,我想阻止除联系人列表中的号码以外的所有号码。

看起来api只允许你创建一个要阻止的数字列表,而不是一个允许的数字列表。

https://developer.apple.com/documentation/callkit

2 个答案:

答案 0 :(得分:1)

是的,您只能阻止特定的列表,没有权限进行大小写反转。这违反了苹果的政策。不确定是否可以使用私有api,否则不能通过公共/法律方式来做到这一点。

这是来自Apple文档的文本:

  

电话收到来电时,系统首先会查询用户的阻止列表,以确定是否应阻止呼叫。如果电话号码不在用户或系统定义的阻止列表中,则系统将查询您应用的“呼叫目录”分机以找到匹配的阻止号码。

上面的文字清楚地表明,在接到呼叫时,它仅查询您的列表以检查阻止列表,而无法使用大小写反转。

即使您可以删除其他应用添加的被阻止的联系人,您也只能访问由应用的呼叫目录扩展添加的被阻止的号码。

因此,如果您想屏蔽除某些列表以外的所有数字,那么在iOS中是不可能的。

答案 1 :(得分:1)

您无法使用CallKit实现此目的,但是有一种(很多更复杂的)方式可以拒绝来电并通过外部蓝牙设备完全完成您想要的操作-例如{{3 }}(产品不再销售,但您会在网络上找到一些其他不错的板子。)

诀窍是将您的应用与实现prototyping board配置文件的蓝牙设备配对。此配置文件将使您的设备能够应答传入的通知和呼叫...看到它了吗?您可以想象这就像一个简约的iWatch,从那里您可以接听或拒绝电话以及任何通知。如果您的应用已连接并且可以与设备通信,则它将能够发送命令以要求您取消通话。

因此,最后它将按原样工作:

  1. 您连接到已配对的蓝牙设备
  2. 当您收到呼叫时,它会向您发送呼叫者标识符
  3. 您将此标识符与白名单进行比较
  4. 如果不存在,则要求设备对呼叫通知回答“否”,
  5. 通话被拒绝。

当然,这与您提出此问题时的预期相去甚远,但是值得一提的是,这是当今唯一可行(且经过测试!)的解决方案。