Предисловие
Не стал разбавлять историю разработки с частью публикации приложения в AppStore. Поэтому сначала история, а потом небольшая (но полезная для начинающих) информация.
Почему мемы?
Однажды вечером я общался с друзьями в WhatsApp, и у меня появилось желание сделать картинку мем в ключе разговора, со своим текстом. Делать на компьютере и отправлять на iPhone было слишком неудобно и долго. Выбор был очевиден. Необходимо приложение, и я отправился на его поиски в AppStore. Все, что удалось найти, были отдельные приложения для создания мемов вида «картинка + текст сверху и снизу», демотиваторов и мотиваторов. Интерфейс и юзабилити в найденных и опробованных приложениях не устроили, а еще хотелось, чтобы было все в одном. Ничего не оставалось, как сесть и написать самому, благо есть «ПРОшка».
Скачиваю Xcode и приступаю
Большим минусом было то, что новенький Swift я и в глаза не видел, а опыт разработки в Xcode (Objective-C) был на уровне «Hello, world». Но были и плюсы: достаточно много материала и видео по Swift и Xcode 6, а так же наличие небольшого опыта разработки на Delphi и PHP.
Синтаксис Swift оказался очень дружелюбным, в отличие от Objective-C (хотя с ним были не очень продолжительные отношения). Принцип написания и изучения сводился к следующему: «сначала пишем приложение, а более детально изучать Swift будем позже», в связи с чем возникали ступорные ситуации, в которых я просто не знал как реализовать данную функцию. В такие моменты на помощь приходил YouTube и stackoverflow.com. Оказалось, в рунете совсем мало информации по Xcode и Swift, а зарубежные ресурсы в этом плане более насыщенны.
Интерфейс приложения никак не разрабатывался: я просто доверился своей интуиции; представил, как должно выглядеть приложение, с которым было бы приятно и удобно работать мне. Любовь к минимализму так же сыграла свою роль, а неопытность — к использованию того, что предлагает Apple в Xcode.
Демотиваторам и мотиваторам — быть!
Пускай они уже не так популярны, мне они были необходимы. Это мемы на которых я вырос, от них исходит какое-то «ламповое» тепло.
К дизайну черной и голубой рамки подход был серьезный. Было просмотрено множество ресурсов, а так же история их возникновения. В итоге все рамки и соотношения сторон соответствуют классическим, первым демотиваторам и мотиваторам. Так, кстати, и возникло название, но и оно было не первым, однако об этом чуть позже.
«Другой мем» и планы на будущее
На данный момент в приложении представлен еще один конструктор — «Другой мем», являющийся самым популярным в сети сегодня. Разработать конструктор для «другого мема» было весьма просто, однако к процессу необходимо было подойти со всей ответственностью, ведь это самый используемый шаблон. Его вид так же был приведен к классическому образцу.
Новые варианты оформления и подписи для картинок появляются в сети каждый день. Какие-то становятся популярными и задерживаются, какие-то нет. В планах — добавление новых типов конструктора популярных мемов. Уже в ближайшем будущем кнопка «Другие мемы» заменит сегодняшнюю «Другой мем».
Галерея
Опубликовать созданный мем в социальной сети или мессенджере — самая важная функция приложения, ведь ради этого все и задумывалось; так же хотелось добавить функцию сохранения мемов внутри приложения, чтобы иметь возможность обратиться к ним в любой момент и при необходимости поделиться. Так и появился раздел «Галерея», с простой системой сортировки по типу, возможностью детального просмотра, удалением ненужных и отправкой мемов в другие приложения.
Инструкция, первый шаг к «коммерческому» проекту.
Когда приложение обрело первоначальный вид, и я уже во всю отправлял из тестовой версии созданные мемы друзьям, появилась мысль: «в поисках подобного приложения, найди я среди них свое, заплатил бы я за него? конечно!». Так проект стал двигаться в сторону «коммерческого». Несмотря на простоту и удобство приложения, я понимал, что инструкция у него быть должна — это у меня отложилось после прочтения многих историй разработки игр и различных приложений. Изображение с описанием казалось самым простым вариантом, на нем и остановился.
Шаблоны, второй шаг к «коммерческому» проекту
Мемы создаются, публикуются, сохраняются… Казалось все, можно продавать. Беспокоило только то, что одной детали все же не хватает — шаблонов. Популярных картинок, которые используют в мемах. Поскольку я и не представлял, как буду это реализовывать, я посчитал, что затрачу много времени и планировал добавить это в крупное обновление.
Время подходило к публикации и я засомневался, оправдана ли цена приложения. Я бы купил и так, но возможно для многих цена станет важным моментом в принятии решения о покупке. Да и я к тому времени устал искать нужные картинки, сохранять в фотопленку и потом уже использовать для создания мема. В итоге я принялся к созданию функции добавления шаблонов.
Как оказалось, «не так страшен черт…», и первые шаблоны я тестировал уже через пару ночей разработки. После чего было отобрано и добавлено более 100 популярных картинок, используемых в мемах.
Поскольку совсем недавно я переехал из северного города, в котором хороший интернет — миф, важной функцией галереи шаблонов был оффлайн доступ к картинкам, чтобы сделать использование программы в городах с низкой скоростью интернета и дорогим трафиком более комфортным. Функционал сводится к тому, что при первом открытии одной из группы шаблонов картинки в ней сохраняются в устройстве и доступны оффлайн. Чем больше групп открываешь, тем больше картинок становится доступно оффлайн.
Немаловажной функцией было добавление новых картинок в группы без необходимости обновления приложения, что получилось очень просто реализовать с помощью JSON. При добавлении новых картинок, красненький стикер расскажет, сколько и в какую группу добавилось новых шаблонов.
Название, третий шаг к «коммерческому» проекту
Изначально я не особо задумывался о названии и было выбрано MyDMM — Мои Демотиваторы, Мотиваторы и другие Мемы. Для себя да, достаточно, но для AppStore название скудноватое. Долгое время в голову ничего лучше не приходило, пока не дошел к краткому описанию. Тут то и сорвалось с языка это слово — «классический». AppStore по запросу «ClassicMemes» ничего не выдал, а я вздохнул спокойно и приступил к изменению приложения и сайта.
Иконка — лицо приложения
Рисование — одна из моих слабых сторон, поэтому иконку пришлось делать просто, но стильно и информативно. Результатом доволен. Вариантов практически и не было, иконка получилась с первого раза. С иконкой для Lite версии так же проблем не возникло, получилась сразу.
AppStore и iTunes Connect — публикация
Приложение готово, пора и миру показать. Было страшно, страшно от неизвестности. Как публиковать? что заполнять? как потом обновлять и т.д? Но, как говориться, — «глаза боятся, а руки делают». По инструкциям в сети создал сертификаты для обоих версий (платной и lite версии — бесплатная, с ), а в iTunes Connect оказалось подробно расписано, что и куда, да еще и на русском. Ход действий так же подсмотрел в роликах на YouTube. Добавил описание, скриншоты, заполнил все, что было необходимо и вот, столкнулся с вопросом: как свое приложение, собственно, загрузить? И снова отправляюсь «гуглить». Оказалось, ничего сложного — приложение отправляется в iTunes Connect в пару кликов, а уже там выбирается.
После отправки на проверку, как это обычно бывает, нашлись недочеты и необходимо было заменить версию. Долго смотрел на кнопку «удалить версию, ожидающую проверки» и все же решился. Проверка слетела, и я уже заливал новую сборку. Без нюансов тоже не обошлось. Оказывается, каждый раз, когда мы отправляем новую сборку, необходимо повышать её номер, иначе система ругается и не отправляет сборку в iTunes Connect.
Шишек набил много, но самая большая вышла, конечно же, с названием приложения. При выборе названия в iTunes Connect я почему то решил, что это и будет мое название в AppStore и в устройствах при установке, а как называется проект — неважно. Спустя 6 дней ожидания проверки я наткнулся на такой пункт, при котором могут отказать в публикации: «Пункт 3.4: Названия приложений в iTunes Connect и на самом устройстве должны быть одинаковыми, чтобы не вызывать замешательства». А что остается делать? Готовлю новые сборки и отправляю в iTunes Connect с расчетом, что мне откажут и я отправлю на проверку новую сборку, после чего меня рассмотрят в течение дня. Но к моему удивлению, проверку я прошел, и Lite версия уже была в AppStore, а платная перешла в состояние «Ожидание договора».
«Ожидание договора» так же заставило понервничать и перелопатить половину интернета. Ответы нашел, и уже через час платная версия появилась в AppStore.
После того как приложения перешли в состояние «Готов к продаже», мои загруженные сборки с исправленным названием уже не подошли, пришлось делать сборки новой версии 1.1, и снова «ожидание проверки».
Заключение
Хочу поделится опытом, как опубликовать приложение в AppStore от создания сертификатов до статуса «Готово к продаже». Думаю начинающим такая информация пригодится.
1. Сертификаты, необходимые для публикации в AppStore
Для того, чтобы опубликовать приложения в AppStore, необходимо создать идентификатор приложения и сертификат дистрибьютора (помимо сертификата разработчика — iOS Development).Первым делом создаем идентификатор App ID.
Имя сертификата вписываете любое, ID — это Bundle identifier, его вы указываете заранее в проекте Xcode и потом при создании идентификатора.
Вторым шагом будет создание сертификата дистрибьютора — «iOS Distribution». В нем то мы и выбираем тот самый идентификатор «App ID».
Для загрузки всего этого добра в Xcode, есть 2 способа — «ручной и автоматический», для меня проще второй вариант. Для этого, заходим Xcode -> Preferences -> Account, выбираем свой аккаунт разработчика и нажимаем View Details и в появившемся окошке Downloads All.
Но и это еще не все. Открываем Build Settings вашего проекта и выбираем свои добавленные в Xcode сертификаты iOS Development и iOS Distribution.
Для приложения проделываем то же самое.
2. Отправка своего приложения в iTunes Connect
Какое имя проекта вы выбираете при создании? Уверен, в большинстве случаев это «test1» или «MyFirstProga». Так вот, что бы не попасть в такую ситуацию, в которую попал я, необходимо изменить название проекта, иначе вы не пройдете проверку или у ваших пользователей в iOS будет показываться название «MyFirstCoolProga» (в моем же случае не так все плохо, конечно). Для этого вписываем правильное название вот сюда:А в появившемся окошке, жмем Rename.
Теперь можно приступить к отправке. Компилируем проект Product -> Run, отправляем сборку в архив Product -> Archive. Если случайно закрыли окно, его можно вызвать так Window — Organizer. В архиве будут показаны все ваши версии и сборки.
Выбираем вашу сборку, которую хотите отправить в iTunes Connect и нажимаете Validate. В появившемся окне выбираем кем утвердить и жмем Choose.
После этого появится еще пару окон, в первом жмем Validate, а во втором Done. Так же во втором окне вам могут рассказать о том, что в проекте есть «Предупреждения».
И самое главное, отправка в iTunes Connect. Тут все просто, жмем Upload to App Store, а дальнейшие действия идентичны Validate.
Заходим в iTunes Connect, выбираем приложение (или создаем, если еще нет), переходим в нужную версию (или добавляем), если вы делаете это первый раз, то версия будет 1.0. Рядом с Сборка будет «+», жмем, открывается окно с вашей загруженной сборкой. Правда выбрать сразу не получиться, она в течении часа проходит предварительную проверку.
3. Настраиваем iTunes Connect для платного приложения
С iTunes Connect в принципе вопросов не возникло, кроме одно. Как я писал ранее, когда платное приложение проходит проверку, оно переходит в состояние «Ожидание договора». Что делать?В iTunes Connect заходим в раздел «Соглашения, налоги и банковские операции», на против обоих контрактов (Paid и iAd) жмем запросить Request. После, вам будет доступна настройка Contact info, Bank info, Tax info.
Contact info
Добавляете контакт, и выбираете его для каждой роли.Bank info
Насчет способа вывода средств я даже не думал, поэтому не был готов к такому повороту событий. Для статуса приложения «Готов к продаже» все же необходимо заполнить всю информацию. Но мне подфартило, к счастью, я не выбросил распечатку реквизитов моего счета и банка (Сбербанк). В моем случае это было так: открываю Bank info, нажимаю Add Bank Account, выбираю Russia, ввожу БИК банка в Bank Identification Code. После чего предлагают заполнить данные (номер счета, ИНН банка, ФИО, кор. счет и т.д.), все заполняю, готово! Это можно назвать вариантом «на первое время», что бы запустить приложение в AppStore. Реквизиты легко получить в банкоматах, для этого нужна карта привязанная к счету. А в дальнейшем конечно стоит открыть долларовый счет в банке, у которого нет % за перевод в Россию. Данные вопросом особо не задавался, но сети рекомендуют ВТБ24, Альфабанк, Банк24.Tax info
Если вы:- Разработчик из России
- Собираетесь зарабатывать на авторских гонорарах (продажа приложений), а этим может заниматься физическое лицо, без всяких ИП (правда платить 13% с таких гонораров)
- Не являетесь резидентом США
- Не имеете бизнес в США
То, дальше для вас.
В таком случае все настраивается просто. Открываем Tax info, жмем по Set Up под U.S. Tax Forms (т.к. у меня уже заполнено, то показывается кнопка View).
Заполняем по примеру:
Подтверждаем и ждем, скоро ваше приложение появится в AppStore.
На этом всё. Спасибо за внимание!