bloquear números de telefone no kit de chamadas apresenta alguns erros
Estou tentando adicionar um recurso de número de telefone de bloqueio ao meu aplicativo e ocorreu um erro e meu problema foi resolvido em Esta pergunta que eu fiz. pessoa que resolveu o meu problema lá também me orientou que eu precisava usar o aplicativo de grupo para compartilhar meus dados principais (eu armazeno os números de telefone aqui) com o Diretório de chamada
o código abaixo está no aplicativo principal (bloqueando o viewController)
@IBAction func BtnAddA(_ sender: Any) {
if !(EntPhonenumber.text?.isEmpty)!
{
let blackedPhonenumbers_CoreData = BlockedPhoneNumbers(context: PersistanceService.context)
blackedPhonenumbers_CoreData.phoneNumber = Int64.init(EntPhonenumber.text!)!
PersistanceService.saveContext()
getCoreData()
TableView.reloadData()
CXCallDirectoryManager.sharedInstance.reloadExtension(withIdentifier: "MY CALL DIRECTORY BUNDLE ID") { (err) in
if let error = err
{
print("we got some error")
print("@\(error)")
print("==\(error.localizedDescription)")
}
else
{
print("good to go")
}
}
}
}
E eu tenhoUsou este linkara compartilhar meus dados principais com meu diretório de chamada
E o código abaixo mostra o manipulador do diretório de chamadas:
class CallDirectoryHandler: CXCallDirectoryProvider {
var listPhoneNumbers:[CXCallDirectoryPhoneNumber] = []
let context = CoreDataStorage.mainQueueContext()
func fetchData() {
self.context.performAndWait{ () -> Void in
let FetchedData = NSManagedObject.findAllForEntity("BlockedPhoneNumbers", context: self.context)
if (FetchedData != nil) {
// self.fetchData = (FetchedData?.last as! BlockedPhoneNumbers)
listPhoneNumbers = FetchedData as! [CXCallDirectoryPhoneNumber]
}
else {
}
}
}
override func beginRequest(with context: CXCallDirectoryExtensionContext) {
context.delegate = self
// Check whether this is an "incremental" data request. If so, only provide the set of phone number blocking
// and identification entries which have been added or removed since the last time this extension's data was loaded.
// But the extension must still be prepared to provide the full set of data at any time, so add all blocking
// and identification phone numbers if the request is not incremental.
if context.isIncremental {
addOrRemoveIncrementalBlockingPhoneNumbers(to: context)
fetchData()
addOrRemoveIncrementalIdentificationPhoneNumbers(to: context)
} else {
addAllBlockingPhoneNumbers(to: context)
fetchData()
addAllIdentificationPhoneNumbers(to: context)
}
context.completeRequest()
}
private func addAllBlockingPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
// Retrieve all phone numbers to block from data store. For optimal performance and memory usage when there are many phone numbers,
// consider only loading a subset of numbers at a given time and using autorelease pool(s) to release objects allocated during each batch of numbers which are loaded.
let blockedPhoneNumbers: [CXCallDirectoryPhoneNumber] = listPhoneNumbers//[ phone Numbers here with country code! ]
for phoneNumber in blockedPhoneNumbers.sorted(by: <) {
context.addBlockingEntry(withNextSequentialPhoneNumber: phoneNumber)
}
context.completeRequest()
}
}
Sempre que pressiono o botão no bloqueio do VC, recebo um erro que diz:
@ Domínio do erro = com.apple.CallKit.error.calldirectorymanager Code = 0 "(null)" == A operação não pôde ser concluída. (erro com.apple.CallKit.error.calldirectorymanager 0.)
e às vezes
@ Domínio do erro = Código NSCocoaErrorDomain = 4097 "conexão ao serviço chamado ARWD.whoIsThis.Call-Directory.apple-extension-service" UserInfo = {NSDebugDescription = conexão ao serviço chamado ARWD.whoIsThis.Call-Directory.apple-extension-service } == Não foi possível se comunicar com um aplicativo auxiliar.
alguém sabe o que estou fazendo de errado e qual é a solução