Нахавандипур Вандад
Шрифт:
Решение
Создайте фон, пиктограммы, логотипы и вставьте их в ваш талон, снабженный цифровой подписью.
Обсуждение
На талоне могут содержаться различные изображения:
• фон (background.png, background@2x.png и background-568@2x.png) — фоновое изображение на талоне. Не на всех талонах есть фоновые изображения;
логотип (logo.png и logo@2x.png) — логотип, который будет находиться в верхнем левом углу талона. Зависит от типа талона;
пиктограмма (icon.png и icon@2x.png) — пиктограмма для талона. Не у всех талонов есть пиктограммы. В этой главе мы подробно поговорим о создании пиктограмм для талонов;
миниатюра (thumbnail.png и thumbnail@2x.png) — миниатюра-ярлык, соответствующая талону. Будет видна, когда талоны сложены «в стопку».
Как понятно из названий, все эти изображения создаются в двух вариантах: для обычного и для сетчатого дисплея (Retina). Apple не требует строгого соблюдения этого правила, но разве мы, разработчики, не ценим наших клиентов? Сетчатые дисплеи сегодня так популярны, что становятся общепризнанным промышленным стандартом. Поэтому, пожалуйста, не забывайте создавать и сетчатые варианты изображений с высоким разрешением.
Итак, мы выяснили, каковы будут имена файлов изображений. Перейдем к параметрам этих изображений. Я перечисляю только сетчатые изображения (чтобы получить обычные, просто разделите все значения по длине и ширине на 2):
• background@2x.png — 640 пикселов в ширину и 960 пикселов в высоту;
• background-568@2x.png — 640 пикселов в ширину и 1136 пикселов в высоту, для iPhone 5;
• logo@2x.png — 60 пикселов в ширину и 60 пикселов в высоту;
• icon@2x.png — 58 пикселов в ширину и 29 пикселов в высоту;
• thumbnail@2x.png — 200 пикселов в ширину и 200 пикселов в высоту.
В этом разделе я создал все изображения максимально простым образом. На рис. 19.13 они все показаны на одном холсте.
Рис. 19.13. Все изображения с талона на одном холсте
Рисунок сделан для наглядности и просто показывает, сколько изображений требуется подготовить для одного талона. Не нужно создавать такое изображение, в котором все эти элементы расположены на одном холсте.
Все изображения готовы. Сохраните их в том же каталоге, где уже находится файл pass.json. Переходим к следующему этапу работы — создаем файл описания (манифеста).
См. также
Раздел 19.2.
19.4. Подготовка талонов к цифровому подписыванию
Постановка задачи
Требуется подготовить талоны к цифровому подписыванию. Это необходимый предварительный этап, без которого такое подписывание выполнить невозможно.
Решение
Создайте файл manifest.json в том же каталоге, где находятся файл pass.json и изображения для талона. Файл описания будет написан в формате JSON. Его корневой объект — это словарь. Ключами в этом словаре являются имена файлов (имена всех изображений плюс имя файла pass.json). Значение каждого ключа представляет собой SHA1-хеш соответствующего файла.
Обсуждение
Просто создайте файл manifest.json с ключами для всех изображений, а значения пока оставьте пустыми. Содержимое вашего файла manifest.json должно выглядеть примерно так:
А теперь начинается самое интересное. Нужно рассчитывать SHA1-хеши всех этих файлов. Учтите, что теперь при каждом изменении файлов (например, вы нашли ошибку в файле pass.json и исправили ее) потребуется также пересчитывать SHA1-хеш и записывать новое значение этого хеша в файле manifest.json. Чтобы рассчитать значение SHA1-хеша для любого файла в операционной системе OS X, просто выполните следующие шаги.
1. Откройте окно терминала и перейдите в каталог, где находится целевой файл (для этого используется команда cd).
2. Выполните в окне терминала команду openssl. В качестве ее первого аргумента сообщите sha1, в качестве второго — имя файла.
Например, в каталоге с моим проектом есть подкаталог pass. В этот каталог я поместил мой файл pass.json, полупустой файл manifest.json, а также все изображения для талона (фоновое изображение, логотип и т. д.). Теперь в окне терминала я рассчитаю значения SHA1-хешей для всех этих файлов и запишу полученные значения в файл описания. Итак, в первой строке следующего листинга идет команда openssl, а все остальные строки — это значения хешей, полученные в качестве вывода: