63

tvOS に拡張する必要がある iOS アプリがあります。私が見つけたすべての情報は、ゼロから始める方法を説明しています! アプリを tvOS に拡張する方法はありますか、それとも新しいプロジェクトを開始する必要がありますか?

Update1: 私の質問は: 既存のプロジェクトをゼロから構築せずに tvOS をサポートするように拡張するにはどうすればよいですか?

Update2: Apple の Web サイトでの Jess Bower の指摘:

App Store でのアプリのユニバーサル購入を有効にすることで、1 回の購入で iOS と新しい Apple TV の両方でお気に入りのアプリを楽しむことができます。

つまり、既存のプロジェクトで新しいバンドルを作成し、「ユニバーサル」購入を有効にして、App Store で 1 つのアプリとしてカウントされるようにする必要があります。

4

9 に答える 9

29

tvOS SDK は iOS に基づいていますが、互換性はありません。最初の iPad がリリースされたときとは異なり、新しい Apple TV では iOS アプリを実行できません。

TV 用の AppStore には、tvOS 専用に作成されたアプリのみが含まれます。

Apple TV 用のアプリを作成しようとしている iOS 開発者には、新しいドキュメント ページをチェックすることをお勧めします: https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/index.html#/ /apple_ref/doc/uid/TP40015241-CH12-SW1

具体的には、継承された iOS フレームワークのセクションをチェックして、既存の iOS プロジェクトからすぐに使えるものを把握してください。

于 2015-09-09T23:28:10.320 に答える
21

In Xcode 7.1 (which introduces tvOS SDK) you can add a tvOS target as any other (File -> New -> Target... -> tvOS -> ...) and it supports both Objective-C and Swift, so yes - it's possible to share code between your iOS and tvOS app, you just need to check your source target membership and enable it on your tvOS target. To extend the purchases across iOS and tvOS app we should use Universal Purchases.

于 2015-09-10T12:10:23.990 に答える
18

変更が必要なすべてのものを見つけるのに少し時間がかかりましたが、このリストでカバーする必要があります。

  1. iOSターゲットをクリックして複製
  2. 新しい tvOS ターゲットのベース SDK を最新の tvOS に変更します
  3. info.plist のコピーを作成し、tvOS がそれを指すようにします
  4. すべての tvOS アイコンと起動イメージを作成する
  5. tvOS ビルド設定の TARGETED_DEVICE_FAMILY を 3 に設定します。
  6. shouldAutorotate、prefersStatusBarHidden などを使用せずに、新しい tvOS 固有のバージョンのコードを追加します。
于 2015-11-02T04:49:10.097 に答える
8
  1. tvOS 用に新しいターゲットを追加する必要があります。それには2つの方法があります

    • [ファイル] > [新規] > [ファイル...] > [tvOS ターゲット] から新しいターゲットを追加します。
    • 既存の iOS ターゲットを複製し、「ビルド設定」で TARGETED_DEVICE_FAMILY を 3 に変更し、「サポートされるプラットフォーム」を tvOS に変更します。
  2. を使用してポッドを tvOS ターゲットに追加する必要がありますpod install。tvOS で使用できる/使用したいポッドのリストが異なる場合があります。以下を使用して、異なるターゲットの Pod を 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
    
  3. 現在、ほとんどの Pod は tvOS をサポートしていません。これらの Pod をプロジェクトで機能させる手順は次のとおりです。

    • ローカル ディスクに git リポジトリのクローンを作成します
    • Pod のバージョンが別のターゲット (iOS ターゲット) で使用されている場合は、名前を変更してください。変更しないと、CocoaPods からエラーが発生します。例: RestKit --> RestKitTV で、Podfile で :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
        
  4. ファイルをターゲットに追加します。

    • ターゲットの「ビルド フェーズ」の「コンパイル ソース」にソース コード (.m ファイル) を追加します。
    • 「バンドルリソースのコピー」に画像を追加
    • 「Link Binary with Libraries」にフレームワークを追加します。すべてのフレームワークが tvOS と互換性があるわけではないことに注意してください
  5. TARGET_OS_TV および TARGET_OS_IOS マクロを使用して、tvOS 非互換コードを分離します

    #if !TARGET_OS_TV
        *iOS only code*
    #else
        *tvOS only code*
    #end
    
于 2016-02-03T21:23:59.980 に答える
5

+Simon-Tillson の回答は正しいですが、TARGET_OS_IOS が定義されていない iOS 8.1 以下の SDK との後方互換性の問題がいくつかありました (古い Xcode バージョンの場合)。

次のコードは、iOS 9.0/9.1 SDK + および以前の 8.1 以前の SDK で同じように動作することを修正します。

#if TARGET_OS_IOS || (TARGET_OS_IPHONE && !TARGET_OS_TV)
// iOS-specific code
#elif TARGET_OS_TV
// tvOS-specific code
#endif
于 2015-10-28T08:04:13.880 に答える
2

私のプロジェクトの場合、既存の iOS プロジェクトに新しいターゲットを追加し、一部のコードを適切に変更しました (いくつかの領域で #if os(tvOS/iOS) を使用)。iOS デバイスまたは Apple TV で同じアプリを実行できるようになりました。

tvOS に欠けている唯一のフレームワークは WebKit (リッチ テキストのレンダリングに必要) であり、別のメカニズムを考え出す必要がありました。

私はこのプロジェクトをすぐに (10 月末までに) オープンソースにして、他の人が見てもらえるようにします。

于 2015-10-21T07:56:02.217 に答える
0

ビルド設定で Base SDK を TVos 9.x に変更することを忘れないでください。TVシミュレーターが表示されるために必要です

于 2016-06-01T14:08:51.407 に答える