Подтвердить что ты не робот

Как расширить приложение iOS до tvOS

У меня есть приложение iOS, которое нужно расширить до tvOS. Вся информация, которую я нашел, объясняет, как начать с нуля! Есть ли способ расширить мое приложение на tvOS, или я должен начать с ним новый проект?

Update1: Мой вопрос: как продлить мой существующий проект для поддержки tvOS без его создания с нуля?

Update2: Джесс Бауэр указывает на веб-сайт Apple:

Уполномочивайте пользователей пользоваться своими любимыми приложениями как на iOS, так и на новом Apple TV с одной покупкой, предоставляя универсальную покупку для ваше приложение в App Store.

Это означает, что нам нужно создать новый пакет в нашем существующем проекте и включить "универсальную" покупку, поэтому он будет считаться одним приложением в App Store.

4b9b3361

Ответ 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 в настройках сборки. Необходимо, чтобы симулятор ТВ отображался