Хабрахабр

App Store не позвонит. Или как я сделала своё приложение, но оно не попадёт к пользователям

Чуть позже я узнала, что неплохо дополнять код дизайном. Когда-то я думала, что для того, чтобы запустить своё приложение достаточно написать код. Но всё это может быть лишним, если не следовать гайдлайнам. Ещё позже я поняла, что необходимо искать аудиторию и продвигать ей свой продукт. Ниже я расскажу о своём первом опыте самостоятельной разработки и почему моё приложение не увидит пользователей.

Так вышло, что последний год я совсем не писала код, а была менеджером продукта. Для начала оговорюсь, что приложения я разрабатываю уже около пяти лет и это не первое моё приложение вообще, но первое абсолютно самостоятельное, в котором я прошла путь от идеи до реализации. Но никогда начало ломаться через полгода, когда мне стало интересно разобраться в data science и python. Мне казалось, что код я не буду писать больше никогда, что это слишком скучно. И окончательно сломалось через год, когда мне очень захотелось сделать что-то руками и на свет стало появляться моё приложение.

Оно помогает сбегать со скучных свиданий или встреч. Приложение в первой версии называлось TinderCall. Я решила, что это можно чуть автоматизировать, и звонить себе самостоятельно. Я несколько раз оказывалась в такой неловкой ситуации, что проще всего мне было написать подруге: “Набери меня скорее”, и ждать. Сама идея приложения появилась у меня от чтения одного блога в инстаграмме, в котором автор рассказывает о том, как она ходит на свидания (от инстаграмма тоже бывает польза). К тому же выглядело, как отличный способ поработать с CallKit и PushKit. Чуть позже приложение стало называться “KateCall“ или “Катя, позвони”. Там многие девушки сталкивались с подобной ситуацией. Мне оно кажется красивой игрой слов. Название появилось в разговоре с подругой, которая тоже очень прониклась идеей и сказала, что она обычно просит сделать это Катю: “Катя, позвони”.

Нашла несколько похожих приложений. Дальше я начала смотреть, а что уже есть на эту тему. По всем ним было видно, что это чье-то первое приложение. Ничего удивительного, идея лежит на поверхности. Я решила, что стоит сделать еще одно. Без дизайна, и с необходимостью держать приложение открытым, чтобы пришел звонок. Всё равно мне хотелось чем-то размять мышцу программирования. Только оно будет красивее и функциональнее.

Вначале я решила, что сделаю дизайн самостоятельно, ведь это просто: любимый цвет людей синий, сетка элементов на 8, к тому же я преподавала xCode для дизайнеров. Функционал был определен максимально простым: возможность выбора имени звонящего и времени через которое произойдет звонок. Но когда я его сделала, поняла, что лучше обращусь к своим друзьям-дизайнерам.

Всего разработка заняла 35 дней от создания проекта до нажатия на кнопку Submit. Дизайнерская версия мне понравилась гораздо больше, и я приступила к реализации. Самое большое количество комитов было сделано мной по четвергам. 17 комитов и около 40 часов, включая написание кода, чтение и борьбу с багами.

Для тех кому интересно узнать детали и ограничения работы с CallKit и VoIP-пушами, добро пожаловать сюда

Код проекта доступен здесь.

С помощью CallKit можно сделать звонки максимально правдоподобными.

  • используется стандартный экран вызовов
  • мелодия и контакты соответствуют реальным
  • звонок показывается в книге вызовов.

Во-первых, в стандартный экран звонка нельзя передать любую картинку. Есть несколько нюансов. Так, если звонок идет в приложении, то после ответа нужно показывать экран разговора самостоятельно. Во-вторых, экран звонка ведет себя по-разному в зависимости от того открыто приложение или нет. В-третьих, CallKit нельзя использовать в Китае. А если ответить на заблокированном экране, то появится стандартный экран разговора.

Таймер мне не подходил, потому что для него нужно держать приложение постоянно открытым. Второй технический момент связан с пушами. Оказалось, что существует отдельный тип пушей для VoIP. Я думала в сторону локальных пушей, но они не гарантируют того, что приложение будет разбужено. Они обладают целым списком замечательных свойств:

  • приложение автоматически запускается в момент получения пуша, даже если оно было закрыто.
  • не требуется получать разрешение от пользователя для использования этого вида пушей.
  • после получения пуш сразу же обрабатывается приложением.

Отдельный middleware для получения этого пуша писать не хотелось, как оказалось, и не нужно было. Но и использовать их можно только если есть функциональность звонков. Я, честно, не представляю ситуацию, где ещё могут понадобиться VoIP-пуши по расписанию, но возможность их слать есть. Библиотека OneSignal позволяет посылать любые виды remote-пушей из приложения по расписанию. Получить его можно там же где и обычный. Для OneSignal нужно обязательно использовать отдельный voip-push сертификат.

Захотелось сделать более понятный экран с временем ожидания звонка, а потом еще информацию обо мне и обратною связь, добавить taptic, добавить возможность выбора голоса, добавить… Я смогла остановиться после первой доработки и решила, что зная AppStore и их количество ограничений, стоит отправить им приложение как есть, а потом уже доделать приятные мелочи. Когда основной функционал был закончен, я решила, что этого не достаточно. И не прогадала.

1. Моё приложение отклонили по двум пунктам: 1. 2. 6 Apps that enable anonymous or prank phone calls or SMS/MMS messaging will be rejected(Приложения, которые позволяют делать анонимные или разыгрывающий звонки, смс, ммс будут отклонены), и 5. Так что существующие приложения скорее всего не использовали CallKit, не потому что не догадались, а потому что нельзя. 5 Your app contains features that mimic the iOS call interface or behavior(Приложение мимикрирует под стандартный механизм звонков).

Fake calls ни в каком виде нельзя сочетать с CallKit и VoIP пушами. К сожалению, диалог со службой публикации ни к чему не привел. Доводы о том, что это сделано не шутки ради, а для полезного дела, не помогли.

Но для этого нужно обрезать функционал до уровня тех приложений, что уже есть. Я уже планировала, как буду продвигать своё приложение на ProductHunt и прочих площадках, начну общаться с пользователями, стану настоящим стартапером. Эта идея мне пока не очень нравится, и я думаю просто оставить свой код на gitHub, а про приложение забыть, опыт оно уже принесло.

В следующий раз, когда я буду публиковать свои приложения, я обязательно:

  1. Пробегусь хотя бы поиском по гайдам публикации в AppStore
  2. Буду публиковать приложение как можно раньше
  3. Задумаюсь, а почему такого функционала нет в существующих продуктах на рынке, и еще более внимательно пробегусь по гайдам.
  4. Не буду шутить с Apple.
Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»