web-dev-qa-db-fra.com

Application Web dans tvOS

Apple a publié son SDK pour Apple tv hier).

La plupart des applications pour téléviseurs sont basées sur le Web (html, javascript et css) et je voudrais porter une application Web TV existante sur tvOS.

Le SDK dans Xcode ne montre aucune implémentation Webview comme dans iOS pour créer des applications basées sur html, javascript et css, cependant, selon les documents, il est possible d'utiliser javascript en utilisant framework tvjs , mais au lieu de html , Apple possède son propre langage de balisage pour les téléviseurs appelé TVML .

Ma question est: est-il possible de porter une application web existante sur tvOS (comment?), Ou doit-elle être réimplémentée à partir de zéro?

Merci de votre aide.

22
Marcio Oliveira

EDIT: Avant que les gens continuent à voter, je vais préciser que l'UIWebView est présent sur le Apple TV, mais c'est [~ # ~] interdit [~ # ~] pour l'utiliser, donc, le seul véritable moyen de charger des applications Web sur un Apple TV les crée avec TVML et TVJS

Si vous souhaitez utiliser un UIWebView (comme preuve de concept), vous pouvez le faire:

Objectif 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)

LA MAGIE!!! Le UIWebView est là! Mais vous ne pouvez pas le reproduire, affichez simplement des pages Web ou du contenu Web.

MISE À JOUR! J'ai trouvé qu'il y a beaucoup de navigateurs tvOS sur github basés sur https://github.com/steventroughtonsmith/ tvOSBrowser , mais la plupart d'entre eux nécessitent un ajustement de Availability.h sur l'application Xcode. J'ai trouvé un fork qui utilise mon approche, il ne nécessite donc pas de modifier la disponibilité.h https://github.com/FabioSpacagna/tvOSBrowser Ils ajoutent un support de base pour la navigation, comme le défilement et un le curseur

Je ne pense pas que Apple approuvera les applications utilisant UIWebView car il est marqué comme interdit, vous devrez apprendre TVML et TVJS au lieu.

39
jcesarmobile

Selon les API diffs , UIWebView, etc. ne font pas partie de tvOS. Vous devrez donc réimplémenter l'application à l'aide de TVML (TV Markup Language) à l'aide des modèles d'Apple. Ou vous pouvez réimplémenter en utilisant UIKit.

11
Jess Bowers

Voici la version Swift de la solution de jcesarmobile.

    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)

Je crée une application d'entreprise qui ne doit pas passer par l'App Store, donc cette solution fonctionne pour moi.

4
Justin Domnitz

UIWebView fait partie de tvOS, bien que la documentation semble un peu limitée pour le moment (voir ici) . Vous pouvez également trouver le fichier .h ici: /Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIWebView.h

Le framework WebKit ne semble pas être inclus.

Mise à jour:

Trouvé dans UIWebView.h: NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIWebView : UIView <NSCoding, UIScrollViewDelegate>

Compte tenu de cela , il pourrait ne pas être disponible dans tvOS :(

4
Maciek Czarnik

Malheureusement, UIWebView n'est pas une classe prise en charge dans tvOS. Niether est WKWebView. Vous pouvez voir une liste complète des API prises en charge et supprimées dans iOS 9 et tvOS ici . Si vous faites défiler vers le bas de la première section, vous verrez WebKit dit supprimé.

2
Viper

Si vous cherchez à porter votre application existante sur tvOS, vous voudrez peut-être envisager atvjs framework. Cela vous donnerait l'expérience familière de développer n'importe quelle application lourde frontale. Vous devrez peut-être encore modifier votre application Web existante pour intégrer le cadre, mais ce serait un processus beaucoup moins pénible que d'utiliser l'exemple d'architecture fourni par Apple.

Pour commencer, reportez-vous à https://github.com/emadalam/tvml-catalog-using-atvjs qui est un port de l'exemple de code d'origine, réécrit à l'aide de atvjs cadre.

0
eMAD