- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
iOS. Приемы программирования - Вандад Нахавандипур
Шрифт:
Интервал:
Закладка:
При создании сертификата выполните следующие шаги.
1. В браузере откройте центр разработки для iOS (iOS Dev Center). Не буду ставить здесь ссылку, так как со временем она может измениться. Просто введите такой запрос в поисковик — и он выдаст вам нужный сайт в мгновение ока.
2. Если вы еще не вошли на сайт под вашей учетной записью, сделайте это.
3. Оказавшись в системе, перейдите на страницу Certificates, Identifiers & Profiles (Сертификаты, идентификаторы, профили).
4. Перейдите на страницу Identifiers (Идентификаторы) и далее на страницу Pass Type ID (ID типа талона). Соответствующий раздел находится в левой части экрана.
5. Когда вы окажетесь на нужной странице, она, возможно, еще будет пуста. Найдите и нажмите экранную кнопку +.
6. Теперь в поле Description (Описание) введите текст, который будет описывать ID типа вашего талона.
7. В поле Identifier (Идентификатор) введите идентификатор талона в формате обратного доменного имени. Например, если ID вашего приложения — com.pixolity.testingpasskit, то для талонов, интегрированных с данным приложением, подойдет идентификатор pass.pixolity.ios.cookbook.testingpasses. Разумеется, следует подбирать для идентификаторов талонов такие названия, которые что-то означают в контексте вашего приложения. На практике принято начинать имя идентификатора с pass, а затем можно писать все, что хотите. На рис. 19.3 показано, как нужно заполнять поля на этой странице.
Рис. 19.3. Внесение информации о простом идентификаторе типа талона
Когда закончите заполнение этой страницы, нажмите кнопку Continue (Продолжить). Вам для предварительного просмотра будет представлен талон. Если вас все устроит, просто нажмите кнопку Register (Зарегистрировать) (рис. 19.4). Итак, теперь у вас есть идентификатор типа талона. Но он пока не связан ни с одним сертификатом. Чтобы создать сертификат и ассоциировать его с вашим идентификатором типа талона, выполните следующие шаги.
Рис. 19.4. Если вся информация указана правильно, подтвердите создание ID типа талона
1. В разделе Pass Type ID (Идентификаторы типа талона) на портале инициализации iOS найдите созданный вами идентификатор и нажмите кнопку Settings (Настройки) (рис. 19.5). В столбце Pass Certificate (Сертификаты талонов) в этом списке вы увидите, что ваш идентификатор типа талона обозначен как None (Отсутствует). В столбце Action (Действия) нажмите ссылку Configure (Сконфигурировать).
Рис. 19.5. Задаем идентификатор типа талона
2. Выбрав на портале идентификатор типа талона, вы сможете создать для него сертификат (рис. 19.6). Просто нажмите кнопку Create Certificate (Создать сертификат).
Рис. 19.6. Мы готовы создать сертификат для идентификатора типа талона
3. Теперь вам будет предложено создать запрос на подписывание сертификата, воспользовавшись доступом к связке ключей на Mac (рис. 19.7). Следуйте инструкциям, которые видите на экране. Когда закончите создание запроса на подписывание сертификата, нажмите экранную кнопку Continue (Продолжить).
Рис. 19.7. Выполняйте инструкции по созданию запроса на подписывание сертификата
Запрос на подписывание сертификата можно создать не только в Mac. Для создания такого запроса необходимо убедиться, что на вашей машине установлен Open SSL. Описание генерирования сертификатов на машинах, где не установлен Mac, выходит за рамки этой книги. Однако, если вас интересует этот вопрос, вы легко найдете ответ на него в Интернете — достаточно немного поискать.
Создавая на компьютере запросы на подписывание сертификата (это делается с помощью доступа к связке ключей), вы также создаете закрытый ключ, ассоциированный с таким сертификатом. Apple рекомендует время от времени делать резервные копии базы данных связки ключей, так как на портале инициализации iOS эти ключи не сохраняются. Если вы переходите к работе с новым компьютером, то ваши ключи туда нужно будет перенести вручную. Поэтому они и называются закрытыми. Экспортировать закрытые ключи несложно: щелкните на ключе правой кнопкой мыши и выберите в контекстном меню команду Export (Экспортировать).
4. Далее в браузере вам будет предложено загрузить запрос на подписывание сертификата на сайт Apple, чтобы в ответ получить готовый сертификат. Закрытый ключ был создан на вашем компьютере в тот самый момент, когда вы подготовили запрос на подписывание сертификата. Сертификат, который Apple выдаст по окончании процесса, будет подходить к закрытому ключу. Далее нажмите кнопку Choose File (Выбрать файл) на этом экране, чтобы выбрать запрос на подписывание сертификата, созданный для вас связкой ключей (рис. 19.8). Сделав это, нажмите кнопку Generate (Сгенерировать).
Рис. 19.8. Загрузка запроса на подписывание сертификата на сайт Apple для получения ссылки на сертификат
5. Когда сертификат сгенерирован, вы увидите примерно такой экран, как на рис. 19.9. Нажмите кнопку Download (Скачать), чтобы скачать сгенерированный сертификат.
Рис. 19.9. Apple сообщает вам о том, что сертификат создан успешно
6. Теперь у вас на диске должен быть готовый сертификат. Найдите этот файл и дважды щелкните на нем кнопкой мыши, чтобы импортировать его в вашу связку ключей. Чтобы убедиться, что все сработало правильно, откройте на компьютере программу для доступа к связке ключей (Keychain Access), там перейдите в раздел Login (Учетная запись) и далее — в подраздел My Certificate (Мой сертификат). Затем в правой части экрана подтвердите, что ваш сертификат на месте и что он ассоциирован с закрытым ключом (рис. 19.10).
Рис. 19.10. Сертификат, сгенерированный Apple, правильно ассоциирован с закрытым ключом
Итак, вы создали сертификат и готовы подписывать талоны, а потом рассылать их на устройства с iOS.
См. также
Раздел 19.0.
19.2. Создание файлов талонов
Постановка задачи
Требуется создать файл талона, представляющий данные, которые должны сохраняться на пользовательском устройстве с iOS.
Решение
Создайте файл pass.json и заполните его соответствующими ключами и значениями.
Обсуждение
Для представления талонов во фреймворке Pass Kit компания Apple выбрала формат JSON. Аббревиатура JSON расшифровывается как «объектная нотация JavaScript», широко используется в веб-приложениях и веб-службах. Однако вы, будучи iOS-разработчиком, можете и не иметь достаточных знаний о JSON.
Файлы JSON состоят из обычных ключей и значений, этим они напоминают словари. Ключ может иметь значение, а значения могут быть самыми разными — от простой строки до словаря, который и сам содержит ключи и значения. Вот простой пример JSON, обладающий всеми характерными чертами этой нотации:
{
«key 2 — dictionary» = {
«key 2.1» = «value 2.1»;
«key 2.2» = «value 2.2»;
};
«key 3 — array» = (
{
«array item 1, key1» = value;
«array item 1, key2» = value;
},
{
«array item 2, key1» = value;
«array item 2, key2» = value;
}
);
key1 = value1;
}
Как видите, словари заключены в квадратные скобки, а массивы — в фигурные. Другие элементы представляют собой обычные пары «ключ — значение». Если бы мы попытались представить этот объект JSON в виде экземпляра NSDictionary, то у нас получился бы такой код:
NSDictionary *json = @{
@"key1": @"value1",
@"key 2 — dictionary": @{
@"key 2.1": @"value 2.1",
@"key 2.2": @"value 2.2",
},
@"key 3 — array": @[
@{
@"array item 1, key1": @"value",
@"array item 1, key2": @"value"
},
@{
@"array item 2, key1": @"value",
@"array item 2, key2": @"value"
}
]
};
Подробнее о нотации JSON вы можете почитать на сайте JSON.org. Перейдем к созданию файлов талонов. Как уже говорилось, такой файл состоит из обычной нотации JSON. Не путайте файлы талонов и сами талоны. Талон — это коллекция файлов, в которую входит и pass.json. Вся эта коллекция в целом и будет представлять собой талон с цифровой подписью, который пользователь сможет установить на своем устройстве. Файл талона «объясняет», как талон должен быть представлен на устройстве.
Файл pass.json можно создавать с помощью высокоуровневых и низкоуровневых ключей. Высокоуровневыми называются такие ключи, которые сразу же видны в основной иерархии файла pass.json. Низкоуровневые ключи являются дочерними для высокоуровневых. Не волнуйтесь, если пока это не совсем понятно. Я тоже сначала запутался в этой иерархии, но читайте дальше — и стройная картина обязательно сложится.

