Cordova iOS 6.1.0 WKwebview如何显示外屏图片
Cordova iOS 6.1.0 How to display images on external screen in WKwebview
我有一个 Cordova 应用程序,它使用此插件 (cordova-plugin-wkwebview-external-screen) 通过 Airplay/HDMI 适配器(类似于 Apple 的 Keynote)在外部屏幕上显示 images/media 全屏。
使用 UIwebview 一切顺利,但我在使用 WKwebview 的外部屏幕上显示媒体时遇到问题。我现在使用的是 Cordova iOS 6.1.1 (CLI 10.0)。
我正在使用 在我的主(控制)屏幕上显示媒体,但转换后的文件 url 和“file://...”url (cordova.file.dataDirectory + ‘image.jpg’
) 在外屏工作。
附加信息:
- 我的外部屏幕是通过
ExternalScreen.loadHTML('secondary.html');
启动的,但 Cordova 在外部屏幕的 window 中似乎不可用(即使 cordova.js 包含在 secondary.html).
- 我的 index.html(控制)和 secondary.html(显示)文档中的“白名单”元数据相同。
如何获取将显示在我的第二个(外部)屏幕上的图像 URL?
更新:
我更新了 plugin 的 getWebView 函数,添加了 allowFileAccessFromFileURLs
、allowUniversalAccessFromFileURLs
、allowsInlineMediaPlayback
和 mediaTypesRequiringUserActionForPlayback
配置:
- (WKWebView*)getWebView {
if (!self.externalWebView) {
UIScreen* externalScreen = [[UIScreen screens] objectAtIndex: 1];
CGRect screenBounds = externalScreen.bounds;
self.externalWebView = [[WKWebView alloc] initWithFrame: screenBounds configuration: [[WKWebViewConfiguration alloc] init]];
// I added these four configurations...
[self.externalWebView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
[self.externalWebView.configuration setValue:@YES forKey:@"allowUniversalAccessFromFileURLs"];
self.externalWebView.configuration.allowsInlineMediaPlayback = TRUE;
self.externalWebView.configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
self.externalWindow = [[UIWindow alloc] initWithFrame: screenBounds];
self.externalWindow.screen = externalScreen;
self.externalWindow.clipsToBounds = YES;
[self.externalWindow addSubview:self.externalWebView];
[self.externalWindow makeKeyAndVisible];
self.externalWindow.hidden = NO;
}
return self.externalWebView;
}
不幸的是,这些更改 似乎 不会影响 externalView
。我暂时使用这个插件作为解决方法 (cordova-plugin-wkwebview-sandbox-webserver),但即使这样我也无法让 HTML5 视频自动播放 - 所以我怀疑我是否甚至在进行配置设置在正确的地方?
问题是这个插件还没有更新。从我在插件中看到的情况来看,它正在尝试使用 file:// 加载,它不再开箱即用。
NSString* a = @"file://";
baseURLAddress = [a stringByAppendingString:baseURLAddress];
您可以尝试在 this file
中的 getWebView
方法中将首选项 allowFileAccessFromFileURLs
和 allowUniversalAccessFromFileURLs
添加到此插件创建的 WKWebView ]
您的工作可以参考this plugin,代码参考
[wkWebView.configuration.preferences setValue:@(_allowFileAccessFromFileURLs) forKey:@"allowFileAccessFromFileURLs"];
虽然这不是一个直接的答案,但克隆 cordova-plugin-wkwebview-external-screen 并添加这些首选项是您最好的选择。
我有一个 Cordova 应用程序,它使用此插件 (cordova-plugin-wkwebview-external-screen) 通过 Airplay/HDMI 适配器(类似于 Apple 的 Keynote)在外部屏幕上显示 images/media 全屏。
使用 UIwebview 一切顺利,但我在使用 WKwebview 的外部屏幕上显示媒体时遇到问题。我现在使用的是 Cordova iOS 6.1.1 (CLI 10.0)。
我正在使用 cordova.file.dataDirectory + ‘image.jpg’
) 在外屏工作。
附加信息:
- 我的外部屏幕是通过
ExternalScreen.loadHTML('secondary.html');
启动的,但 Cordova 在外部屏幕的 window 中似乎不可用(即使 cordova.js 包含在 secondary.html). - 我的 index.html(控制)和 secondary.html(显示)文档中的“白名单”元数据相同。
如何获取将显示在我的第二个(外部)屏幕上的图像 URL?
更新:
我更新了 plugin 的 getWebView 函数,添加了 allowFileAccessFromFileURLs
、allowUniversalAccessFromFileURLs
、allowsInlineMediaPlayback
和 mediaTypesRequiringUserActionForPlayback
配置:
- (WKWebView*)getWebView {
if (!self.externalWebView) {
UIScreen* externalScreen = [[UIScreen screens] objectAtIndex: 1];
CGRect screenBounds = externalScreen.bounds;
self.externalWebView = [[WKWebView alloc] initWithFrame: screenBounds configuration: [[WKWebViewConfiguration alloc] init]];
// I added these four configurations...
[self.externalWebView.configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
[self.externalWebView.configuration setValue:@YES forKey:@"allowUniversalAccessFromFileURLs"];
self.externalWebView.configuration.allowsInlineMediaPlayback = TRUE;
self.externalWebView.configuration.mediaTypesRequiringUserActionForPlayback = WKAudiovisualMediaTypeNone;
self.externalWindow = [[UIWindow alloc] initWithFrame: screenBounds];
self.externalWindow.screen = externalScreen;
self.externalWindow.clipsToBounds = YES;
[self.externalWindow addSubview:self.externalWebView];
[self.externalWindow makeKeyAndVisible];
self.externalWindow.hidden = NO;
}
return self.externalWebView;
}
不幸的是,这些更改 似乎 不会影响 externalView
。我暂时使用这个插件作为解决方法 (cordova-plugin-wkwebview-sandbox-webserver),但即使这样我也无法让 HTML5 视频自动播放 - 所以我怀疑我是否甚至在进行配置设置在正确的地方?
问题是这个插件还没有更新。从我在插件中看到的情况来看,它正在尝试使用 file:// 加载,它不再开箱即用。
NSString* a = @"file://";
baseURLAddress = [a stringByAppendingString:baseURLAddress];
您可以尝试在 this file
中的getWebView
方法中将首选项 allowFileAccessFromFileURLs
和 allowUniversalAccessFromFileURLs
添加到此插件创建的 WKWebView ]
您的工作可以参考this plugin,代码参考
[wkWebView.configuration.preferences setValue:@(_allowFileAccessFromFileURLs) forKey:@"allowFileAccessFromFileURLs"];
虽然这不是一个直接的答案,但克隆 cordova-plugin-wkwebview-external-screen 并添加这些首选项是您最好的选择。