Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Работа с One signal. Что нужно создавать Unity-разработчику, чтобы сотрудничать со всемирно известными компаниями

Меня зовут Станислав, я Unity-разработчик уже более 10 лет, а также сооснователь украинской аутсорс-команды Stan’s Assets from KAPPS. Мы сотрудничали с топами не только мировой гейм-индустрии (Moon Studios), но и другими всемирно известными компаниями. Одной из таких является One Signal.

Далее я расскажу, как мы стали партнерами One Signal, что мы для них создавали, и как украинским командам добиться похожих результатов. Эта статья будет полезной как для СЕО IT-компаний, которые хотят сотрудничать с международными партнерами, так для разработчиков, которые ищут нестандартные пути решения проблем.

Кто такие One Signal

One Signal — лидер рынка по обмену сообщениями. С их помощью 8 миллиардов сообщений ежедневно исходят от одного миллиона предприятий к их потребителям. Они создают мобильные и веб push-уведомления, налаживают процесс обмена сообщениями в приложениях, SMS и электронной почте.

Познакомились мы с One Signal на старте их карьеры: тогда они только начинали как сервис аналитики. Со временем их фокус сместился на push-уведомления, они начали стремительно расти и быстро развиваться. Этому послужило осознание, что существует большая потребность в умных push-уведомлениях, чтобы в нужный момент подталкивать людей к определенным действиям в игре либо проекте. И создавать их интереснее, нежели просто собирать аналитику.

Наш первый опыт сотрудничества

В то время наши плагины, которые мы разрабатывали для Unity, не сходили с первых страниц Asset Store. Благодаря этому мы и начали сотрудничество с One Signal.

Сперва мы занимались подключением их SDK в наш Unity-плагин по сбору аналитики. С его помощью девелоперы могли собирать любую аналитику без написания этой итерации вручную. Для разработчика это всегда сложно, ведь надо скачать SDK, разобраться, как он работает, прочитать кучу документации, и это очень времязатратно. Когда у тебя в проекте есть готовое решение, которым ты пользуешься, и все, что тебя отделяет от его получения, это нажатие одной кнопки — тогда ты в выигрыше.

Именно так мы добавили поддержку их сервиса аналитики в наш плагин. Буквально с помощью одного нажатия пользователи нашего плагина могли доставать всю аналитику, которую предоставляли One Signal в тот момент.

Хотелось бы поделиться парой интересных деталей.

Для того чтобы автоматизировать установку пакетов, мы добавили функционал работы с manifest.json проекта и package.json пакета, который, кстати, доступен на GitHub нашей компании как открытый пакет.

К примеру, пакет One Signal Android имеет жесткую зависимость на Google External Dependency Manager For Unity (formal Google Play Resolver) — будем его далее по тексту именовать UDM4U. Как в целом и большинство Third Party Android пакетов для Unity.

Как эту зависимость реализуют другие?

Зачастую файлы UDM4U просто добавляются в тело плагина. Они ложатся в папку Assets/ExternalDependencyManage или Assets/GooglePlayResolver в зависимости от версии этого плагина.

Почему мы не могли и не хотели делать также? Тут было две причины. Во первых, если этот пакет уже есть у вас в проекте, и версия отличается, то файлы будут частично заменены, основываясь на метафайлах. В итоге в проекте пользователя будет комбинация из разных версий UDM4U. Гарантировать стабильность такой установки просто невозможно. Во вторых, наш плагин теперь поставляется в форме пакета. И добавить файлы в папку Assets мы просто технически не можем. Да и я всегда считал плохим тоном положить что-либо в корень пользовательского проекта.

То есть нам надо было добавить зависимость через UPM. Нам повезло, что не смотря на то, что это жесткая зависимость, она нужна только на этапе сборки. Что это значит:

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

Шаг 1. Для установки UDM4U нам нужно наличие Google Scope Registry в manifest.json проекта. Именно для этого мы добавили АПИ для работы с manifest.json. Как только наш Android плагин установлен — мы проверяем, есть ли в манифесте Google Scope Registry. Если нет — мы его добавляем автоматически.

Шаг 2. Теперь нам надо объявить зависимость UDM4U в проекте. Самый простой способ — добавить его в manifest.json. Но здесь опять было несколько проблем:

  • Что, если пользователь уже сделал это ранее? Тогда нам придется переписать эту запись с нашей версией. Но это тоже неправильно, потому что таким образом мы вступаем в прямой конфликт с пользовательским решением.
  • Что, если другие пользовательские пакеты имеют зависимость в своих package.json на UDM4U? Например, Firebase пакеты. В таком случае, если мы объявим зависимость на UDM4U в manifest.json, версия в UDM4U в manifest.json будет восприниматься как явный пользовательский выбор и будет приоритетной версией — что тоже не правильно.

Правильный выбор в этом случае — объявить зависимость на UDM4U в package.json нашего Android пакета. Но мы не можем этого сделать, так как если в проекте на момент установки не будет прописан Google Scope Registry в manifest.json, мы просто получим ошибку и невалидное состояние проекта.

Как мы это решили?

  • Проверяем, есть ли в манифесте Google Scope Registry. Если нет — добавляем автоматически.
  • Проверяем, есть ли уже объявленная зависимость на UDM4U в package.json нашего Android пакета, и если ее нет — добавляем автоматически. Мы уже можем себе это позволить на этом этапе, так как мы на 100% уверены, что проект содержит Google Scope Registry, а значит наша новая зависимость может быть решена.

Как всегда, дьявол кроется в деталях :) Подобный подход мы продолжаем использовать и для других продуктов.

Как мы продолжили свое партнерство

Сейчас у One Signal есть продукт, который позволяет создавать push-уведомления. Их можно использовать на различных сервисах, начиная с игр, приложений, и заканчивая имейлами.

Компания ставит перед собой задачу сделать уведомления доступными для всевозможных платформ. И чтобы облегчить такую интеграцию для каждой из них, One Signal создают свою обертку, которая должна быть удобной для людей, которые с ней работают. Мы стали экспертами, которые помогали им адаптировать свое приложение для Unity.

Именно для этой задачи мы возобновили сотрудничество. Они обратились к нам как к экспертам, чтобы получить фидбэк об их новом плагине для Unity. Мы сделали review — провели экспертную аналитику, и нашли в нем некоторые ошибки и недочеты. Поэтому сами же предложили их исправить. Так мы помогли One signal сделать их плагины более Unity-friendly.

Что именно мы сделали для One Signal

При первой ревизии плагина One Signal мы заметили все стандартные ошибки, характерные для новичков, которые начинают делать свой плагин. И это нормальная ситуация, потому что сложно понять специфику работы с самого начала, без опыта работы. А в случае с плагином — нужно еще понимать, чего хотят пользователи этой платформы (в нашем случае — Unity). Поэтому мы решили реализовать некоторые фичи, что подняли новый плагин One Signal на абсолютно новый уровень с точки зрения удобства и функционала.

Что именно мы сделали:

  • Была переработана конвенция кода под ту, которую использует Unity для разработки пакетов.
  • Изменили структуру плагина под Unity Package Manager. Вместо монолитной структуры теперь пользователь может устанавливать только ту часть (например, как UPM пакет), которая ему нужна, а не весь плагин целиком.
  • Поскольку сам продукт Open Source, то помимо установки на Asset Store мы также добавили возможность устанавливать его через NPM, используя npmjs как scope registry.

  • Дополнительно зарегистрировали репозиторий на OpenUPM. Это добавило удобства использования и больше вариантов, как найти продукт.
  • Обновили Editor UI для плагина для того, чтобы упростить его настройку и дать немного полезной информации пользователю прямо в редакторе.

  • Добавили новый пакет bootstrapper, который автоматизировал установку One Signal в проект. Кто пробовал добавлять Third Party NPM пакет в проект, поймет, сколько иногда не очевидных шагов тут нужно пройти.

Так мы работали с их SDK (software Development Kit) — продуктом, который разработчики встраивают в свой проект. У нас было очень много опыта создания таких продуктов именно для Unity. Важно понимать, что SDK — это продукт для программистов. А делать что-то для пользователей и для разработчиков — это очень разные вещи. В этом и есть наша специализация и главная экспертиза — мы создаем продукты для девелоперов, таких же как мы. Так мы сохраняем их время и усилия.

Ведь по сути каждая платформа накладывает свой отпечаток на создание SDK. И поскольку у нас было много успешного опыта в разработке таких проектов для Unity — конечно же, мы могли посоветовать One Signal интересные и классные решения (то, о чем я писал выше: мы сделали больше способов доставки их SDK, подключили их к Unity-package менеджеру, переработали структуру, почистили код т.д.).

Главным вызовым в этом проекте было улучшить плагин таком образом, чтобы одновременно реализовать все наши идеи! При этом исполнив самую основную задачу — сделать продукт более удобным и сохранить обратную совместимость для уже существующих пользователей.

С нашей помощью разработчикам было максимально удобно им пользоваться, он стал более понятным и дружественным. Недавно состоялся релиз их SDK для Unity, над которым работали и мы. Очень приятно оставить отпечаток своей работы в компаний такого масштаба.

Чему нас это научило

Сотрудничество с One Signal дало нам очень интересный опыт. Это большая мировая компания, но работать с ними было очень легко. Они суперкоммуникабельные, у них минимум бюрократии и максимум позитива! Очень редко встречаешь компании, в которых если тебе надо что-то обсудить — то через пять минут ты уже будешь разговаривать с человеком, который компетентен в этом вопросе! Так мы научились у One Signal быть гибкими, легко улаживать бюрократические вопросы и относиться ко всем проблемам как к возможности стать лучше.

Как начать работу с такими компаниями как One Signal

Читая этот текст, вы можете подумать: «Так ребят, вам же просто повезло, вас увидели и предложили вам работу. А как быть мне / нашей компании?».

В первую очередь надо определить свою нишу, где вы по-настоящему классные специалисты, и где ваша работа приносит вам удовольствие, а другим — пользу.

Следующим шагом будет не скрывать свои умения и много о них рассказывать: делиться своими мыслями, контентом, писать в Twitter, публиковать свои игры, проекты, драфты на самых разных платформах.

Если у вас есть компания мечты, с которой вы бы хотели поработать — не стесняйтесь и напишите им.

И последнее, но не в последнюю очередь — верьте в свои силы и мечты. Когда-то в начале нашей карьеры мы бы не поверили, что будем работать с такими гигантами в индустрии как One Signal. Но разве есть что-то невозможное в этом мире?

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі