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

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

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

В этом посте будет рассмотрен процесс настройки простого пакета iOS, расскажут о некоторых распространенных ловушках, с которыми вы можете столкнуться в процессе, узнайте, как тестировать локально, и, наконец, опубликуйте в SPM (Swift Package Manager).

Создание нового пакета

Xcode

Создание нового пакета изнутри Xcode занимает около 5 секунд. Перейдите в Файл ›Новый› Пакет Swift, затем сохраните пакет в любом месте.

Командная строка

Кроме того, вы можете создать пакет из командной строки, выполнив:

Настройка вашего Swift-пакета

Пакеты Swift не используют .xcproject или .xcworkspace, а полагаются на свою структуру папок и используют Package.swift файл для дополнительной настройки. В следующем листинге кода показан простой манифест пакета.

Код

На этом этапе у вас будет файл с именем MediumSDK.swift (или как там называется ваш пакет) в каталоге Sources. Здесь мы будем хранить код, который необходимо включить в наш SDK.

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

Затем вы должны добавить этот файл в папку Sources / MediumSDK или Sources / YourPackageNameHere. При добавлении настраиваемого класса следует обратить внимание на несколько моментов:

  • Убедитесь, что ваш класс (или протокол, или функция) является общедоступным, иначе ваш проект, который его импортирует, не сможет получить к нему доступ
  • Обязательно соберите пакет внутри Xcode перед публикацией в git. Это позволит выявить ошибки, которые вы иначе бы не заметили, и сэкономит массу времени на отладку.
  • Протестируйте локально, прежде чем нажимать на git (я расскажу, как это сделать дальше)

Варианты развертывания

Локальное тестирование

Перед публикацией вашего пакета в любом месте вы определенно захотите убедиться, что интегрировали и протестировали его с проектом Xcode локально.

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

Найдите и скопируйте абсолютный путь к вашему пакету, затем перейдите в Файл ›Пакеты Swift› Добавить зависимость пакета…, и введите file: // {path} в качестве URL-адреса. На этом этапе вы можете выбрать, какую ветку, идентификатор фиксации или версию вы хотите использовать. Продолжите, и он автоматически установит и свяжет ваш проект, а также любые зависимости.

Если вы вносите какие-либо изменения в свой код, обязательно зафиксируйте их, а затем обновите пакет в Xcode. Вы можете сделать это, перейдя в Файл ›Swift› Пакеты ›Обновить до последних версий пакетов.

Публикация в SPM (Swift Package Manager)

Когда вы будете готовы к публикации в SPM, процесс станет почти таким же простым, как и локальное тестирование. Просто отправьте свои локальные коммиты в GitHub (или любое другое репозиторий кода), и вы можете выполнить описанный выше процесс, просто заменив локальный путь к файлу на URL-адрес репо.

Публикация в CocoaPods

Еще один очень популярный менеджер пакетов - CocoaPods. Публикация в CocoaPods немного сложнее, чем SPM, но если вы хотите максимально упростить интеграцию вашего пакета другими разработчиками, я определенно рекомендую изучить его.

Вот ссылка на документацию на сайте CocoaPods, если вам интересно:



Для получения дополнительной информации посетите: