2016-11-07 128 views
2

IM在我的iOS项目实施callKit,使用IM的callDirectory扩展阻断并标识号,块体部作品完美,唯一的问题是,当我尝试添加号码来标识:错误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 ([""], [""]) 

} 

当我尝试relaod它失败,错误的延伸:Error Domain=com.apple.CallKit.error.calldirectorymanager Code=3 "(null)"

与一些测试我计算出,通过用1个元件EXP的阵列替换formattedIdent["Spamm Caller"]扩展完美地工作并显示没有错误,但当我使用一个数组与多个元素山姆出现错误。 即时我做错了什么?由于事先

+0

我正在开发应用程序时遇到此错误,而请勿打扰在我的iOS上处于活动状态。 – matusalem

+0

@matusalem我可以在iOS应用程序中使用Callkit激活请勿打扰....? – Pramod

+0

@pramod我认为它不包含在Callkit SDK中 – matusalem

回答

1

从CallDirectory的错误码是在头<CallKit/CXError.h>,其包括定义为:当提供的电话号码(多个)乱序返回

CXErrorCodeCallDirectoryManagerErrorEntriesOutOfOrder = 3, 

这种特殊误差。数字必须以数字升序提供。

+0

谢谢,我很确定我提供的数字是有序的! –

+0

请检查此问题http://stackoverflow.com/questions/40837561/how-to-use-call-directory-extension-to-identify-a-incoming-call/40838374#40838374 –

+1

有一次,我曾与数字作为字符串并对字符串进行排序。但是,这并不奏效,因为这些数字可能会有不同的长度。一旦我开始将它们作为NSNumbers(用于分类),一切都很好。另外一定要删除重复的号码。 –

0

即使我知道我的号码已正确排序,但我得到了错误3。对我来说修复的是在CallDirectoryHandler文件中的私有函数中注释示例代码。

我只在这个时候使用了调用者ID,但是如果我也使用了阻塞,那么我也会摆脱那个示例代码。

screen grab - commented out code in red

0

我有类似的问题,但我做的错误是,错误代码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和其他选项增加一个。这是在您的扩展程序尝试处理截至此日期的新数据时可以收到的错误的完整列表。