Как программировать обнаружение, если iCloud включен на пользовательском устройстве, когда используется только NSUbiquitousKeyValueStore?
Я использую NSUbiquitousKeyValueStore
для синхронизации некоторых данных предпочтений с iCloud. Я обнаружил, что если пользователь отключил элемент "Документ и данные" iCloud в "Настройка приложения", NSUbiquitousKeyValueStore
не сможет синхронизировать свои данные с iCloud. Итак, я хочу сначала проверить, включен ли этот параметр. После googling я нашел этот фрагмент кода:
NSURL *ubiq = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil];
NSLog(@"url=%@",ubiq);
if (!ubiq) {
UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[av show];
return;
}
Я хочу знать, является ли это единственным способом обнаружения, даже если я просто использую NSUbiquitousKeyValueStore
(а не хранилище документов iCloud). Есть ли лучшая альтернатива?
Ответы
Ответ 1
В принципе, NSUbiquitousKeyValueStore
всегда доступен, даже если у пользователя нет учетной записи iCloud (в этом случае NSUbiquitousKeyValueStore
- это просто локальное хранилище). Поэтому в целом вам не нужно спрашивать себя или пользователя, есть ли настроенная учетная запись iCloud.
Если вы действительно хотите точно знать, что в iOS 5 единственное решение - это тот, который вы упоминаете.
Ответ 2
Я не знаю, обновлены ли документы, но Apple теперь говорит:
Чтобы определить, доступен ли iCloud, особенно во время запуска, проверьте значение свойства ubiquityIdentityToken вместо
Смотрите NSFileManager для ubiquityIdentityToken
и URLForUbiquityContainerIdentifier
.
Обратите также внимание на то, что Apple говорит, что URLForUbiquityContainerIdentifier
может быть относительно медленным, а проверка ubiquityIdentityToken
относительно быстрой.
Это для iOS6 и выше.