Веб-приложение в 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.