Федерико Занетелло из Kimchi Media рассказывает свою непростую историю взаимоотношений с App Store и о трех месяцах отказов от команды Apple.
В прошлом году я наконец решился: я купил Macbook и начал изучать Swift и разработку iOS приложений.
Спустя 3 месяца* я отправил свое приложение в App Store: я был очень горд собой!
* Уточнение: я инженер ПО, у вас это может занять больше времени.
Swift – потрясающий язык и, смирившись с тем, что я не смогу знать в Cocoa Touch всего, никто не мог удержать меня от создания и запуска моего приложения. Как же я был неправ.
Приложение
Краткое описание приложения Stream for Twitter, которое я запустил:
Stream for Twitter показывает вам новые твиты со всего света в реальном времени: просто добавьте всё, что вам интересно и будьте в курсе событий.
Отказ первый
Видите короткое сообщение выше? Вот таким образом Apple уведомляет вас о своем «нет», и что ваше приложение пока что не попадает в App Store.
Мое приложение довольно простое: я был сильно удивлен, когда проснулся и увидел отказ в своей почте.
Оказывается, review-команде даже не пришлось тестировать приложение, чтобы отклонить его: в описании приложения среди других сравнений я написал: «iOS vs. Android»:
3.1 Описание приложения не должно упоминать названия других мобильных платформ (Android, Windows Phone …).
В App Store Review 3.1 Guideline все предельно ясно: это отклонение – целиком моя ошибка. К счастью, код менять не нужно, меняем описание и снова отправляем приложение!
Отказ второй
На этот раз review-команда сослалась на App Store Review 14.3 Guideline:
14.3 Приложения, содержащие пользовательский контент, должны содержать метод фильтрации нежелательного материала, а также функцию, позволяющую пользователю пожаловаться на материал и возможность заблокировать нарушителя.
Мое приложение не позволяет пользователю генерировать контент, оно просто предоставляет контент из Twitter (где вы можете пометить/блокировать всё, что хотите).
Если бы мне пришлось применить то, что было сказано (Stream использует только данные в реальном времени), от приложения не было бы никакого толку.
Если бы пользователь пометил твит, то тот твит бы был уже старым: он бы никогда не отобразился в Stream ещё раз!
Я думал, что правило 14.3 не применимо к моему приложению, поэтому я написал апелляцию, включив в неё все вышеперечисленные причины:
Команда App Review ответила на мою апелляцию в течение нескольких часов.
Ответ на апелляцию:
Усвоенный урок: если ваше приложение показывает пользовательский контент, внедрите механизм пометки сомнительного контента/блокировки/модерирования, даже если контент создается не внутри вашего приложения.
К моему счастью, Twitter API предлагает всё, что мне нужно:
Пришло время для очередной подачи на рассмотрение!
Отказ третий
В ожидании каждой проверки я продолжал добавлять больше и больше функций в приложение, в какой-то момент я даже добавил нерасходуемые встроенные покупки.
Это было ошибкой, потому что встроенные покупки стали причиной нового отклонения из магазина.
Все встроенные покупки Stream были нерасходуемыми: после того, как пользователь покупал однажды, эта покупка могла быть приобретена (снова) сколько угодно раз уже бесплатно.
Я хотел добавить в приложение как можно меньше UI элементов: поскольку эти встроенные покупки могли быть «куплены» много раз бесплатно, я не сделал кнопку Restore.
Сообщение от review-команды:
После объяснения моей вышеизложенной логики, мне ответили:
Усвоенный урок: кнопка Restore должна быть!
На этот раз, вероятно из жалости, рецензент посоветовал мне подать заявку на ускоренную проверку (через форму Expedited Review Request) после того, как я добавил кнопку Restore.
Добавление кнопки Restore было самым быстрым: я просто перетащил кнопку в раскадровку, написал три строчки кода, соединяя UIButton с классом UIViewController.
Похоже, команда Expedited Review не проявила такого же сострадания как предыдущий рецензент. Мне пришлось ждать очередного раунда App Reviews.
Отказ четвертый
Тогда я засыпал с хорошим предчувствием, что я проснусь, а мое приложение одобрено, ха-ха, мечтатель:
На этот раз рецензент думал(а), что ему нужна особая Twitter авторизация, чтобы использовать приложение:
После того как я объяснил, что пойдет любой Twitter аккаунт, приложение снова было отправлено на рассмотрение и… было одобрено!
Это значит…что я, наконец, сделал это?
К сожалению, я передумал насчет названия приложения. Сейчас есть только один способ изменить название:
Поменял название, вперед за новым одобрением!
Отказ пятый
А вы ожидали чего-то иного?
Рецензент (предполагаю, новичок) использовал iPad и заявил, что он не может пройти экран Twitter авторизации: это экран, который возникает, когда вы запускаете Stream в первый раз.
Проблема была неясной, потому что рецензент неаккуратно обрезал скриншоты и написал сомнительное сообщение.
После обмена несколькими письмами я записал работу Stream на iPad на видео: приложение снова отправилось на рассмотрение и затем было принято!
Усвоенный урок: не думайте, что все члены review-команды знают, что делают.
Выводы:
После создания приложения всего лишь за 3 месяца, мне пришлось наслаждаться отказами еще 3 месяца. Это время, которое понадобилось на то, чтобы приложение наконец попало в App Store.
В течение этого времени я многое узнал: я надеюсь, что дал вам общее представление о моих неудачах и азарте, сопровождавших меня в этом путешествии.
Я бы хотел дать вам несколько советов для вашей следующей публикации приложения (<сарказм>после всего этого я теперь эксперт</сарказм>):
- Прочитайте App Store Review Guidelines: этот список гораздо короче чем я думал, и это спасет вас от нескольких отказов;
- Размещая новую версию, задействуйте поля App Review Information для того, чтобы рецензенты были в курсе, что изменили/исправили/обновили;
- Если вы размещаете новую версию после отказа, используйте поле Notes, чтобы также выделить то, что вы переделали после последнего отклонения;
- Будьте вежливы: когда рецензенты отклоняют ваше приложение, поблагодарите их и вежливо спросите о подробностях (если нужно) или дайте им знать, что вы собираетесь исправить изъяны в новой версии;
- Будьте терпеливы: выпуск приложения может быть тяжкой ношей, у Apple очень высокие стандарты, и именно поэтому Store не такой захламленный, как его конкуренты.
Удачи вам с новой публикацией!