К запуску курса «Fullstack мобильный разработчик», проводимого совместно с агентством Agima, мы подготовили серию материалов о том, как создавать приложения для мобайла. Будем говорить о кейсах, цифрах, правилах и провалах, но начнем, вместе с Никитой Архиповым из студии Anvics, с темы прохождения релиза в App Store. Разберем, как договориться с ревью-командой и избежать проблем, по шагам расскажем про техническую сторону — от создания сертификата до взаимодействия с Itunes Connect — и про то, о чем все молчат, — как же все таки пройти ревью с первого раза. Готовьте лапки, и поехали!
Пы сы: а еще в этой серии материалов спрятаны скидки на курс: в каждом посте по мобильной разработке есть ребус, в котором зашифровано слово или название решения из области мобайла. За отгаданный ребус вы получаете скидку 10%! Кстати, скидки суммируются, так что если соберете их все, то сможете отхватить курс по очень вкусной цене! Первый ребус ищите уже в этом тексте!
Игра разработана, приложение создано, всё готово к запуску. Настало время релиза — и вот тут вы и можете столкнуться с неожиданностями. Когда вам нужно срочно зарелизиться, а приложение еще не готово к «честному» прохождению ревью, обойти ограничения, установленные Apple, трудно, но вполне возможно. Рассказываем, как договориться с командой, принимающей решения о публикации приложений в App Store. Разбираемся в возможных причинах отказа или блокировки. А для тех, кто впервые выкатывает свой продукт в магазин приложений, разбираем технические детали ревью от создания сертификата до взаимодействия с Itunes Connect.
Читайте документацию
Кажется, для того чтобы подготовиться к ревью, достаточно пару раз прочесть App Store Review Guidelines, и всё будет в порядке. Но трудности могут начаться уже на этом этапе. Во-первых, на сегодня это уже тридцатистраничный талмуд. Во-вторых, почти в самом начале этого документа есть следующий пункт: «Мы отклоним приложение, содержимое которого нарушает границы».
При этом, что это за граница, за которой остаются отклоненные приложения, — никто в точности не знает. Как однажды сказал американский верховный судья «Я пойму (эту границу), когда увижу ее». Впрочем, пугаться заранее не стоит: несмотря на такую размытую формулировку, сам процесс ревью очень адекватный, и просто так в Apple не отказывают приложениям в публикации.
Не забывайте следить за обновлениями App Store Review Guidelines. Настройте уведомления о связанных с этим новостях в поисковике или следите за профильными мероприятиями, на которых анонсируются нововведения. Например на недавней World Wide Developers Conference 2018 Apple представила ряд новых правил, касающихся политики конфиденциальности, таргетинга рекламы и работы приложений, связанных с криптовалютами. Вам сможет серьезно помочь проект App Store Review Guidelines History, создатели которого маркируют все новые изменения: то, что добавляется к Руководству, отмечают зеленым цветом, а удаленное из него — красным. Рекомендуем подписаться на их рассылку.
Почему приложение могут отклонить
Достаточно четко помнить про основные мотивы возможного отказа, изложенные в том самом App Store Review Guidelines. Они довольно просты и вкратце звучат так:
- Никакого реалистичного насилия, порнографии, дискриминации, обмана. Помимо очевидных кровопролитных игр и откровенного ньюдс-контента, есть и более сложные кейсы. Так, например приложение AfterSchool, в котором американские школьники могли общаться в свободное от учебы время, из-за отсутствия контроля за его содержимым очень быстро наполнилось угрозами «шутинга» — стрельбы в школах, из-за чего Apple несколько раз удалял его из магазина. Впрочем, спустя некоторое время AfterSchool вновь возвращалось в App Store.
- Приложение должно быть полностью законченным и прошедшим баг-тестирование на стороне создателей. В App Store не примут приложения с явными ошибками, работающие слишком медленно по сравнению с аналогами и неожиданно вылетающие. Ревью-команда тестит приходящий к ним на рассмотрение софт вручную и очень тщательно. Из-за найденной ошибки приложение отклонят, а вам направят скриншот и описание произошедшего. Это можно рассматривать как возможность дополнительного тестирования, но злоупотреблять ей не стоит — если вы слишком часто будете отправлять на ревью откровенно недоработанные приложения, приоритетность рассмотрения ваших заявок ревью-командой существенно упадет.
- Разработчики должны предоставлять корректное описание всего функционала, а приложение должно работать в соответствии с этим описанием. В частности, это значит, что в нем не должно быть никаких скрытых функций, которые откроются пользователю только после установки. Например, если вы используете free-to-play-монетизацию, когда часть возможностей приложения будет доступна только на платной основе, обязательно расскажите про это в описании. Для полноценного соблюдения этого пункта не стоит забывать и о том, что приложение обязано запрашивать разрешение пользователя на использование его контактов, геолокационных данных, микрофона и камеры, а также на обращение к внутренним хранилищам телефона и аккаунтам в сторонних сервисах, в частности при авторизации.
- Нельзя использовать никакие приватные API, вызывать внутренние системные функции iOS, загрузку нового кода и тем более вирусов. Если предыдущий пункт обращен к добросовестным, но невнимательным разработчикам, то этот прямо адресован потенциальным злоумышленникам.
- Приложения, размещаемые в магазине Apple, не должны обладать слишком маленьким функционалом. Пункт 4.2 гайдлайнов гласит: «Если приложение не несет конкретной пользы и не воспринимается как полноценный продукт, оно не подходит для App Store». Так ревью-команда добивается гарантии того, что всё, предлагаемое пользователю, окажется полезным для него. Типичным примером может служить запрет на публикацию оберток для браузера, изменяющих только его внешний вид, но не добавляющих никаких новых возможностей.
- Приложение не должно нарушать никаких законов во всех странах, для которых оно будет доступно. Именно ссылаясь на этот пункт, Роскомнадзор требовал от Apple удаления Telegram из каталога приложений.
- В том числе приложение не должно нарушать авторских прав. Возникает вопрос: « как же это правило обошли „ВКонтакте“ с их объемом нелегальной музыки и видео?» Действительно, приложение VK долгое время имело возможность нелицензионно стримить такой контент. Но примерно 4 года назад в Apple стали серьезнее относиться к нарушению авторских прав в других странах (до этого они смотрели, по крайней мере на Россию, сквозь пальцы). Как раз в этот момент «ВКонтакте» (и другие приложения с пиратской музыкой) удалили из стора и вернули только после обновления, в котором нарушающий авторские права контент уже не был доступен. Сейчас VK снова имеет функционал проигрывания музыки, но теперь уже вполне легально — это ограниченные «демо-прослушивания», а полные версии плейлистов доступны в отдельном, платном приложении, отчисляющем средства музыкантам.
Здесь важно отметить, что ревью-команда Apple при отклонении заявки всегда опишет причину и пояснит, что нужно изменить. Но этим опять же не стоит злоупотреблять: пара неудачных попыток — и в следующий раз ваш контент подвергнется еще более внимательному досмотру.
Личный опыт
Мы сами в Anvics в разное время сталкивались при прохождении ревью с проблемами не только из этого списка.
Однажды мы запускали небольшое промоприложение для рекламной кампании
одного крупного бренда. Оно содержало только функции просмотра VR-видео и обратную связь с представителями бренда. Команда ревью посчитала, что приложение недостаточно функционально, и отклонила его. Но оказалось, что для того, чтобы успешно пройти ревью, достаточно было добавить кнопки «Поделиться в социальных сетях» и галерею. После таких косметических (на общем фоне разработки) правок приложение спокойно прошло проверку.
Полезно было узнать и про то, что для брендированных приложений, если они публикуются не с энтерпрайз-аккаунта самой марки, необходимо подтверждающее письмо от представителей бренда, позволяющее использовать название, логотип и другие фирменные атрибуты марки для разработки и реализации приложения. Подготовить его можно в свободной форме: «Я, такой-то, генеральный директор, разрешаю использовать свой бренд „Бренд“ для приложения „Приложение“ в аккаунте „Аккаунт“». Отсканируйте этот документ и прикрепите его к заявке на ревью.
Встречаются и технические особенности, которые можно просто не заметить. Например, мы однажды столкнулись с тем, что все сторонние сервисы, к API которых обращается приложение, должны поддерживать протокол IPv6. И, само собой, в них не должно содержаться никаких URL-адресов в виде 1.1.1.1. Будьте внимательнее к таким деталям, это позволит сэкономить ваше время.
Техническая сторона ревью
Как пройти ревью:
- оплатите аккаунт (стандартный за 99$ или Enterprise за 299$ в год);
- убедитесь, что приложение полностью готово и прошло тестирование;
- создайте сертификат;
- получите идентификатор;
- используя их, сформируйте профиль приложения;
- заархивируйте в Xcode сборку приложения;
- отправьте его в Itunes Connect — сервис, через который происходит все взаимодействие разработчика с App Store.
На курсе «Fullstack мобильный разработчик» мы подробно объясняем, как пройти путь от идеи приложения до релиза в App Store, и, конечно, затрагиваем все этапы ревью более подробно. Но пошаговым руководством по тому, как отправить приложение на ревью, делимся уже сейчас. (И не забывайте про ребус со скидками — он уже близко!)
Подписываем приложение
Механика создания подписи может вызвать сложности у тех, кто раньше не сталкивался с этим, поэтому расскажем про нее подробно. У приложений есть сертификаты, идентификаторы и профили.
- Сертификат связан с компьютером и авторизует его для подписи приложений.
- App ID – уникальный идентификатор приложения. Кроме того, он хранит список используемых приложением технологий (например, In app purchase, push-уведомления и прочее).
- Профиль — «объединение» сертификата и идентификатора, используется для подписи приложения с конкретного компьютера. Также в нем указывается, каким образом будет распространяться приложение: development (запуск приложения с компьютера на свое устройство), App Store (отправка приложения в официальный магазин Apple) или Ad Hoc (дистанционная установка приложения на устройства, без использования App Store).
Для подписи приложения сначала необходимо зарегистрировать компьютер и получить сертификат, потом сформировать идентификатор приложения, а в конце создать профиль для отправки в App Store. Разберем пошагово все этапы.
Шаг первый: создание сертификата
Когда мы уже зарегистрировались и оплатили аккаунт, входим в портал разработчика Apple.
Выбираем Certificates, Identifiers & Profiles:
Видим меню сертификата:
Нажимаем на пиктограмму «+» справа от надписи iOS Certificates:
Выбираем App Store and Ad Hoc, нажимаем Continue:
Ознакомившись с описанием того, как будет создан запрос на создание сертификата, снова нажимаем Continue:
Теперь нам нужно создать ключ на компьютере. Для этого запускаем программу «Связка ключей»:
В верхнем меню нажимаем «Связка ключей» –> «Ассистент сертификации» -> «Запросить сертификат у бюро сертификации...»:
Указываем email нашего аккаунта, в общем имени пишем любое имя, адрес email БС оставляем пустым, в запросе выбираем «Сохранен на диске»:
Нажимаем «Продолжить» и сохраняем файл с расширением .certSigningRequest в удобном месте (например на рабочем столе). После сохранения переносим его на кнопку Choose File в портале Apple:
Нажимаем Continue, на следующем экране — Download и дважды кликаем на скачанный файл — после этого должно стать активным окно «Связки ключей» и появиться «Добавление сертификатов». Убедитесь, что в нем заданы данные «Связка ключей — вход» и нажмите «Добавить»:
Сертификат для компьютера готов.
Шаг второй: добавление идентификатора
В меню на портале Apple выбираем пункт App IDs:
Так же как и у сертификатов, кликаем пиктограмму с плюсом:
На открывшейся странице обязательно заполняем поля Name (название приложения — под ним оно будет фигурировать только на портале Apple) и App ID. App ID копируем из Xcode-настроек вашего проекта:
Ниже вы увидите список сервисов, которыми будет пользоваться приложение. Необходимые отметьте галочкой в соответствующих чекбоксах (позже этот список можно будет изменить).
После этого внизу страницы нажмите Continue, на следующем экране — Register и на последнем — Done. Идентификатор приложения готов.
Шаг три: создаем профиль
В меню перейдем в Provisioning Profiles -> Distribution:
Кликаем привычную уже пиктограмму «+» и в открывшейся вкладке выбираем App Store:
На следующем экране выбираем зарегистрированный нами идентификатор приложения:
Теперь выбираем сертификат, а затем вводим название для профиля (под этим названием он будет показываться в xСode — то есть это рабочее название, видимое только вам и представителям Apple):
Нажимаем Continue, на следующем экране — Download и дважды кликаем по скачанному файлу. После этих нехитрых действий Xcode должен стать активным окном. Всё готово: мы создали все необходимые файлы для подписи нашего приложения.
Регистрация в iTunes Connect
Прежде чем отправлять приложение в App Store, нужно зарегистрировать его в iTunes Connect. Для этого открываем сайт appstoreconnect.apple.com и после авторизации с тем же логином/паролем, что и на developer.apple попадаем на главный экран:
Выбрав «Мои приложения», нажимаем на пиктограмму «плюс» и выбираем «Новое приложение»:
Заполняем все поля в открывшемся окне. В поле SKU вводим идентификатор приложения и приписываем символы ".SKU":
Нажимаем «Создать» — теперь приложение зарегистрировано.
Архивация сборки приложения
Возвращаемся к Xcode с проектом:
Отключаем Automatically manage signing, нажимаем на None напротив Team и в выпадающем списке выбираем Add account. После этого вам откроется окно для ввода логина и пароля:
После этого в настройках проекта выбираем добавленную команду.
Теперь осталось установить в Xcode профиль и сертификат. Для этого открываем вкладку Build Settings (убедитесь, что чуть ниже выбрано All):
Прокручиваем до секции Signing и выбираем там наши сертификат и профиль:
Далее Target -> Generic iOS Device:
Нажимаем Product -> Archive:
Ждем, когда после архивации (она может длиться до получаса) откроется окно:
Нажимаем Upload to App Store…
Кликаем Next, после чего Xcode потратит немного времени на прогрузку и выдаст вам следующее окно:
Здесь выбираем наш сертификат и профиль, нажимаем Next, потом Upload и ждем! После успешной загрузки Xcode примерно через 30–60 минут сборка появится в appstoreconnect.
Когда это произошло, сборку, вместе с описанием приложения, необходимыми документами (если они имеются) и контактной информацией можно отправлять на модерацию ревью-команде.
А вот и ребус! Помните, что спрятанное в нем слово или понятие относится к мобильной разработке, учитывайте, что английский здесь может мешаться с русским, и главное — не забывайте, что мы будем тщательно следить за комментариями и удалять из них подсказки и ответы! Промослово, зашифрованное в ребусе, следует назвать, когда с вами свяжется наш менеджер после того, как вы отправите заявку на курс. Скидки за разгаданные ребусы (всего их будет пять, по числу материалов) суммируются между собой, но не со скидками на сайте. Слишком медлить не стоит — промо работает до 30 августа 2018 года.
Кружным путем
У iOS, в силу специфики закрытой платформы, есть только один официальный магазин приложений — App Store. Если сделать jailbreak, можно, конечно, использовать неофициальную Cydia, но в последние годы она все больше теряет популярность, а значит, имеет не слишком высокие показатели пользовательской активности. Такой вариант может быть актуален для тех, кто не хочет сталкиваться с диктуемыми Apple ограничениями, но обычному разработчику это не нужно.
Если вам необходимо срочно зарелизиться, обойти ограничения, установленные Apple, трудно, но вполне возможно. По нашему опыту, если приложение не очень сильно нарушает правила, то можно аккуратно попросить пропустить его, пообещав исправиться в следующей версии, а необходимость срочного попадания в Store мотивировать, например, тем, что уже на завтра запланировано мероприятие, для которого необходимо использование этого приложения. В целом, команда ревью достаточно дружелюбная: ее представители готовы идти навстречу разработчикам, а при необходимости оперативного решения проблемы с ними можно даже созвониться.
Однако, как мы и говорили выше, если вы будете систематически нарушать правила и отправлять одну за другой новые нестабильные сборки, Apple может применить к вам санкции.
Каждое последующее ревью сборок, нарушающих правила App Store, приведет к увеличению его сроков. Теоретически можно заслужить и блокировку аккаунта, но на практике эта мера на предрелизном этапе обычно не применяется.
Если же ревью-команда обнаружит обман пользователей или нарушение правил в уже выпущенном приложении, оно удалится из каталога. Жесткие нарушения вроде кражи данных могут привести даже к удалению аккаунта.
Сроки ревью
В большинстве случаев ревью занимает 1-2 дня, но может длиться дольше при отсутствии всей необходимой информации (например логинов и паролей для доступа к закрытой части функционала) или при повторной отправке приложения на модерацию после нескольких отказов. В этом случае ревью проходит дольше с каждым последующим отказом и его срок может вырасти до нескольких недель.
Если вы разрабатываете приложения под несколько платформ — помните, что в Google Play ревью обычно занимает несколько часов, поэтому в первую очередь, конечно, нужно загружать iOS-версию, если на iOS и Android приложение должно выйти примерно в одно время.
Как видите, в прохождении ревью нет ничего страшного: представители Apple дружелюбны, правила сравнительно гибки, а сроки ревью невелики. И не забывайте про вежливость: внимательное чтение гайдлайнов, самостоятельное качественное тестирование и внимательное отношение к советам ревью-команды обеспечат вам установление с ними хороших отношений и легкое прохождение ревью с первого раза.