TvOSに拡張する必要があるiOSアプリがあります。私が見つけたすべての情報は、ゼロから始める方法を説明しています!アプリをtvOSに拡張する方法はありますか、それとも新しいプロジェクトを開始する必要がありますか?
pdate1:私の質問は、既存のプロジェクトを拡張して、最初からビルドせずにtvOSをサポートする方法ですか?
pdate2: AppleのWebサイトのJess Bowerポイント:
App Storeでアプリのユニバーサル購入を有効にすることで、iOSと新しいApple TVの両方でお気に入りのアプリを1回の購入で楽しむことができます。
つまり、既存のプロジェクトで新しいバンドルを作成し、「ユニバーサル」購入を有効にして、App Storeで1つのアプリとしてカウントする必要があります。
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
具体的には、Inherited iOS Frameworksセクションをチェックして、既存のiOSプロジェクトからすぐに動作するものを理解してください。
Xcode 7.1(tvOS SDKを導入)では、tvOSターゲットを他の(File-> New-> Target ...-> tvOS-> ...)として追加でき、Objective-CとSwiftの両方をサポートするため、はい-iOSとtvOSアプリ間でコードを共有することができます。ソースターゲットメンバーシップを確認し、tvOSターゲットで有効にするだけです。 iOSおよびtvOSアプリ全体で購入を延長するには、ユニバーサル購入を使用する必要があります。
また、tvOSの新しいターゲットを追加することは、特にObjective-cまたはSwiftプロジェクト間で共有するコードがたくさんある場合)の方法だと思います。
共有コードにtvOSでサポートされていないタイプが存在する可能性がある場合、これらのプリプロセッサシンボルを使用して、tvOSの代替コードスニペットを提供しました。
#if TARGET_OS_IOS
// iOS-specific code
#Elif TARGET_OS_TV
// tvOS-specific code
#endif
変更に必要なすべてのものを見つけるのに少し時間がかかりましたが、このリストがそれをカバーするはずです。
いくつかの制限と課題を列挙するだけです:
1。 Apple TV。アプリの永続的なローカルストレージはありません。データはiCloudに保存する必要があります。
2。 Apple TVアプリは200MBに制限されています。オンデマンドリソース(App Storeでホストされるアプリコンテンツ)を使用する必要があります。利点は、アプリのサイズが小さくなることと、アプリのリソースの遅延読み込みです。
3。 UIは大幅に異なります。ヒューマンインターフェイスガイドラインは ドキュメントごと に従ってください
4。 JavaScriptとTVMLフレームワークを使用してクライアントサーバーアプリを作成します。
5。 UIタッチフォーカスの制御。 UIFocusEnvironmentは、ビュー階層のブランチのフォーカス関連の動作を制御します。 UIViewControllerは、UIFocusEnvironmentプロトコルに準拠しています。
6。視差アートワークの作成XcodeでLSRイメージを作成し、ターミナルを使用してLCRイメージを作成する必要があります。 UIImageオブジェクトは、LCR画像を正しく表示できます。
TvOSに新しいターゲットを追加する必要があります。それを行うには2つの方法があります
ポッドは、pod install
を使用してtvOSターゲットに追加する必要があります。 tvOSで使用できる/したいポッドの別のリストがあります。さまざまなターゲットのポッドは、次を使用してポッドファイルで分離できます。
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
現在、ほとんどのポッドはtvOSをサポートしていません。これらのポッドの場合、プロジェクトでそれらを動作させる手順は次のとおりです。
ポッドのバージョンが別のターゲット(iOSターゲット)で使用されている場合は、名前を変更します。そうしないと、CocoaPodsが文句を言います。 RestKit-> RestKitTVおよびPodfileで:pathを使用して、クローンリポジトリの場所をポイントします。
pod 'RestKitTV', :path => 'Other/RestKitTV'
クローンリポジトリのpodspecファイルを更新します。
プラットフォームをtvOSに変更するか、サポートされているプラットフォームのリストにtvOSを追加します
Pod::Spec.new do |s|
..
s.platform = :tvos
..
end
OR
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
ファイルをターゲットに追加します。
TARGET_OS_TVおよびTARGET_OS_IOSマクロを使用して、tvOSの非互換コードを分離します
#if !TARGET_OS_TV
*iOS only code*
#else
*tvOS only code*
#end
+ Simon-Tillsonの答えは正しいが、iOS 8.1以前の下位互換性の問題があり、TARGET_OS_IOSが定義されていないSDK(古い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
私のプロジェクトの場合、既存のiOSプロジェクトに新しいターゲットを追加し、いくつかのコードを適切に変更しました(いくつかの領域で#if os(tvOS/iOS)を使用)。 iOSデバイスまたはApple TV。)で同じアプリを実行できるようになりました。
TvOSにない唯一のフレームワークはWebKit(リッチテキストのレンダリングに必要でした)であり、代替メカニズムを考え出す必要がありました。
他の人が見ることができるように、私はこのプロジェクトをすぐに(10月末までに)オープンソースにするつもりです。
ビルド設定でBase SDKをTVos 9.xに変更することを忘れないでください。テレビシミュレーターを表示する必要があります