Веб-приложение в tvOS

Вчера Apple выпустила SDK для Apple TV.

Большинство приложений для телевизоров основаны на веб-интерфейсах (html, javascript и css), и я хотел бы портировать существующее tv-приложение на tvOS.

SDK в Xcode не отображает реализацию Webview, например, в iOS для создания приложений на основе html, javascript и css, однако, согласно документам, можно использовать javascript, используя tvjs framework, но вместо html у яблока есть собственный язык разметки для телевизоров под названием TVML.

Мой вопрос: возможно ли переносить существующее веб-приложение на tvOS (как?) или его нужно переопределять с нуля?

Спасибо за вашу помощь.

Ответы

Ответ 1

РЕДАКТИРОВАТЬ: Прежде чем люди начнут делать downvoting, я собираюсь пояснить, что UIWebView присутствует на Apple TV, но он ЗАПРЕЩЕННЫЙ, чтобы использовать его, поэтому единственный реальный способ загрузки веб-страниц приложения на Apple TV создают их с 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 есть! Но вы не можете итерации с ним, просто покажите веб-страницы или веб-контент.

UPDATE!. Я обнаружил, что в github существует много браузеров tvOS на основе https://github.com/steventroughtonsmith/tvOSBrowser, но большинство из них требуют настройки Access.h на приложении Xcode. Я нашел вилку, которая использует мой подход, поэтому не требует настройки Availability.h https://github.com/FabioSpacagna/tvOSBrowser Они добавляют базовую поддержку для навигации, например, прокрутки и курсора

Я не думаю, что Apple одобрит приложения, использующие UIWebView, поскольку они помечены как запрещенные, вам нужно будет изучить TVML и TVJS.

Ответ 2

В соответствии с API отличается, UIWebView и т.д. не являются частью tvOS. Таким образом, вам придется повторно реализовать приложение с помощью TVML (Язык разметки ТВ) с использованием шаблонов Apple. Или вы можете повторно реализовать с помощью UIKit.

Ответ 3

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, похоже, не включена.

Update:

Найдено в UIWebView.h: NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIWebView : UIView <NSCoding, UIScrollViewDelegate>

Учитывая это , он может быть недоступен в tvOS: (

Ответ 4

Здесь версия Swift версии 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)

Я создаю корпоративное приложение, которое не должно проходить через App Store, поэтому это решение работает для меня.

Ответ 5

К сожалению, UIWebView не является поддерживаемым классом в tvOS. Niether - WKWebView. Вы можете увидеть полный список поддерживаемых и удаленных API в iOS 9 и tvOS здесь. Если вы прокрутите вниз до нижней части первого раздела, вы увидите, что WebKit говорит, что он удален.

Ответ 6

Если вы хотите перенести существующее приложение на tvOS, вы можете рассмотреть atvjs framework. Это даст вам знакомый опыт разработки любого внешнего приложения. Вам все равно может потребоваться изменить существующее веб-приложение для набора фреймворка, однако это будет гораздо менее болезненный процесс, чем использование образцовой архитектуры, предоставляемой Apple.

Чтобы начать, обратитесь к https://github.com/emadalam/tvml-catalog-using-atvjs, который является портом исходного кода примера, переписанным с помощью atvjs.