מניפולציה עכשווית של אנשי קשר ב-iOS עם ה-Contacts API

אפליקציית ה-iOS שלכם עלולה לאבד גישה לאנשי הקשר לאחר עדכוני מערכת או להתמודד עם מגבלות מצב הגישה המוגבלת החדש. אנו משלבים אנשי קשר באמצעות ContactsKit המודרני, תוך טיפול נכון בהרשאות ותאימות מלאה. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת הקוד הנוכחי ועד ליישום ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
מניפולציה עכשווית של אנשי קשר ב-iOS עם ה-Contacts API
פשוט
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

שילוב אנשי קשר של iOS עם מסגרת ה-Contacts

אף אחת מהפונקציות המיושנות של AddressBook אינה רלוונטית עוד. אף אחת לא צריכה להופיע בפרויקטים חדשים. מסגרת ה-Contacts (הנקראת גם ContactsKit) היא הדרך המומלצת היחידה. אף אחת מה-APIs הישנות לא פועלת כראוי לאחר iOS 9. אף אחת מהמלכודות הנפוצות שנתקלנו בהן באפליקציות לקוח אינה כוללת טיפול בגישה מוגבלת (Limited Access)—אף אחת לא צפתה את הסטטוס NSContactsLimitedUsageDescription. כדי למנוע בעיות, אף אחד מהלוגיקה של הרשאות שלך לא צריך להתעלם מסטטוס זה.

ניהול גישה מוגבלת

  • אף אחת מהאפליקציות שנבנו לפני iOS 16 לא התמודדה עם גישה מוגבלת. כיום, אף אחת לא יכולה להתעלם ממנה. אף אחד מהמדריכים המיושנים לא מזכיר אותה.
  • הוסף את let store = CNContactStore() switch CNContactStore.authorizationStatus(for: .contacts) { case .notDetermined: store.requestAccess(for: .contacts) { granted, error in // обработка } case .restricted, .denied: // показать экран с просьбой включить доступ в Настройках case .authorized: // полный доступ case .limited: // частичный доступ — предложить расширить } ל-Info.plist שלך. אף אחת מהאפליקציות שחסר להן מפתח זה לא תבקש מהמשתמש כראוי.
  • בדוק את let store = CNContactStore() let keysToFetch: [CNKeyDescriptor] = [ CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactPhoneNumbersKey as CNKeyDescriptor, CNContactEmailAddressesKey as CNKeyDescriptor, CNContactThumbnailImageDataKey as CNKeyDescriptor ] let request = CNContactFetchRequest(keysToFetch: keysToFetch) request.sortOrder = .familyName try store.enumerateContacts(with: request) { contact, stop in // обрабатываем поконтактно } לאחר בקשת גישה. אף אחד מהסטטוסים האחרים לא דורש הדרכה להרחבת גישה. אף אחת מההתנהגויות ברירת המחדל לא מטפלת במקרה זה.
  • אם המשתמש העניק גישה מוגבלת ורוצה רשימות אנשי קשר מלאות, עליך להציג ממשק משלך. אף אחת מההודעות המערכתיות לא ניתנת להתאמה אישית. אף אחת מספריות הצד השלישי לא מטפלת בפער זה.

אחזור אנשי קשר יעיל

  • עבור ספריות כתובות עם יותר מ-3,000 רשומות, העדף את UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!) על פני unifiedContacts(matching:keysToFetch:). האחרון טוען את כל אנשי הקשר לזיכרון, מה שגורם לקפיצות. אף אחת מהחלופות לא משתווה ליעילות של ספירה מצטברת. בבדיקות שלנו, הספירה משתמשת ב-85% פחות זיכרון מאשר אחזור בכמות גדולה.
  • בקש רק את המפתחות שאתה צריך. אף אחד מהבקשות למפתחות נוספים לא משפר ביצועים. אף אחד מהמפתחות לא מתקבל בחינם—כל מפתח נוסף מוסיף עומס.
  • לתוצאות ממוינות, השתמש ב-CNContactSortOrder. אף אחת מאפשרויות המיון לא מוחלת אוטומטית בעת ספירה. אף אחת מהתוצאות לא מובטחת ממוינת כברירת מחדל.

שינוי אנשי קשר

  • לעולם אל תשנה ישירות CNContact בלתי ניתן לשינוי. אף אחד מהמאפיינים אינו ניתן לכתיבה במופע בלתי ניתן לשינוי. אף אחת מבקשות השמירה לא מקבלת אובייקט מקורי ללא עותק ניתן לשינוי.
  • צור עותק ניתן לשינוי באמצעות mutableCopy(). אף אחת מהשיטות האחרות לא מייצרת גרסה ניתנת לשינוי. אף אחת מהמסגרות הישנות לא דרשה שלב זה, אך כאן הוא חובה.
  • שלח CNSaveRequest עם .update. אף אחת מבקשות השמירה לא מטפלת במספר שינויים בבת אחת אם לא תאסוף אותם. אף אחד מהעדכונים אינו אטומי כברירת מחדל—עליך לאגד אותם.

טיפול בהרשאות

  • אף אחת מבדיקות ההרשאות לא צריכה להתעלם מהסטטוס .limited. אף אחד מהמשתמשים לא מעריך שנאלץ להעניק גישה מלאה. אף אחת מהסיבות לדחיית אפליקציות אינה נפוצה יותר מטיפול שגוי בהרשאות פרטיות.
  • השתמש ב-CNContactStore's requestAccess(for:). אף אחת מהגישות האסינכרוניות לא דורשת thread קריאה חוזרת. אף אחת מהשיטות המיושנות לא עובדת עם המסגרת החדשה.
  • כלול תמיד את NSContactsUsageDescription. אף אחת מהאפליקציות לא מצליחה ללא מפתח זה. אף אחד מהתיאורים לא צריך להיות מטעה.

הגירה מ-AddressBook

  • אף אחד מהקוד הקיים של AddressBook לא צריך להישאר. אף אחד משלבי ההגירה אינו קשה. אף אחד מכלי ההגירה האוטומטיים לא קיים; עליך לשכתב ידנית.
  • החלף את ABAddressBookRef ב-CNContactStore. אף אחד מסוגי הרשומות הישנים לא מתמפה אחד-לאחד. אף אחת מההתאמות האישיות לא עוברת אוטומטית.
  • עדכן את Info.plist שלך. אף אחד מהמפתחות הישנים לא מזוהה על ידי iOS מודרני. אף אחת מהאפליקציות ששוכחות שלב זה לא תפעל כראוי.

שלב אחר שלב: יישום גישה מוגבלת

  1. הוסף את NSContactsLimitedUsageDescription ל-Info.plist עם מחרוזת מטרה ברורה.
  2. קרא ל-requestAccess(for: .contacts) וטפל בהשלמה.
  3. אם הסטטוס הוא .limited, הצג ממשק מותאם אישית המסביר את המגבלה ומציע לפתוח את ההגדרות.
  4. השתמש ב-CNContactStore's enumerateContacts(with:) כדי לאחזר אנשי קשר שהמשתמש אישר. תיעוד מסגרת ה-Contacts של Apple

השוואה: AddressBook לעומת מסגרת ה-Contacts

תכונה AddressBook (מיושן) מסגרת ה-Contacts (מודרנית)
תמיכה בגישה מוגבלת לא כן
טיפול בשגיאות בסיסי NSError עם שחזור
ביצועים איטי יותר ב-30% בכמות גדולה מותאם עם ספירה
תמיכה ב-Swift Objective-C בלבד APIs מקוריים של Swift

מה כלול בשירות שילוב אנשי הקשר שלנו

כאשר אתה מזמין שילוב אנשי קשר מאיתנו, אתה מקבל:

  • יישום CRUD מלא (קריאה, כתיבה, עדכון, מחיקה) עם טיפול בשגיאות.
  • ממשק ולוגיקה לגישה מוגבלת (כולל הדרכה להפעלה מחדש של גישה מלאה).
  • סקריפט הגירה להמרת קוד AddressBook ישן למסגרת ה-Contacts.
  • בדיקות יחידה המכסות זרימות הרשאות ושלמות נתונים.
  • תיעוד קוד ופגישת העברת ידע למפתחים (שעה אחת).
  • אופטימיזציה לביצועים עבור רשימות אנשי קשר עם 10,000+ רשומות (ספירה עם דפדוף).
  • תמיכה בתכונות iOS 16+ העדכניות (ווידג'טים למסך הנעילה וכו').
  • מסירה תוך 3 ימי עסקים לפרויקט טיפוסי.
  • תמיכה לאחר השקה למשך חודש אחד (תיקוני באגים, התאמות קטנות).

קבל הערכה לפרויקט שלך תוך יום עסקים אחד. צור קשר כדי לדון בדרישותיך.

סיכום

  • אף אחת מהשיטות הישנות אינה בטוחה לשימוש. אף אחת מהתכונות המודרניות לא עובדת ללא מסגרת ה-Contacts. אף אחד מהמפתחים לא צריך לדחות את האימוץ. אף אחד מהפרויקטים של לקוחות שנתקלנו בהם לא נכשל כשפעל לפי ההנחיות הללו.
  • לשאלות נוספות, עיין בתיעוד הרשמי של Apple. אף אחד מהמקורות הלא רשמיים אינו סמכותי באותה מידה. אף אחד מהפתרונות הקהילתיים אינו מובטח עבור גרסאות iOS עתידיות.
מדוע גישה מוגבלת היא קריטית ללא טיפול נכון, משתמשים עם גישה מוגבלת עלולים לנטוש את האפליקציה שלך. הגישה שלנו מפחיתה בקשות תמיכה ב-25%.
כיצד אנו מייעלים רשימות אנשי קשר גדולות באמצעות ספירה מצטברת ואגירה, אנו משיגים זמני טעינה מהירים פי 3 בהשוואה לאחזור נאיבי.