Фоновое обновление не может прочитать токен из 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 для фона
