CNContact уникален идентификатор между устройствата

Имам малък проблем с опитите за достъп до един и същ контакт между множество устройства. Целта ми е потребителят да избере контакт и да избере телефонен номер и имейл адрес, които след това да бъдат съхранени в база данни. Ако потребителят отвори приложението на друго устройство, бих искал да има избран същия контакт.

Надявах се да използвам CNContact.identifier за този случай, но изглежда, че това е идентификатор на конкретно устройство. Бих могъл да съхраня идентификатора за всяко устройство, но това ще изисква съвпадение на контактите на потребителя и това не изглежда идеално.

Не изглежда, че трябва да е трудно, но явно пропускам нещо. мисли?


person user7616911    schedule 11.02.2018    source източник
comment
Не можете да приемете, че даден потребител има едни и същи контакти на различни устройства.   -  person rmaddy    schedule 11.02.2018
comment
Прав си, трябва да се внимава, ако не стане. Но в случаите, когато контактът съществува и на двете места, би било хубаво да се въведат подробности.   -  person user7616911    schedule 11.02.2018
comment
Все още се търси решение на този проблем. Знам, че Apple не предоставя решение, така че е въпрос на най-добрия начин да пуснете свое собствено, докато не го направят. Въпреки че не се изисква потребителите да имат едни и същи CNContacts на всяко устройство, повечето от нас го правят. Всяко приложение, което осъществява достъп до CNContacts, не трябва да пречи на потребителя да има безпроблемен достъп до същия контакт на всички свои устройства, където го е синхронизирал.   -  person tkhelm    schedule 08.10.2020


Отговори (1)


Решението, което изглежда работи за мен, е, че съхранявам идентификаторите на контактите, идентификаторите на адреса, името на контакта и адреса в моята база данни. След това предприемам подход с няколко стъпки.

Търсене на контакт:
Опитвам се да намеря контакта въз основа на съхранените contact.identifiers, които вече съм запазил.

Ако намеря 1 контакт (съвпадащ идентификатор) =› Страхотно! След това се опитвам да съпоставя намерения контакт с моя адрес.идентификатори. Още веднъж, ако намеря само 1 съвпадение, ние сме супер! Ако не, отивам да се опитам да намеря адрес (вижте по-долу)

Ако не намеря контакти (няма съответстващи идентификатори) =› Опитвам се да намеря контакта въз основа на името на контакта, което бях запазил преди това. Ако намеря съвпадение, отивам да се опитам да намеря съвпадащия адрес (вижте по-долу).

Търсене на адрес:
Тъй като в този момент имам запис в CNContact, който смятам, че съвпада, разглеждам всеки от техните пощенски адреси и го сравнявам с улица/град/щат/пощенски код/ държава, която съм съхранил в моята база данни.

Ако намерим това перфектно съвпадение, актуализирам своите идентификатори, за да включа новите идентификатори на адрес/контакт

Ако в крайна сметка не намерим съвпадение, давам на потребителя опция ръчно да избере контакта/адреса от своето устройство.

person user7616911    schedule 08.10.2020