2015-09-10 60 views
16

昨天蘋果發佈了它的SDK for apple tvtvOS中的Web應用程序

大多數應用程序的電視是基於網絡(HTML,JavaScript和CSS),我想端口現有的電視網絡應用程序的tvOS。

在Xcode的SDK是表示基於HTML就像iOS中沒有網頁視圖實現創建應用程序,JavaScript和CSS,但是,根據文檔,可以使用tvjs framework使用JavaScript,但不是HTML,蘋果有它的電視自己的標記語言叫做TVML

我的問題是:是否有可能端口現有的Web應用tvOS,還是需要從頭開始重新實現(如何?)?

感謝您的幫助。

回答

29

編輯:在人們保持downvoting之前,我要明確表示UIWebView存在於蘋果電視上,但它的禁止使用它,所以,在蘋果上加載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]; 

迅速

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) 

MAGIC! UIWebView在那裏! 但是你不能反覆使用它,只是顯示網頁或網頁內容。

更新!我發現基於https://github.com/steventroughtonsmith/tvOSBrowser的github上有很多tvOS瀏覽器,但其中大多數需要調整Xcode應用程序的Availability.h。我發現了一個使用我的方法的分支,所以它不需要調整可用性。^ h https://github.com/FabioSpacagna/tvOSBrowser 他們補充基本支持導航,像滾動和光標

我不覺得,因爲它被標記爲禁止的,你必須要學會TVMLTVJS而是蘋果將批准使用UIWebView應用。

+0

它的工作原理真棒:D –

+1

只是遙控器沒有準備好,沒有辦法通過遙控器上的滑動瀏覽內容,但我想這將是添加手勢識別器和強制事件的問題javascript,thanks :) –

+0

是的,它需要很多工作才能使它成爲可用,手勢識別器,代表,不確定是否值得花費努力,如果蘋果可能會拒絕使用UIWebView的應用程序 – jcesarmobile

11

按照API diffs,UIWebView的,等不tvOS的一部分。因此,您必須使用Apple的模板使用TVML(電視標記語言)重新實現應用程序。或者你可以使用UIKit重新實現。

4

UIWebView是tvOS的一部分,雖然文檔看起來有點受限(see here)。您還可以在這裏找到.h文件:/Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWebView.h

的WebKit框架似乎沒有被包括在內。

更新:

發現在UIWebView.h: NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIWebView : UIView <NSCoding, UIScrollViewDelegate>

考慮到這可能是在tvOS :(

1

不幸的是不可用的,UIWebView的是不支持class in tvOS。Niether is WKWebView。你可以在iOS 9和tvOS here中看到支持和刪除的API的完整列表。如果向下滾動到第一部分的底部y你會看到WebKit說刪除。

2

下面是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) 

我建立一個企業應用程序,不必去通過App Store,因此該方案對我的作品。

+0

你有沒有在網站迭代進展?使用此代碼您只需加載一個網站,但是您無法真正導航或執行任何操作 – jcesarmobile

+0

網站交互沒有任何進展。由於我只是在我的應用程序中顯示靜態數據,所以對我的需求並不重要。但是,如果有人開始工作,會很好奇! –

+0

上面的代碼運行良好。我需要儘管設置:webview.mediaPlaybackRequiresUserInteraction爲false(默認情況下爲true)。我更改讓webview,無功webview ..它說「不能分配給財產。webview是不可改變的」任何建議? – Jim

0

如果您希望將現有的應用程序移植到tvOS,您可能需要考慮atvjs框架。它會給你開發任何前端重型應用程序的熟悉經驗。您可能仍然需要修改現有的Web應用程序以適應該框架,但與使用Apple提供的示例架構相比,這將是一個非常痛苦的過程。

要開始,請參閱https://github.com/emadalam/tvml-catalog-using-atvjs這是原始示例代碼的端口,使用atvjs框架重寫。

相關問題