Могу ли я создать свою собственную сетевую структуру (которая зависит от AFNetworking) в качестве среды watchOS2?

Я пытался изменить свой проект для поддержки архитектуры WatchOS2. В настоящее время у меня есть сетевая структура, основанная на AFNetworking. До сих пор я использовал его с моим приложением для часов. Теперь я пытаюсь создать фреймворк для платформ watchos/watchsimulator.

Я получаю сообщение об ошибке «Файл SystemConfiguration/SystemConfiguration.h» не найден для некоторых классов AFNetworking.

Я знаю, что конфигурация системы не входит в число доступных системных фреймворков для watchOS2. А для сетевых Apple говорит:

Сеть

Поддержка сетевых операций включает следующие технологии:

Расширения WatchKit могут напрямую обращаться к сети с помощью объекта NSURLSession. Расширения WatchKit имеют полный доступ к возможностям NSURLSession, включая возможность загрузки файлов в фоновом режиме. Для получения информации о том, как использовать этот класс, см. Руководство по программированию системы загрузки URL. Инфраструктура Watch Connectivity поддерживает двустороннюю связь между вашим приложением Watch и приложением iOS. Используйте эту структуру для координации действий между двумя приложениями. Дополнительную информацию см. в разделе Взаимодействие с сопутствующим приложением для iOS.

Я хочу поддерживать как iOS, так и watchos для своего сетевого SDK. Есть ли способ сделать этот проект для платформы watchOS? Или это означает, что мне разрешено использовать NSURLConnection только внутри моего приложения для часов?


person Emel    schedule 09.07.2015    source источник


Ответы (2)


Согласно документации AFNetworking:

Загрузка URL-адреса Наиболее часто используемые классы в системе загрузки URL-адресов позволяют вашему приложению извлекать содержимое URL-адреса из источника. Вы можете получить этот контент разными способами, в зависимости от требований вашего приложения. Выбранный вами API зависит от версии OS X или iOS, на которую нацелено ваше приложение, и от того, хотите ли вы получать данные в виде файла или блока данных в памяти:

  • В iOS 7 и более поздних версиях или OS X версии 10.9 и более поздних версиях NSURLSession является предпочтительным API для нового кода, выполняющего запросы URL-адресов.

Если вы посмотрите на диаграммы на этой странице, то увидите, что AFNetworking фактически использует NSURLSession в некоторых случаях. Однако, поскольку инфраструктура SystemConfiguration недоступна в watchkit, вам потребуется удалить эту зависимость, чтобы включить AFNetworking как в приложения для iOS, так и в приложения watchkit.

Я не уверен, для чего AFNetworking использует этот фреймворк (возможно, это очень важно!), но если есть определенные файлы, которым не нужны эти настройки в приложении для часов, вы можете изменить исходный код AFNetworking, чтобы не включать эти элементы в приложение для часов:

#if os(iOS)
// Include SystemConfiguration framework
#elseif os(watchOS)
// Exclude SystemConfiguration framework
#endif
person lehn0058    schedule 18.08.2015

Вот недавняя фиксация на github для AFNetworking для поддержки watchOS.

Смотрю список изменений..

Версия 2.6.0 поддерживает watchOS...

Этот выпуск теперь поддерживает watchOS 2.0, которая использует целевые условия, которые присутствуют только в Xcode 7 и iOS 9/watchOS 2.0/OS X 10.10. Если вы устанавливаете библиотеку с помощью CocoaPods, AFNetworking определит эти целевые условия для более старых платформ, что позволит компилировать ваш код. Если вы не используете Cocoapods, вам нужно будет добавить следующий код в файл PCH.

person TWilly    schedule 28.08.2015