2016-11-07 7 views
2

イムでのエラー、イムは、ブロック部分は完璧に動作し、私が識別される番号を追加しようとすると、唯一の問題は、次のとおりです。私のiOSプロジェクトでcallKitを実装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しよう:私は、1つの要素のEXPの配列とformattedIdentを交換していることを考え出したいくつかのテストでError Domain=com.apple.CallKit.error.calldirectorymanager Code=3 "(null)"

を:["Spamm Caller"]拡張子は完璧に動作し、エラーを示していないが、複数の要素を持つ配列を使用する場合は、sam eエラーが表示されます。 私は何か間違っているのですか?提供される電話番号(複数可)は順不同である場合

CXErrorCodeCallDirectoryManagerErrorEntriesOutOfOrder = 3, 

この特定のエラーが返される:予め

+0

私はiOS上でDo Not Disturbがアクティブである間にアプリを開発していたときにこのエラーが発生しました。 – matusalem

+0

@matusalem Callkitを使用しているiOSアプリでDo not Disturbをアクティブにする方法...? – Pramod

+0

@pramod私はそれがCallkit SDKに含まれていないと思う – matusalem

答えて

1

のおかげではCallDirectoryからエラーコードを含むヘッダ<CallKit/CXError.h>で定義されています。数値は数値的に昇順で提供する必要があります。

+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

だから私はCXErrorsに掘っこの列挙型を発見した私は、同様の問題があったが、私がやった間違いは、エラーコード4としました。

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です。その他のオプションは1つ増えます。拡張機能がこの日付までに新しいデータを処理しようとしている間に受け取れるエラーの完全なリストです。

関連する問題