web-dev-qa-db-ja.com

tvOSのWebアプリ

Appleはそれをリリースした SDK for Apple tv 昨日。

TV用のほとんどのアプリはWebベース(html、javascript、css)であり、既存のTV WebアプリをtvOSに移植したいと考えています。

XcodeのSDKは、iOSのようにhtml、javascript、cssに基づいてアプリを作成するためのWebview実装を示していませんが、ドキュメントによると、JavaScriptを tvjs framework を使用して使用できますが、htmlの代わりに使用できます、Appleには、テレビ用の独自のマークアップ言語 [〜#〜] tvml [〜#〜] があります。

私の質問は:既存のWebアプリをtvOSに移植することは可能ですか(方法?)、または最初から再実装する必要がありますか?

ご協力いただきありがとうございます。

22
Marcio Oliveira

編集:人々が投票を続ける前に、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];

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, view.frame.width, view.frame.height)
view.addSubview(uiview)

マジック!!! UIWebViewがあります! ただし、それを操作することはできません。WebページまたはWebコンテンツを表示するだけです。

UPDATE!https://github.com/steventroughtonsmith/に基づいてgithubに多くのtvOSブラウザーがあることがわかりましたtvOSBrowser ですが、それらのほとんどはXcodeアプリでAvailability.hを微調整する必要があります。私のアプローチを使用するフォークを見つけたので、Availability.hを微調整する必要はありません https://github.com/FabioSpacagna/tvOSBrowser スクロールやカーソル

AppleがUIWebViewを使用してアプリを承認することを禁止されているとは思わないので、TVMLTVJS代わりに。

39
jcesarmobile

API diffs によると、UIWebViewなどはtvOSの一部ではありません。したがって、Appleのテンプレートを使用してTVML(TV Markup Language)を使用するアプリを再実装する必要があります。または、UIKitを使用して再実装することもできます。

11
Jess Bowers

これが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を経由する必要のないエンタープライズアプリを作成しているので、このソリューションがうまくいきます。

4
Justin Domnitz

UIWebViewはtvOSの一部ですが、ドキュメントは現在少し制限されているようです (こちらを参照) 。ここで.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では使用できない可能性があります:(

4
Maciek Czarnik

残念ながら、UIWebViewはtvOSでサポートされているクラスではありません。 NietherはWKWebViewです。 iOS 9とtvOSでサポートおよび削除されたAPIの完全なリストを見ることができます here 。最初のセクションの一番下までスクロールすると、WebKitが削除されたというメッセージが表示されます。

2
Viper

既存のアプリケーションをtvOSに移植する場合は、 atvjs フレームワークを検討することをお勧めします。フロントエンドの重いアプリケーションを開発する慣れ親しんだ経験を提供します。フレームワークに合わせて既存のWebアプリを変更する必要がある場合もありますが、アップルが提供するサンプルアーキテクチャを使用するよりもはるかに簡単なプロセスです。

開始するには、元のサンプルコードのポートである https://github.com/emadalam/tvml-catalog-using-atvjs を参照してください、 atvjs フレームワークを使用して書き直されました。

0
eMAD