tvOS 中的网络应用
编辑:在人们继续投票之前,我将明确说明 UIWebView 存在于 Apple TV 上,但禁止使用它,因此,在 Apple TV 上加载 Web 应用程序的唯一真正方法是使用 TVML 创建它们和TVJS
如果你想使用 UIWebView(作为概念证明),你可以这样做:
目标-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)
魔法!!!在UIWebView
那里!但是你不能用它进行迭代,只能显示网页或网页内容。
更新!我发现 github 上有很多基于https://github.com/steventroughtonsmith/tvOSBrowser的 tvOS 浏览器,但其中大部分都需要在 Xcode 应用程序上调整 Availability.h。我找到了一个使用我的方法的叉子,所以它不需要调整 Availability.h https://github.com/FabioSpacagna/tvOSBrowser 他们添加了对导航的基本支持,比如滚动和光标
我不认为苹果会批准应用程序,UIWebView
因为它被标记为禁止使用,你必须学习TVML
,TVJS
而不是。
根据API 差异,UIWebView 等不是 tvOS 的一部分。因此,您必须使用 Apple 的模板,使用 TVML(电视标记语言)重新实现该应用程序。或者您可以使用 UIKit 重新实现。
这是 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 的企业应用程序,所以这个解决方案对我有用。
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 中不可用:(
不幸的是,UIWebView 不是 tvOS 支持的类。Niether 是 WKWebView。您可以在此处查看iOS 9 和 tvOS 中支持和删除的 API 的完整列表。如果您向下滚动到第一部分的底部,您会看到 WebKit 说已删除。