iOS брелок syn c проблема между двумя устройствами - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь решить эту проблему уже несколько дней. В настоящее время я сохраняю идентификатор пользователя и идентификатор устройства в связке ключей, поэтому, если пользователь устанавливает приложение на другое устройство, он / она может получить доступ к данным из нашего бэкэнда без проблем.

Я занимаюсь разработкой на iPhone, а вторым устройством является iPad. Когда я впервые протестировал синхронизированные ключи, iPad загрузил их, как и ожидалось, и все работало нормально. Но затем синхронизация остановилась, когда я начал удалять или обновлять ключи.

В настоящее время оба устройства не могут получать обновления от Apple.

Я думал, что это проблема инфраструктуры. Я использовал KeychainSwift , потому что это проще. Поэтому я изменил его на KeychainAccess . В обеих платформах состояние одинаковое, синхронизация между устройствами отсутствует.

Я попытался отключить / включить связку ключей для iCloud на обоих устройствах, выйти и снова, сбросить настройки и войти в систему. Кажется, ничего не работает. Я не могу продолжать работу над приложением.

Вот как я инициализирую использование KeychainAccess:

  // Reading
  static func read (key: SettingKey, syncronizable: Bool = true) -> Data? {
    let keychain = Keychain(service: Settings.service,
                            accessGroup: Settings.accessGroup)
      .accessibility(.afterFirstUnlock)
      .synchronizable(syncronizable)

    do {
      return try keychain.getData(key.rawValue)
    } catch (let error) {
      appLog("? Keychain error: \(error.localizedDescription)")
    }

    return nil
  }

  // Writing
  static func write (key: SettingKey, value: Data, syncronizable: Bool = true) -> Void {
    let keychain = Keychain(service: Settings.service,
                            accessGroup: Settings.accessGroup)
      .accessibility(.afterFirstUnlock)
      .synchronizable(syncronizable)

    keychain[data: key.rawValue] = value
  }
  • SettingKey - это строковое перечисление.
  • Settings.service и Settings.accessGroup - это постоянные c константы, определенные как строки.
  • appLog - метод отладочной печати. ​​

Я застрял с этой проблемой. Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...