Как расширить приложение iOS до tvOS
У меня есть приложение iOS, которое нужно расширить до tvOS.
Вся информация, которую я нашел, объясняет, как начать с нуля!
Есть ли способ расширить мое приложение на tvOS, или я должен начать с ним новый проект?
Update1:
Мой вопрос: как продлить мой существующий проект для поддержки tvOS без его создания с нуля?
Update2:
Джесс Бауэр указывает на веб-сайт Apple:
Уполномочивайте пользователей пользоваться своими любимыми приложениями как на iOS, так и на новом Apple TV с одной покупкой, предоставляя универсальную покупку для ваше приложение в App Store.
Это означает, что нам нужно создать новый пакет в нашем существующем проекте и включить "универсальную" покупку, поэтому он будет считаться одним приложением в App Store.
Ответы
Ответ 1
SDK tvOS основан на iOS, но не является взаимозаменяемым. В отличие от того, когда был выпущен первый iPad, новый Apple TV не сможет запускать приложения iOS.
В AppStore для телевизора будут включены только приложения, созданные специально для tvOS.
Для любых разработчиков iOS, которые хотят создавать приложения для Apple TV, я бы рекомендовал проверить страницу новой документации: https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/index.html#//apple_ref/doc/uid/TP40015241-CH12-SW1
В частности, ознакомьтесь с разделом Inherited iOS Framework, чтобы дать вам представление о том, что будет работать из коробки из существующих проектов iOS.
Ответ 2
В Xcode 7.1 (который вводит SDK tvOS) вы можете добавить цель tvOS как любую другую (File → New → Target... → tvOS → ...) и поддерживает как Objective-C, так и Swift, так что да - возможно обмен кодами между вашим iOS и tvOS-приложением, вам просто нужно проверить свое целевое членство и включить его в своей целевой цели tvOS. Чтобы расширить покупки в приложениях iOS и tvOS, мы должны использовать Universal Purchases.
Ответ 3
Я также считаю, что добавление новой цели для tvOS - это путь, особенно если у вас много objective-c или быстрого кода для совместного использования между проектами.
В тех случаях, когда в вашем общем коде могут присутствовать некоторые неподдерживаемые типы tvOS, я использовал эти символы препроцессора для предоставления альтернативных фрагментов кода для tvOS:
#if TARGET_OS_IOS
// iOS-specific code
#elif TARGET_OS_TV
// tvOS-specific code
#endif
Ответ 4
Принял меня немного, чтобы найти все, что нужно было изменить, но этот список должен его покрыть.
- нажмите iOS target и дубликат
- изменить базу sdk новой цели tvOS на tvOS last
- сделать копию info.plist и указать tvOS на этот
- сделать все значки tvOS и запускать изображения
- установите TARGETED_DEVICE_FAMILY на 3 для настроек сборки tvOS.
- добавить любые новые версии кода, специфичные для tvOS, например. без shouldAutorotate, prefersStatusBarHidden и т.д.
Ответ 5
Просто перечислим некоторые ограничения и проблемы:
1. На Apple TV нет постоянного хранилища для приложений. Данные должны храниться в iCloud.
2. Максимальный размер приложения Apple TV ограничен до 200 МБ. Необходимо использовать ресурсы по требованию (содержимое приложения, размещенное в App Store). Преимущества - это меньший размер приложения и ленивая загрузка ресурсов приложения.
3. Пользовательский интерфейс сильно отличается. Руководства по человеческому интерфейсу должны соблюдаться как для документа.
4. Создание приложения Client-Server с использованием инфраструктуры JavaScript и TVML.
5. Управление сенсорным фокусом пользовательского интерфейса. UIFocusEnvironment контролирует поведение, связанное с фокусом, для ветки иерархии представлений. UIViewController соответствует протоколу UIFocusEnvironment.
6. Создание произведения Parallax Вам необходимо создать изображение LSR с помощью Xcode, а затем использовать терминал для создания изображения LCR. Объект UIImage может правильно отображать изображение LCR.
Ответ 6
+ Ответ Simon-Tillson верен, однако у меня были некоторые проблемы с обратной совместимостью с iOS 8.1 и ниже SDK, где TARGET_OS_IOS не был определен (для более старых версий Xcode)
Следующий код исправляет это и работает так же для IOS 9.0/9.1 SDK + и предыдущих 8.1 и менее SDKS.
#if TARGET_OS_IOS || (TARGET_OS_IPHONE && !TARGET_OS_TV)
// iOS-specific code
#elif TARGET_OS_TV
// tvOS-specific code
#endif
Ответ 7
В случае моего проекта я просто добавил новую цель в существующий проект iOS и соответствующим образом модифицировал некоторый код (используя #if os (tvOS/iOS) в нескольких областях). Теперь я могу запускать одно и то же приложение на устройствах iOS или Apple TV.
Единственной инфраструктурой, отсутствующей в tvOS, была WebKit (которая была необходима для создания богатого текста), и мне нужно было создать альтернативный механизм.
Я скоро открою источник этого проекта (до конца октября), чтобы другие люди могли посмотреть.
Ответ 8
-
Для tvOS должна быть добавлена новая цель. Это можно сделать двумя способами:
- Добавить новую цель через File > New > File... > tvOS Target.
- Дублируйте существующую цель iOS и измените TARGETED_DEVICE_FAMILY на 3 и "Поддерживаемые платформы" на tvOS в "Настройки сборки"
-
Подпрограммы должны быть добавлены к цели tvOS с помощью pod install
. Может быть другой список контейнеров, которые вы можете/хотите использовать в tvOS. Pods для разных целей можно разделить в Podfile, используя:
target 'iOS TARGET NAME' do
pod 'podname', :git => 'https://github.com/name.git'
end
target 'tvOS TARGET NAME' do
pod 'podname', :git => 'https://github.com/name.git'
end
-
Большинство Pods в настоящий момент не поддерживают tvOS. Для этих Pods, вот шаги, чтобы заставить их работать в вашем проекте:
- Скройте репозиторий git на локальном диске
-
Если версия pod используется в другой цели (цель iOS), измените имя, иначе CocoaPods будет жаловаться: например. RestKit → RestKitTV и используйте: path В подкасте, чтобы указать на местоположение клонированного репо:
pod 'RestKitTV', :path => 'Other/RestKitTV'
-
Обновить файл podspec в клонированном репо:
- Измените имя для совместимости с новым именем
-
Измените платформу на tvOS или добавьте tvOS в список поддерживаемых платформ
Pod::Spec.new do |s|
..
s.platform = :tvos
..
end
ИЛИ
Pod::Spec.new do |s|
..
s.tvos.deployment_target = '9.0'
s.tvos.exclude_files = 'framework/Source/Mac', ....
s.tvos.frameworks = ['OpenGLES', 'CoreMedia', 'QuartzCore']
..
end
-
Добавить файлы в цель:
- Добавьте исходный код (.m файлы) в "Скомпилировать источники" для "Сформировать фазы" для целевого
- Добавить изображения в "Копировать ресурсы Bundle"
- Добавьте фреймворки в ссылку "Связывание двоичных файлов с библиотеками". Обратите внимание, что не все фреймворки совместимы с tvOS
-
Используйте TARGET_OS_TV и TARGET_OS_IOS макросы для разделения несовместимого кода tvOS
#if !TARGET_OS_TV
*iOS only code*
#else
*tvOS only code*
#end
Ответ 9
Не забудьте изменить базовый SDK на TVos 9.x в настройках сборки. Необходимо, чтобы симулятор ТВ отображался