Я ищу стабильный (и совместимый с Apple) шаблон дизайна регистрации и аутентификации между устройством iphone и сервером. В идеале регистрация и аутентификация не должны включать пользователя и должны быть фоновыми.
На данный момент я нашел 3 примитива для выполнения компонентов этого:
- UDID
- UUID
- SBFormattedPhoneNumber
Метод UDID
[[UIDevice currentDevice] uniqueIdentifier]
where @property (nonatomic, readonly, retain) NSString *uniqueIdentifier
uniqueIdentifier - это строка, уникальная для каждого устройства на основе различных сведений об оборудовании. (Только для чтения)
Уникальный идентификатор устройства - это хэш-значение, состоящее из различных аппаратных идентификаторов, таких как серийный номер устройства. Он гарантированно уникален для каждого устройства, но не может быть публично привязан к учетной записи пользователя. Вы можете использовать его, например, для хранения рекордов игры на центральном сервере или для контроля доступа к зарегистрированным продуктам. Уникальный идентификатор устройства иногда называют его сокращенным UDID. Мы можем получить UDID из iTunes вручную для проверки
Не уверен, что означает " не может быть публично привязан к учетной записи пользователя" .
Метод UUID
NSString *uuid = nil;
CFUUID theUUID = CFUUIDCreate(kCFAllocatorDefault);
if (theUUID) {
uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID);
CFRelease(theUUID);
}
CFUUIDCreate создает объект универсального уникального идентификатора (UUID). Объект UUID отличается каждый раз, когда вызывается CFUUIDCreate. Поэтому нам нужно сгенерировать его при первом запуске, а затем сохранить его в соответствии с вашими предпочтениями, используя NSUserDefaults. Недостатком этого является то, что если приложение удаляется и переустанавливается или если устройство восстанавливается из резервной копии, вы потеряете сохраненный UUID, и вещи не будут распознаваться как с того же устройства.
SBFormattedPhoneNumber
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@”SBFormattedPhoneNumber”];
NSLog(@”Phone Number: %@”, num);
Число, возвращаемое этим фрагментом кода, является числом, которое установлено в iTunes для устройства. Если вы не вводили iPhone в iTunes при активации устройства или, возможно, [как в моем случае], если значением по умолчанию не был номер iPhone, и вы все равно нажали OK, так что iTunes не отображает номер телефона, когда ваш iPhone подключен, этот код возвратит пустую строку.
"В целях безопасности iPhone OS ограничивает приложение (включая его настройки и данные) уникальным местоположением в файловой системе. Это ограничение является частью функции безопасности, известной как" песочница "приложения. Песочница - это набор детальных элементов управления, ограничивающих доступ приложения к файлам, настройкам, сетевым ресурсам, оборудованию и т. д. "
Номер телефона устройства недоступен в контейнере вашего приложения. Вам нужно будет пересмотреть приложение, чтобы оно было доступно только для чтения в контейнере каталогов, и повторно отправить двоичный файл в iTunes Connect, чтобы приложение было повторно рассмотрено для App Store.
заранее благодарю за помощь.
Пеймана