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’) 在外屏工作。

附加信息:

如何获取将显示在我的第二个(外部)屏幕上的图像 URL?

更新: 我更新了 plugin 的 getWebView 函数,添加了 allowFileAccessFromFileURLsallowUniversalAccessFromFileURLsallowsInlineMediaPlaybackmediaTypesRequiringUserActionForPlayback 配置:

- (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 方法中将首选项 allowFileAccessFromFileURLsallowUniversalAccessFromFileURLs 添加到此插件创建的 WKWebView ]

您的工作可以参考this plugin,代码参考

 [wkWebView.configuration.preferences setValue:@(_allowFileAccessFromFileURLs) forKey:@"allowFileAccessFromFileURLs"];

虽然这不是一个直接的答案,但克隆 cordova-plugin-wkwebview-external-screen 并添加这些首选项是您最好的选择。