我正在VoIP应用程序中实现VoIP支持。
我能够通过将supportsVideo设置为CXProviderConfiguration中的false来禁用视频按钮。现在,FaceTime按钮出现了。
我想知道在默认UI中是否存在禁用FaceTime按钮的方法,因为应用程序正在处理与FaceTime无关的内部企业编号。
Update:如下面的答案所述,可以禁用按钮,但调用方号码丢失(显示为Unknown)。我想保留数字和禁用FaceTime按钮。
Update:在iPhone设置中禁用FaceTime将禁用FaceTime按钮。然而,这并不是解决这个问题的有效办法。
Update:对CXHandle类型的任何更改,包括向其中插入对电话号码无效的字符,都不会影响问题--仍然显示FaceTime按钮。
发布于 2016-12-20 21:59:51
在好消息/坏消息方面,我能够通过清除FaceTime (而不是删除或隐藏,只是淡出)禁用remoteHandle按钮。
但是,如果不设置localizedCallerName属性,则调用方会显示为“未知”。
没有句柄的呼叫会产生副作用,即不能在最近的时间内进行按压。
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
//callUpdate.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
[self.provider reportNewIncomingCallWithUUID:uuid update:callUpdate completion:^(NSError* error) {}];发布于 2018-04-04 23:16:20
为了这个问题,我把我的头发拔了出来,删除remoteHandle确实禁用了按钮,但是你再也不能从系统调用历史中打电话了。
终于找到了一个完美的解决方案,我想和大家分享一下。
假设我们同时支持音频/视频。
CXProviderConfiguration.
让providerConfiguration = CXProviderConfiguration(localizedName:"yourConfigName") providerConfiguration.supportsVideo = supportsVideo providerConfiguration.supportedHandleTypes = .generic,.phoneNumber,.emailAddress //选择您自己的supportedHandleTypes。remoteHandle。
让update = CXCallUpdate() // Set hasVideo在incomingCall屏幕上显示正确的类型。update.hasVideo = supportsVideo // remoteHandle,以便禁用FaceTime按钮// update.remoteHandle =CXHandle(类型:.generic,value: yourHandle)func provider(_ provider: CXProvider, perform action: CXEndCallAction)委托更新remoteHandle。排除remoteHandle时,reportIncomingCall将失去从系统调用历史调用的能力。但是您可以在结束调用之前更新调用并设置它。
func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
let update = CXCallUpdate()
// Set the remoteHandle, so you can call from System Call History
update.remoteHandle = CXHandle(type: .generic, value: yourHandle)
provider.reportCall(with: uuid, updated: update)
action.fulfill()
} 发布于 2017-01-09 01:42:04
我按照与disabling the "Add Call" button相同的方法禁用了disabling the "Add Call" button按钮,该方法不会破坏调用方名称的功能,但奇怪的是,如果用户触摸扬声器按钮,FaceTime按钮将再次激活。我不明白为什么这种行为不会是苹果的错误,所以我放弃了一个正确的解决方案。
编辑:原因是:只有在调用建立之后,我才会将CXHandle归因于CXCallUpdate,因此在没有CXHandle的情况下,首先禁用了FaceTime按钮。激活扬声器按钮以某种方式强制在CallKit UI中进行更新-此时,已经存在一个CXHandle,因此FaceTime按钮将被启用。
https://stackoverflow.com/questions/41245638
复制相似问题