Как проверить, зарегистрированы ли члены моего списка контактов в моем приложении, как это делает WhatsApp? - PullRequest
0 голосов
/ 14 сентября 2018

Я создаю приложение чата, для которого мне нужно проверить каждого из участников моего списка контактов, зарегистрированы ли они в моем приложении, и показать список зарегистрированных участников в моем приложении. В настоящее время я звоню API, чтобы проверить каждый номер один за другим. При 800 контактах он вызывается 800 раз. Я знаю, что это не лучший способ сделать это. Итак, кто-нибудь может мне помочь и предложить мне сделать это лучше?

Ниже мой код:

 func createContactNumbersArray() {
    for i in 0...self.objects.count-1 {
        let contact:CNContact! = self.objects[i]
        if contact.phoneNumbers.count > 0 {
            for j in 0...contact.phoneNumbers.count-1 {
                print((contact.phoneNumbers[j].value).value(forKey: "digits")!)
                let tappedContactMobileNumber = (contact.phoneNumbers[j].value).value(forKey: "digits")
                let phoneNo = self.separateISDCodeMobileNo(mobileNo:tappedContactMobileNumber as! String)
                contactNumbersArray.append(phoneNo.1)
            }
        }
    }
    callGetAppUserDetailService(mobileNumber: self.contactNumbersArray[currentIndex] as! String)
}

Я делаю весь этот процесс в фоновом режиме и обновляю список участников впереди в текущем сценарии. Я хочу сделать весь процесс так же быстро, как WhatsApp.

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

На самом деле, вы можете сделать немного на клиенте. Обычный способ: сервер предоставляет интерфейс, который поддерживает проверку массива телефонных номеров и возвращает номера телефонов, зарегистрированных на сервере.

0 голосов
/ 14 сентября 2018

Нет способа сделать это без серверных модификаций. Поэтому вам нужно тесно сотрудничать с вашим внутренним инженером и создать для этого API.

Вот совет, как вы можете создать этот API:

Чтобы иметь 2 API:

1) Загрузите всю адресную книгу пользователя на сервер за один запрос, например:

let addressBook = NSMutableOrderedSet()

let contact1 = AddressBookContact()
contact1.name = "Jony Ive"
contact1.phone = "1-800-300-2000"
addressBook.add(contact1)

let contact2 = AddressBookContact()
contact2.name = "Steve Why"
contact2.phone = "412739123123"
addressBook.add(contact2)

let deviceUDID = nil

Request.uploadAddressBook(withUdid: deviceUDID, addressBook: addressBook, force: false, successBlock: { (updates) in

}) { (error) in

}

2) В качестве следующего шага - получить список уже зарегистрированных пользователей с телефонами из вашей адресной книги, примерно так:

let deviceUDID = nil

Request.registeredUsersFromAddressBook(withUdid: nil, successBlock: { (users) in

}) { (error) in

}

так что теперь вы можете показать его в пользовательском интерфейсе

Нашел этот пример здесь https://developers.connectycube.com/ios/address-book

0 голосов
/ 14 сентября 2018

Я думаю, вам нужно сохранить номер телефона пользователя в вашей базе данных, когда пользователь регистрирует ваше приложение. Затем вы можете узнать контакты, которые уже использовали ваше приложение чата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...