Когда я впервые начал разрабатывать приложения для iPhone, одной из первых вещей, которые я искал в Xcode, был какой-то менеджер пакетов. Поскольку мы живем в 21 веке, я думал, что очевидно, что почти каждая среда разработки должна иметь встроенный менеджер пакетов, но к моему удивлению я ничего не нашел в Xcode. Но мой поиск не закончился там. Я не мог поверить, что разработчики iOS живут без менеджера пакетов какого-либо рода. К счастью, поиск в Google рассказал мне о CocoaPods, отличном менеджере пакетов для разработчиков iOS, который делает установку и управление зависимостями проекта довольно быстрым и безболезненным.
После открытия CocoaPods моя следующая мысль была «OK, почему у Twilio нет пакета CocoaPods для нашей библиотеки Twilio Client для iOS?». Итак, я решил создать один, и в этом посте я покажу вам, как вы можете использовать его, чтобы установка Twilio Client для iOS в ваш проект Xcode стала простой.
Установка CocoaPods довольно проста. Это ruby-гем, и на сайте CocoaPods есть отличные инструкции по установке и использованию его из командной строки.
Как только вы установите CocoaPods, все, что вам нужно сделать, чтобы добавить зависимости в ваш проект, — это создать файл podfile в каталоге вашего проекта Xcode и включить пакеты, которые вы хотите установить. Например, если вы хотите добавить Twilio Client в ваш проект, ваш файл podfile будет выглядеть так:
Значение *platform* говорит CocoaPods использовать библиотеки, построенные для iOS 5 или выше, а значение pod говорит CocoaPods установить pod TwilioSDK, который содержит Twilio Client для iOS. Если у вас есть другие библиотеки, которые вы хотите использовать в вашем проекте, вы можете добавить их, добавив несколько значений pod в ваш файл podfile.
Как только вы создадите файл podfile, убедитесь, что Xcode и все симуляторы закрыты, а затем вернитесь в командную строку и перейдите в каталог вашего проекта Xcode. Как только вы там, установите pods, используя команду:
Всё, что нужно. Как только CocoaPods закончит установку pods, вы можете открыть ваш проект, используя новый workspace, созданный CocoaPods, и посмотреть, что добавляет каждая библиотека.
Когда вы откроете ваш проект в Xcode, вы увидите новый проект Pods, включенный в workspace. Это место, где CocoaPods устанавливает файлы библиотек. Если вы развернете папки в проекте Pods, вы можете увидеть, что CocoaPods добавил несколько фреймворков, заголовочные файлы для библиотеки Twilio Client и несколько файлов WAV, которые библиотека использует для звуков. Статические библиотеки также есть, просто они не直接 ссылается в проекте.
Хотя CocoaPods делает отличную работу по упрощению установки SDK Twilio Client для iOS, к сожалению, есть одна вещь, которую CocoaPods не может сделать. Чтобы позволить iOS знать, что это приложение VoIP и будет нуждаться в аудио, даже когда приложение работает в фоновом режиме, вам нужно добавить два значения в файл plist вашего приложения. Без них, если пользователь помещает ваше приложение в фон, пока оно подключено к Twilio, аудио вызова остановится, но вызов продолжится. Пользователю придется реактивировать приложение, чтобы продолжить вызов.
Изображение ниже показывает использование редактора Property List для добавления значений Audio и Voip в ключ Required background modes файла plist проекта:
И теперь, когда библиотека Twilio Client полностью установлена в проекте Pods, и значения plist добавлены, вы можете использовать API библиотеки, чтобы написать код, который может делать и принимать VoIP-вызовы, не выходя из приложения.