我有一个正在开发的应用程序,我想使用CallKit的呼叫目录扩展来存储几千个电话号码.
我感到困惑的是,扩展如何以及何时被调用?每次打电话都不会发生这种情况.是否会在应用程序启动时发生?
我问的原因是,我不想在我的应用程序中保留数千个电话号码.我不希望用户看到这些电话号码(除非他们接到其中一个电话).所以,我想要做的是使用Extension一次保存电话号码,从Web服务加载号码,但只是定期.
谢谢!
在我的iOS应用程序中,我使用CallKit和PushKit进行VOIP调用.通过使用CallKit,我能够显示本机调用ui和一切正常,但我需要显示本地调用UI与调用者图像.这该怎么做?
Image1在接收方没有来电图像"我的应用目前表现得像这样"
我已经在我的 voip 应用程序中实现了呼叫工具包,我在其中生成传入或传出呼叫的呼叫日志(在最近的电话选项卡上可见)。当我点击通话记录时,它会打开我的应用程序。我已经覆盖了UIApplication委托方法来获取处理程序。
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
Run Code Online (Sandbox Code Playgroud)
但我无法在NSUserActivity. 如何在我的应用程序中获取通话记录信息?
任何帮助非常感谢。谢谢!
当来电呼叫到达时,是否有可能显示自定义来电屏幕的功能,就像真正的来电应用程序一样.
我已经提到了这个,这说不可能.
我想知道怎么truecaller表现出来custom view.任何有关相同的想法将不胜感激.谢谢
我正在开发一个带有被阻止号码数据库的应用程序。在我的beginRequest方法中,我正在异步连接到我的在线数据库并调用context.completeRequest()完成块。这个方法什么时候调用?Apple 文档对我来说不清楚 - 可以多次调用吗?主要原因是使设备中被阻止的号码列表与我的数据库保持同步。
所以问题:
CallKit 目录处理程序中是否提供异步请求?
beginRequest方法是否被多次调用?
如何在我的应用程序之外创建像弹出窗口这样的扩展程序,以便在不进入我的应用程序的情况下报告垃圾邮件?就像这里的第三个屏幕截图。
我在 Objective-C 应用程序中使用 CallKit。
我可以使用 CallKit 拨打电话。如果有第二个电话打进来,我成功地将其设置为保留。当我结束第二个通话时,
- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action
Run Code Online (Sandbox Code Playgroud)
和
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call
Run Code Online (Sandbox Code Playgroud)
方法确实会被调用。
但是
- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action
Run Code Online (Sandbox Code Playgroud)
方法不会被自动调用。
我是否必须手动触发它,例如通过类似的方法
- (void)performHoldCallActionWithUUID:(NSUUID *)uuid onHold:(BOOL)onHold {
//...
CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:uuid onHold:onHold];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdCallAction];
[self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
//...
}];
}
Run Code Online (Sandbox Code Playgroud)
或者有没有办法让提供者在用户结束第二个通话时“自动”调用它?
谢谢。
我在我的应用程序中使用callkit和Pushkit。使用 callkit 后,当我的应用程序进入后台时,即使我已断开呼叫,屏幕顶部也会显示红色视图。
如何以编程方式删除此顶部视图。
我正在断开电话。使用此链接
我正在开发 CallKit 应用程序,我遇到了一个问题,在 CallKit 屏幕上“交换”呼叫时,呼叫保持无法重新启动音频,直到用户返回应用程序内呼叫屏幕。我可以通过更新绕过这个:
supportsHolding = false
Run Code Online (Sandbox Code Playgroud)
但是我可以解决这个问题,例如whatsapp可以正确地做到这一点!
ps 我正在使用 webrtc 打电话!
谢谢!
编辑:
这是提供者的代码:
public func provider(_ provider: CXProvider, perform action: CXSetHeldCallAction) {
guard let call = conductor!.callWithUUID(uuid: action.callUUID) else {
WebRtcConductor.debug("\(self.TAG) failed to perform HeldAction: uuid: \(action.uuid), calluiid: \(action.callUUID)")
action.fail()
return
}
setIsHeld(call: call, isHeld: action.isOnHold)
action.fulfill()
}
Run Code Online (Sandbox Code Playgroud)
setIsHeld 函数只需执行以下操作:
audioTrack.isEnabled = enabled
Run Code Online (Sandbox Code Playgroud)
如果我使用 callkit 屏幕的“静音”按钮,一切正常,但是如果我有 2 个活动呼叫,当我从 webrtc 呼叫滑动到正常呼叫时,会调用 CXSetHeldCallAction 并且音轨被禁用,如果我再次滑动到 webrtc 呼叫,音轨已启用,但我什么也没听到,如果我返回主应用程序屏幕,音频又可以正常工作了!
context.addIdentificationEntry(withNextSequentialPhoneNumber: contact.number, label: contact.contactLabel)\n该应用程序的想法是将大约 50.000 个联系人添加到 CallKit 目录中,但是当我尝试在方法中添加它们时,beginRequest(with context: CXCallDirectoryExtensionContext)我经常会收到 com.apple.CallKit.error.calldirectorymanager 错误 2 或一些奇怪的 sqlite3 错误:
sqlite3_step for query \'INSERT INTO PhoneNumberIdentificationEntry \n(extension_id, phone_number_id, label_id) VALUES (?, (SELECT id \nFROM PhoneNumber WHERE (number = ?)), (SELECT id FROM Label WHERE \n(localized_label = ?))), \n\xe2\x80\xa6\n(SELECT id FROM Label WHERE (localized_label = ?)))\' returned 19 \n(2067) errorMessage \'UNIQUE constraint failed: \nPhoneNumberIdentificationEntry.extension_id, \nPhoneNumberIdentificationEntry.phone_number_id, \nPhoneNumberIdentificationEntry.label_id\'\nRun Code Online (Sandbox Code Playgroud)\n\n一般来说,我从服务器获取联系人并尝试使它们保持同步 - 因此,我使用 Realm 将它们保存在本地。有谁知道如何处理此类错误?
\n