Существует ли свойство «uniqueID» для контактов адресной книги?

Я делаю игру с участием контактов пользователя, но вам нужен способ однозначно идентифицировать каждого контакта. Это связано с тем, что пользователь может легко изменить имя, номер телефона или другое свойство данного контакта. Есть ли способ сделать это?

Вы можете использовать ABRecordGetRecordID() чтобы получить уникальный идентификатор записи. Он возвращает ABRecordID который является typedef для int32_t .

ABRecordGetRecordID () – это API, который вы можете использовать. Тем не менее, в документации Apple содержатся некоторые примечательные моменты об ABRecordID, возвращенные этим API.

Каждая запись в базе данных адресной книги имеет уникальный идентификатор записи. Этот идентификатор всегда относится к одной и той же записи, если только эта запись не удалена или данные не сбрасываются. Идентификаторы записи могут быть безопасно переданы между потоками. Они не могут оставаться неизменными на всех устройствах.

Предлагаемый метод в соответствии с рекомендациями Apple

Рекомендуемый способ сохранить долгосрочную ссылку на конкретную запись – сохранить в дополнение к идентификатору первое и последнее имя или хэш первого и последнего имени. Когда вы просматриваете запись по идентификатору, сравните имя записи с вашим сохраненным именем. Если они не совпадают, используйте сохраненное имя, чтобы найти запись, и сохраните новый идентификатор для записи.

В моем приложении я также проверяю дату создания контакта, так как имя пользователя ABRecordID могло быть изменено пользователем. Дата создания контакта НЕ изменяется при перезагрузке устройства.

Хотя я вставлял большую часть контента здесь, он всегда советовал прочитать документацию

Interesting Posts
Давайте будем гением компьютера.