【问题标题】:How to intercept "Messages" sent from CallKit incoming call screen?如何拦截从 CallKit 来电屏幕发送的“消息”?
【发布时间】:2016-09-23 20:55:56
【问题描述】:

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

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

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


更新:“提醒我”和“消息”按钮不再出现在 iOS 10.1 上

【问题讨论】:

  • 这个案子解决了吗? ,否则我们如何隐藏消息/提醒我按钮。
  • 我可以在接听电话时打开我的自定义应用程序吗?请认识我,因为我没有 iOS 开发经验。但很想知道这一点。
  • 如果支持 SiriKit,则会出现“消息”按钮。 (将 INSendMessageIntent 添加到 Extension 中的 info.plist)

标签: ios ios10 callkit


【解决方案1】:

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

如何拦截:

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

【讨论】:

    【解决方案2】:

    iOS 10.1 Beta 1 已更改此行为,不再显示 CallKit VoIP 应用的“提醒我”或“消息”按钮,因此我鼓励您使用该 Beta 操作系统重新测试您的应用。

    如果您希望来自您的应用的来电能够继续显示“消息”按钮,但您的应用接收消息请求而不是系统的本机消息应用,请通过 Apple file a bug 请求此功能。

    【讨论】:

    • 我可以在从本机屏幕接听电话时打开我的自定义应用程序吗?请认识我,因为我没有 iOS 开发经验。但很想知道这一点。
    • 如果通过 CallKit 应用程序来电时设备被锁定并且用户接听,由于设备仍处于锁定状态且 iOS 无法启动应用程序,因此设备将保留在本机来电 UI 中前景。但是,如果来电时设备已经解锁,则一旦接听电话,用户将被直接带到应用程序。
    • 接听电话后,用户将被直接带到应用程序 你的意思是我的 VoIP 应用程序正在呼叫通话屏幕,对吗?我已经检查了fb messenger。在通话屏幕出现时单击视频按钮,用户将被带到 fb messenger 视频通话屏幕。意味着我们可以覆盖呼叫屏幕上的按钮?我不是iOS背景。所以请让我知道这些查询
    • 你能回答我对这个问题的询问吗stackoverflow.com/q/41740139/4512651
    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多