是否可以在iOS 11中创建白名单呼叫阻止应用程序?
例如,我想屏蔽除联系人列表中的号码之外的所有号码。
看起来api只允许您创建一个要阻止的数字列表,而不是一个允许的数字列表。
https://developer.apple.com/documentation/callkit
是的,您只能阻止特定的列表,您没有反转大小写的权限。这违反了苹果的政策。不确定是否可以使用私有api,否则通过公共/合法的方式,你就无法做到这一点。
这是来自苹果文档的文本:
当手机接到来电时,系统首先会查看用户的阻止列表,以确定是否应该阻止通话。如果电话号码不在用户或系统定义的阻止列表中,系统会咨询您的应用程序的呼叫目录扩展,以找到匹配的阻止号码。
上面的文字清楚地说,当收到呼叫时,它只会查看您的列表以检查阻止列表,反转大小写不可用。
即使你可以删除其他应用程序添加的被阻止的联系人,你也只能访问应用程序的呼叫目录扩展程序添加的阻止号码。
所以,如果你想屏蔽除某些列表外的所有数字,那么这在iOS中是不可能的。
使用CallKit无法实现这一点,但有一种(更复杂)方法可以通过外部蓝牙设备来消除来电并完全按照您的意愿进行操作,比如这种原型板(产品已不再销售,但您会在网上找到其他一些不错的板)。
诀窍是将你的应用程序与实现Apple ANCS配置文件的蓝牙设备配对。此配置文件将使您的设备能够应答传入通知和呼叫。。。看到它来了吗?你可以把它想象成一个极简主义的iWatch,在那里你可以接听或拒绝电话和任何通知。如果您的应用程序已连接并且可以与设备通信,则它将能够发送命令,要求为您接听电话。
因此,最终它将按原样工作:
- 连接到配对的蓝牙设备
- 当你接到电话时,它会向你发送呼叫者标识符
- 您将此标识符与白名单进行比较
- 如果不存在,则要求您的设备对呼叫通知回答"否">
- 呼叫被拒绝
当然,这与你提出这个问题时的预期相去甚远,但值得一提的是,这是目前唯一可行(且经过测试!)的解决方案。