如何拦截从CallKit来电屏幕发送的“消息”?

问题描述 投票:6回答:2

我正在使用iOS 10的CallKit接收来电。我的应用程序中的呼叫不是来自“电话号码”或“电子邮件地址”,而是来自我的协议中的内部标识符。因此,我使用CXHandleType(而不是CXHandleTypeGenericCXHandleTypePhoneNumber)的CXHandleTypeEmailAddress报告来电,使用自定义字符串作为句柄的“值”。

当我报告来电并且电话未锁定时,用户会看到来电屏幕,其中包含“提醒我”,“消息”,“拒绝”和“接受”按钮。如果用户按下“消息”按钮,并选择以下菜单中的一个消息字符串,它会尝试通过消息应用程序将该字符串作为文本消息发送,目标是我用作“值”的自定义字符串“电话的句柄,好像是电话号码或电子邮件地址,即使它不是。这通常会导致邮件由于目标无效而无法发送,但是,根据字符串,它实际上可能会发送到用户不想发送到的有效目标;两种结果都很糟糕。

我正在寻找是否有办法让消息不通过消息应用程序发送(在我的情况下总是不正确),而是传递到我的应用程序,以便我可以通过我正确地将消息发送给调用者内部协议。


更新:iOS 10.1中不再显示“提醒我”和“消息”按钮

ios ios10 callkit
2个回答
2
投票

如果在iOS 12中支持SiriKit,则会出现“消息”按钮。(将INSendMessageIntent添加到intent的info.plist)

如何拦截:

  1. 运行Intent扩展
  2. 处理handler(for intent:)

1
投票

iOS 10.1 Beta 1已将此行为更改为不再显示CallKit VoIP应用的“提醒我”或“消息”按钮,因此我建议您使用该Beta OS重新测试您的应用。

如果您希望应用程序的来电能够继续显示“消息”按钮,但是您的应用程序会收到消息请求而不是系统的本机消息应用程序,请file a bug与Apple联系以请求此功能。

© www.soinside.com 2019 - 2024. All rights reserved.