【问题标题】:Error in CallKit CallDirectory ExtensionCallKit CallDirectory 扩展中的错误
【发布时间】:2016-11-07 07:43:53
【问题描述】:

我在我的 iOS 项目中实现 callKit,我使用 callDirectory 扩展来阻止和识别数字,阻止部分完美地工作,唯一的问题是当我尝试添加要识别的数字时:

private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [String], labels: [String])? {
    // retrieve list of phone numbers to identify, and their labels
    interDefaults?.synchronize()
    if let numbers = interDefaults!.string(forKey: "ident-numbers"){
        if let identities = interDefaults!.string(forKey: "ident-identities"){
            let formattedNumbers = numbers.characters.split{$0 == "*"}.map(String.init)
            let formattedIdent = identities.characters.split{$0 == "*"}.map(String.init)
            return (formattedNumbers, formattedIdent)
        }
    }
    return ([""], [""])

}

当我尝试重新加载扩展时,它失败并出现错误:Error Domain=com.apple.CallKit.error.calldirectorymanager Code=3 "(null)"

通过一些测试,我发现通过将 formattedIdent 替换为 1 个元素的数组 EXP:["Spamm Caller"] 扩展工作完美并且没有显示错误,但是当我使用包含多个元素的数组时,同样的错误显示向上。 我做错了什么??提前致谢

【问题讨论】:

  • 我在开发应用程序时遇到此错误,而“请勿打扰”在我的 iOS 上处于活动状态。
  • @matusalem 如何使用 Callkit 在 iOS 应用程序中激活请勿打扰......?
  • @pramod 我认为它不包含在 Callkit SDK 中
  • @pramod 我认为它不包含在 Callkit SDK 中

标签: swift callkit


【解决方案1】:

我有类似的问题,但我犯的错误是错误代码 4。所以我在 CXErrors 中挖掘并找到了这个枚举。

public enum Code : Int {


        public typealias _ErrorType = CXErrorCodeCallDirectoryManagerError

        case unknown

        case noExtensionFound

        case loadingInterrupted

        case entriesOutOfOrder

        case duplicateEntries

        case maximumEntriesExceeded

        case extensionDisabled

        @available(iOS 10.3, *)
        case currentlyLoading

        @available(iOS 11.0, *)
        case unexpectedIncrementalRemoval
    }

所以基本上unknown == Code 0 和其他选项递增一。这是您的扩展程序尝试处理截至该日期的新数据时可能收到的错误的完整列表。

【讨论】:

    【解决方案2】:

    来自 CallDirectory 的错误代码在标题 <CallKit/CXError.h> 中定义,其中包括:

        CXErrorCodeCallDirectoryManagerErrorEntriesOutOfOrder = 3,
    

    当提供的电话号码有问题时,会返回此特定错误。数字必须按数字升序排列。

    【讨论】:

    • 谢谢,我很确定我提供的数字是有序的!
    • 有一次,我将数字作为字符串处理并对字符串进行排序。但是,这不起作用,因为数字可能是不同的长度。一旦我开始将它们用作 NSNumbers(用于排序),一切都很好。还要确保删除重复的数字。
    【解决方案3】:

    即使我知道我的号码排序正确,我仍然收到错误 3。为我解决的问题是注释掉 CallDirectoryHandler 文件中私有函数中的示例代码。

    我现在只使用呼叫者 ID,但如果我也使用阻塞,那么我也会删除该示例代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多