Можно ли создать файл .plist для конкретного устройства -iOS

Я храню некоторые данные в файле plist... и я понял, что ими можно поделиться. Есть ли способ сделать файлы .plist специфичными для устройства? Может UDID или еще что? Любые идеи будут высоко оценены ..


person user123    schedule 07.05.2013    source источник
comment
Вы создаете файл plist во время выполнения?   -  person Midhun MP    schedule 07.05.2013
comment
Да, я ... после покупки 1-го продукта.   -  person user123    schedule 07.05.2013


Ответы (2)


Если вы не хотите, чтобы другие видели содержимое ваших файлов .plist, вы можете зашифровать их с помощью iOS, предоставленной алгоритмы шифрования. Другим простым способом было бы хранение ваших конфиденциальных данных в связке ключей или NSUserDefaults без записи в файл, что было бы очень специфично для устройства. Удачи!

person Fahri Azimov    schedule 07.05.2013
comment
Спасибо за рекомендацию. Я храню информацию о купленных товарах. Даже если я зашифрую его, это не будет иметь большого значения, поскольку алгоритм дешифрования будет таким же в моем приложении. Кто-то может купить что-нибудь и легко поделиться файлом plist. Я не совсем уверен, что брелок подойдет для этой цели, но я обязательно это проверю. - person user123; 07.05.2013
comment
Да, тогда в вашем случае подойдет NSUserDefaults или брелок. - person Fahri Azimov; 07.05.2013
comment
И для каждого устройства вы можете использовать разные ключи для шифрования, такие как UDID, которые устарели, или уникальные строки, например, UUID. - person Fahri Azimov; 07.05.2013

UDID запрещен с 1 мая 2013 года.

Начиная с iOS 6, есть еще один метод, который называется identifierForVendor. Вы можете использовать этот метод для создания уникального идентификатора для вашего приложения на каждом устройстве iOS.

Вы можете получить это так:

NSString *idForApp = [[UIDevice currentDevice] identifierForVendor];

Сохраните свой plist с помощью файла idForApp. Это будет уникально.

идентификатор для поставщика

Буквенно-цифровая строка, которая однозначно идентифицирует устройство для поставщика приложения. (только для чтения)

@property(nonatomic, readonly, retain) NSUUID *identifierForVendor;

Обсуждение

Значение этого свойства одинаково для приложений одного и того же поставщика, работающих на одном устройстве. Различное значение возвращается для приложений на одном и том же устройстве от разных поставщиков, а также для приложений на разных устройствах независимо от поставщика.

Значение этого свойства может быть нулевым, если приложение работает в фоновом режиме до того, как пользователь разблокирует устройство в первый раз после перезапуска устройства. Если значение равно нулю, подождите и получите значение позже.

Значение этого свойства остается неизменным, пока приложение (или другое приложение от того же поставщика) установлено на устройстве iOS. Значение изменяется, когда пользователь удаляет все приложения этого поставщика с устройства, а затем переустанавливает одно или несколько из них. Поэтому, если ваше приложение хранит значение этого свойства в любом месте, вы должны изящно обрабатывать ситуации, когда идентификатор изменяется.

Доступность

Available in iOS 6.0 and later.

Объявлено в UIDevice.h

Справка :


Также вы можете использовать метод класса UUID класса NSUUID для создания уникального идентификатора.

NSUUID - UUID

person Midhun MP    schedule 07.05.2013
comment
Спасибо..identifierForVendor и uniqueIdentifier похоже возвращают разные результаты. Если кто-то покупает что-то на iOS 5, а потом обновляет ОС до 6+, то это не сработает. Я прав? - person user123; 07.05.2013
comment
@ user968173 Да. В iOS 6 уникальный идентификатор не работает. Итак, для iOS 5 используйте uniqueIdentifier и сохраните значение в NSUserDefaults. Или просто используйте класс NSUUID для создания уникального идентификатора и сохраните его в базе данных. - person Midhun MP; 07.05.2013