2016-11-07 123 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和其他選項增加一個。這是在您的擴展程序嘗試處理截至此日期的新數據時可以收到的錯誤的完整列表。