iOS 呼叫套件。直接跳转到应用程序
iOS CallKit. Jump directly to application
我目前正在开发具有 VoIP 功能的 iOS 应用程序。我使用 CallKit 接听电话。当设备被锁定并且用户接听电话时,系统 UI 出现并且用户可以点击我的应用程序图标以进一步移动到我的应用程序。这是预期的行为,并且工作正常。
但是,我注意到当您使用 Viber 进行视频通话时,行为略有不同。当您接听电话时,系统 UI 出现片刻,然后 Viber 应用程序自动出现。 Telegram 不是这种情况,您仍然需要点击 Telegram 图标才能继续前进。所以 Viber 行为不是预期的。看起来来自 Viber 的家伙以某种方式绕过系统 UI 并直接跳转到他们的应用程序。
有人知道他们是怎么做到的吗?
显然,如果您在报告来电时将 hasVideo
属性 设置为 true
CXCallUpdate
,系统将在接听电话时自动打开您的应用程序。无论如何,文档中的任何地方都没有提到这个功能。或者,至少,我找不到任何相关信息。
这是我现在报告新呼叫的代码部分:
let update = CXCallUpdate()
update.remoteHandle = CXHandle(type: .generic, value: handle)
update.hasVideo = true // <- was false earlier, setting to true did the trick
update.supportsDTMF = false
update.supportsHolding = true
update.supportsGrouping = false
update.supportsUngrouping = false
callProvider.reportNewIncomingCall(with: uuid, update: update, completion { error in
/*...*/
}
我目前正在开发具有 VoIP 功能的 iOS 应用程序。我使用 CallKit 接听电话。当设备被锁定并且用户接听电话时,系统 UI 出现并且用户可以点击我的应用程序图标以进一步移动到我的应用程序。这是预期的行为,并且工作正常。
但是,我注意到当您使用 Viber 进行视频通话时,行为略有不同。当您接听电话时,系统 UI 出现片刻,然后 Viber 应用程序自动出现。 Telegram 不是这种情况,您仍然需要点击 Telegram 图标才能继续前进。所以 Viber 行为不是预期的。看起来来自 Viber 的家伙以某种方式绕过系统 UI 并直接跳转到他们的应用程序。
有人知道他们是怎么做到的吗?
显然,如果您在报告来电时将 hasVideo
属性 设置为 true
CXCallUpdate
,系统将在接听电话时自动打开您的应用程序。无论如何,文档中的任何地方都没有提到这个功能。或者,至少,我找不到任何相关信息。
这是我现在报告新呼叫的代码部分:
let update = CXCallUpdate()
update.remoteHandle = CXHandle(type: .generic, value: handle)
update.hasVideo = true // <- was false earlier, setting to true did the trick
update.supportsDTMF = false
update.supportsHolding = true
update.supportsGrouping = false
update.supportsUngrouping = false
callProvider.reportNewIncomingCall(with: uuid, update: update, completion { error in
/*...*/
}