Проблема с идентификацией идентификатора вызывающего абонента при использовании расширения каталога вызовов - PullRequest
0 голосов
/ 18 мая 2018

Я пробовал многие решения для расширения CallKit, чтобы показать идентификатор звонящего.

Шаги:

  1. Добавление расширения каталога вызовов в мой проект.
  2. Установитевещи developer.apple.com и группы приложений (для использования userDefaults)
  3. Реализация кода.(Для тестирования используется как массив телефонных номеров, который хранится в userDefaults, так и статический номер)

  4. Разрешить моему приложению в настройках устройства для идентификации и блокировки вызовов

    private func addAllIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
        guard let (phoneNumbersToIdentify, phoneNumberIdentificationLabels) = retrievePhoneNumbersToIdentifyAndLabels() else {
            NSLog("Unable to retrieve phone numbers to identify and their labels")
            let error = NSError(domain: "CallDirectoryHandler", code: 2, userInfo: nil)
            context.cancelRequest(withError: error)
            return
        }
    
        for (phoneNumber, label) in zip(phoneNumbersToIdentify, phoneNumberIdentificationLabels) {
            context.addIdentificationEntry(withNextSequentialPhoneNumber: CXCallDirectoryPhoneNumber(phoneNumber)!, label: label)
        }
    }
    

Для проверки статических чисел:

private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [String], labels: [String])? {
    // retrieve list of phone numbers to identify, and their labels
    return (["EXAMPLE_NUMBER"], ["EXAMPLE_NAME"])
}

Для реальной жизни:

    private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [String], labels: [String])? {
    // retrieve list of phone numbers to identify, and their labels
    var numbers = [String]()
    var names = [String]()

    let sharedDefaults = UserDefaults.init(suiteName: "group.EXTENSION_NAME")



    numbers = sharedDefaults?.array(forKey: "contactsPhoneNumbers") as! [String]
    names = sharedDefaults?.array(forKey: "contactsNames") as! [String]

    return (numbers, names)
}

Но это не сработало.Когда я звоню себе с номера, который реализован в функции addAllIdentificationPhoneNumbers , я вижу только номер телефона и название страны.Нужно ли добавлять какой-либо код в AppDelegate или где-то еще?Я имею в виду входящий звонок должен быть обработан в основном приложении?Вы можете мне помочь?

...