Стратегии реализации определенных функций приложения

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

Стратегии конфиденциальности

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

Защита данных Используя дисковое шифрование

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

Защита данных доступна на большинстве устройств на iOS и подвергается следующим требованиям:

  • Файловая система на устройстве пользователя должна поддерживать защиту данных. Большинство устройств поддерживает это поведение.

  • У пользователя должен быть активный набор блокировки кода доступа для устройства.

Для защиты файла Вы добавляете атрибут к файлу, указывающему желаемый уровень защиты. Добавьте этот атрибут с помощью любого NSData класс или NSFileManager класс. При записи новых файлов можно использовать writeToFile:options:error: метод NSData с надлежащей защитой оценивают как одна из опций записи. Для существующих файлов можно использовать setAttributes:ofItemAtPath:error: метод NSFileManager установить или изменить значение NSFileProtectionKey. При использовании этих методов укажите один из следующих уровней защиты для файла:

  • Когда устройство заблокировано, никакая защита — файл шифруется, но не защищен кодом доступа и доступен. Укажите NSDataWritingFileProtectionNone опция (NSData) или NSFileProtectionNone атрибут (NSFileManager).

  • В то время как устройство заблокировано, завершенный — файл шифруется и недоступен. Укажите NSDataWritingFileProtectionComplete опция (NSData) или NSFileProtectionComplete атрибут (NSFileManager).

  • Завершенный, если уже не открываются — файл шифруется. В то время как устройство заблокировано, закрытый файл недоступен. После того, как пользователь разблокировал устройство, Ваше приложение может открыть файл и использовать его. Если пользователь блокирует устройство, в то время как файл открыт, тем не менее, Ваше приложение может продолжать получать доступ к нему. Укажите NSDataWritingFileProtectionCompleteUnlessOpen опция (NSData) или NSFileProtectionCompleteUnlessOpen атрибут (NSFileManager).

  • Завершенный до первого входа в систему — файл шифруется и недоступен, пока устройство не загрузилось, и пользователь разблокировал его один раз. Укажите NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication опция (NSData) или NSFileProtectionCompleteUntilFirstUserAuthentication атрибут (NSFileManager).

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

Для новых файлов рекомендуется включить защиту данных прежде, чем записать любые данные им. Если Вы используете writeToFile:options:error: метод для записи содержания NSData возразите против диска, это происходит автоматически. Для существующих файлов, добавляя защиту данных заменяет незащищенный файл новой защищенной версией.

Идентификация уникальных пользователей приложения

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

Вот некоторые общие сценарии, которые могли бы потребовать, чтобы Вы идентифицировали пользователя, вместе с решениями для того, как реализовать их.

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

  • Вы хотите дифференцировать экземпляры своего приложения, работающего на различных устройствах. Используйте identifierForVendor свойство UIDevice класс для получения ID, дифференцирующего пользователя на одном устройстве от пользователей на других устройствах. Этот метод действительно теперь позволяет Вам идентифицировать определенных пользователей. У отдельного пользователя могут быть многократные устройства, каждый с различным Значением идентификатора.

  • Вы хотите идентифицировать пользователя в целях распространения. Используйте advertisingIdentifier свойство ASIdentifierManager класс для получения ID для пользователя.

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

Поддержка Многократных Версий iOS

<