Вступить в клуб →
сложнаявопросХранение данных: Core Data, Keychain и UserDefaults

Фоновое обновление не может прочитать токен из Keychain: errSecInteractionNotAllowed

let attributes: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrAccount as String: "accessToken",
    kSecValueData as String: tokenData,
]
SecItemAdd(attributes as CFDictionary, nil)

Приложение получает тихие пуши и в фоне синхронизирует сообщения. Ночью, когда телефон заблокирован, SecItemCopyMatching возвращает errSecInteractionNotAllowed, и синхронизация не работает. Днём всё в порядке. Как исправить?

  • Сохранять с kSecAttrAccessibleAfterFirstUnlock
  • Повторять чтение, пока не вернётся токен
  • Сохранять с kSecAttrAccessibleWhenUnlocked
  • Копировать токен в UserDefaults для фона

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела