首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FaceTime UI中隐藏CallKit按钮

在FaceTime UI中隐藏CallKit按钮
EN

Stack Overflow用户
提问于 2016-12-20 15:18:23
回答 4查看 4K关注 0票数 7

我正在VoIP应用程序中实现VoIP支持。

我能够通过将supportsVideo设置为CXProviderConfiguration中的false来禁用视频按钮。现在,FaceTime按钮出现了。

我想知道在默认UI中是否存在禁用FaceTime按钮的方法,因为应用程序正在处理与FaceTime无关的内部企业编号。

Update:如下面的答案所述,可以禁用按钮,但调用方号码丢失(显示为Unknown)。我想保留数字和禁用FaceTime按钮。

Update:在iPhone设置中禁用FaceTime将禁用FaceTime按钮。然而,这并不是解决这个问题的有效办法。

Update:对CXHandle类型的任何更改,包括向其中插入对电话号码无效的字符,都不会影响问题--仍然显示FaceTime按钮。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-20 21:59:51

在好消息/坏消息方面,我能够通过清除FaceTime (而不是删除或隐藏,只是淡出)禁用remoteHandle按钮。

但是,如果不设置localizedCallerName属性,则调用方会显示为“未知”。

没有句柄的呼叫会产生副作用,即不能在最近的时间内进行按压。

代码语言:javascript
复制
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
//callUpdate.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
[self.provider reportNewIncomingCallWithUUID:uuid update:callUpdate completion:^(NSError* error) {}];
票数 5
EN

Stack Overflow用户

发布于 2018-04-04 23:16:20

为了这个问题,我把我的头发拔了出来,删除remoteHandle确实禁用了按钮,但是你再也不能从系统调用历史中打电话了。

终于找到了一个完美的解决方案,我想和大家分享一下。

假设我们同时支持音频/视频。

  1. Init CXProviderConfiguration. 让providerConfiguration = CXProviderConfiguration(localizedName:"yourConfigName") providerConfiguration.supportsVideo = supportsVideo providerConfiguration.supportedHandleTypes = .generic,.phoneNumber,.emailAddress //选择您自己的supportedHandleTypes。
  2. 报告来电时不包括remoteHandle。 让update = CXCallUpdate() // Set hasVideo在incomingCall屏幕上显示正确的类型。update.hasVideo = supportsVideo // remoteHandle,以便禁用FaceTime按钮// update.remoteHandle =CXHandle(类型:.generic,value: yourHandle)
  3. 重要!在结束调用时以func provider(_ provider: CXProvider, perform action: CXEndCallAction)委托更新remoteHandle。

排除remoteHandle时,reportIncomingCall将失去从系统调用历史调用的能力。但是您可以在结束调用之前更新调用并设置它。

代码语言:javascript
复制
 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()
} 
票数 8
EN

Stack Overflow用户

发布于 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按钮将被启用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41245638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档