tvOS中的Web应用程序

Mar*_*ira 22 html javascript web-applications apple-tv tvos

Apple 昨天发布了苹果电视SDK.

大多数电视应用都是基于网络的(html,javascript和css),我想将现有的电视网络应用移植到tvOS.

Xcode中的SDK没有显示类似于iOS的Webview实现,用于创建基于html,javascript和css的应用程序,但是,根据文档,可以使用javascript使用tvjs框架,但是不是html,而是苹果拥有自己的标记语言电视称为TVML.

我的问题是:是否可以将现有的Web应用程序移植到tvOS(如何?),还是需要从头开始重新实现?

谢谢你的帮助.

jce*_*ile 38

编辑:在人们保持低调之前,我将明确表示UIWebView存在于Apple TV上,但是禁止使用它,因此,在Apple TV上加载Web应用程序的唯一真正方法是使用TVML创建它们和TVJS

如果您想使用UIWebView(作为概念证明),您可以这样做:

Objective-C的

Class webviewClass = NSClassFromString(@"UIWebView");
id webview = [[webviewClass alloc] initWithFrame:self.view.frame];
NSURL * url = [NSURL URLWithString:@"https://www.google.com"];
NSURLRequest * request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];
[self.view addSubview:webview];
Run Code Online (Sandbox Code Playgroud)

迅速

let webViewClass : AnyObject.Type = NSClassFromString("UIWebView")!
let webViewObject : NSObject.Type = webViewClass as! NSObject.Type
let webview: AnyObject = webViewObject.init()
let url = NSURL(string: "https://www.google.com")
let request = NSURLRequest(URL: url!)
webview.loadRequest(request)
let uiview = webview as! UIView
uiview.frame = CGRectMake(0, 0, view.frame.width, view.frame.height)
view.addSubview(uiview)
Run Code Online (Sandbox Code Playgroud)

魔法!!!该UIWebView是有!但是你不能用它来迭代,只显示网页或网页内容.

UPDATE!我发现github上有很多基于https://github.com/steventroughtonsmith/tvOSBrowser的tvOS浏览器,但大多数需要在Xcode应用程序上调整Availability.h.我找到了一个使用我的方法的fork,所以它不需要调整Availability.h https://github.com/FabioSpacagna/tvOSBrowser 它们添加了对导航的基本支持,比如滚动和光标

我不认为苹果会批准应用程序,UIWebView因为它标记为禁止,你必须学习TVML,TVJS而不是.


Jes*_*ers 11

根据API差异,UIWebView等不是tvOS的一部分.所以你必须使用Apple的模板使用TVML(电视标记语言)重新实现应用程序.或者您可以使用UIKit重新实现.


Jus*_*itz 6

这是 jcesarmobile 解决方案的 Swift 版本。

    let webViewClass : AnyObject.Type = NSClassFromString("UIWebView")!
    let webViewObject : NSObject.Type = webViewClass as! NSObject.Type
    let webview: AnyObject = webViewObject.init()
    let url = NSURL(string: "https://www.google.com")
    let request = NSURLRequest(URL: url!)
    webview.loadRequest(request)
    let uiview = webview as! UIView
    uiview.frame = CGRectMake(0, 0, webDashboardView.frame.width, webDashboardView.frame.height)
    webDashboardView.addSubview(uiview)
Run Code Online (Sandbox Code Playgroud)

我正在构建一个不需要通过 App Store 的企业应用程序,所以这个解决方案对我有用。