Bla*_*ckM 58 ios apple-tv tvos
我有一个iOS应用程序,我需要扩展到tvOS.我找到的所有信息都在解释如何从头开始!有没有办法将我的应用程序扩展到tvOS,或者我应该用它开始一个新项目?
Update1: 我的问题是:如何扩展我现有的项目以支持tvOS而无需从头开始构建它?
Update2: Jess Bower指向Apple的网站:
通过在App Store上为您的应用程序实现通用购买,使客户能够通过一次购买在iOS和新Apple TV上享受他们喜爱的应用程序.
这意味着我们需要在现有项目上创建一个新的捆绑包并启用"通用"购买,因此它将被视为App Store上的一个应用程序.
Aar*_*man 27
tvOS SDK基于iOS,但不可互换.与首款iPad发布时不同,新款Apple TV无法运行iOS应用.
适用于电视的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项目的开箱即用功能.
Mac*_*nik 20
在Xcode 7.1(引入tvOS SDK)中你可以添加一个tvOS目标(File - > New - > Target ... - > tvOS - > ...),它支持Objective-C和Swift,所以是的 - 可以在iOS和tvOS应用程序之间共享代码,只需检查源目标成员资格并在tvOS目标上启用它.要扩展iOS和tvOS应用程序的购买量,我们应该使用Universal Purchases.
ric*_*chy 17
花了一点时间找到需要改变的所有东西,但是这个清单应该涵盖它.
Sim*_*son 16
我也相信为tvOS添加一个新目标是可行的方法,特别是如果你有很多objective-c或swift代码可以在项目之间共享.
对于那些在共享代码中可能存在某些tvOS不支持类型的实例,我使用这些预处理器符号为tvOS提供备用代码片段:
#if TARGET_OS_IOS
// iOS-specific code
#elif TARGET_OS_TV
// tvOS-specific code
#endif
Run Code Online (Sandbox Code Playgroud)
仅列出一些限制和挑战:
1.Apple TV上的应用程序没有持久的本地存储空间.数据必须存储在iCloud上.
2. Apple TV应用程序的最大大小限制为200MB.应使用按需资源(App Store上托管的应用程序内容).优点是较小的应用程序大小和应用程序资源的延迟加载.
用户界面完全不同.必须按照文档 遵循人机界面指南.
4.使用JavaScript和TVML框架创建客户端 - 服务器应用程序.
5.控制UI触摸焦点.UIFocusEnvironment控制视图层次结构的分支的与焦点相关的行为.UIViewController符合UIFocusEnvironment协议.
6.创建视差图形您必须使用Xcode创建LSR图像,然后使用终端创建LCR图像.UIImage对象可以正确显示LCR图像.
必须为tvOS添加新目标.有两种方法可以做到这一点
需要使用pod将pod添加到tvOS目标pod install.您可以/想要在tvOS中使用不同的pod列表.可以使用以下命令在Podfile中分隔不同目标的Pod:
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
Run Code Online (Sandbox Code Playgroud)目前大多数Pod都不支持tvOS.对于那些Pod,以下是使它们在您的项目中工作的步骤:
如果某个版本的pod正在另一个目标(iOS目标)中使用,请更改名称,否则CocoaPods会抱怨:例如RestKit - > RestKitTV并使用:path在Podfile中指向克隆仓库的位置:
pod 'RestKitTV', :path => 'Other/RestKitTV'
Run Code Online (Sandbox Code Playgroud)更新克隆的repo中的podspec文件:
将平台更改为tvOS或将tvOS添加到支持的平台列表中
Pod::Spec.new do |s|
..
s.platform = :tvos
..
end
Run Code Online (Sandbox Code Playgroud)
要么
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
Run Code Online (Sandbox Code Playgroud)将文件添加到目标:
使用TARGET_OS_TV和TARGET_OS_IOS宏来分离tvOS不兼容的代码
#if !TARGET_OS_TV
*iOS only code*
#else
*tvOS only code*
#end
Run Code Online (Sandbox Code Playgroud)+ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28140 次 |
| 最近记录: |