IOS Cordova嵌套Cocos Creator的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS Cordova嵌套Cocos Creator的坑相关的知识,希望对你有一定的参考价值。

最近在看如何把H5游戏嵌套发布在app上,于是用Cordova作为工具。

然而之前Cordova在ios上是用UIWebview,但是IOS新版本上强制要用wkwebview。还好新版Cordova也支持了,但是遇到了一个坑,加载不了:

技术图片

原因:
wkwebview对于文件的访问,也是认为是跨域的一种

解决办法:

一定要设置[configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];
// 初始化webview
- (void)viewDidLoad {
    [super viewDidLoad];
    [self installStartTime];

    WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
    self.webview = [[JSBWebView alloc] initWithFrame:self.view.bounds configuration:config];
    self.webview.navigationDelegate = self;
    self.webview.UIDelegate = self;
}

- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration
{
    WKUserScript *script = [[WKUserScript alloc] initWithSource:[self jsString] injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
    [configuration.userContentController addUserScript:script];
    [configuration.preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"];

    self = [super initWithFrame:frame configuration:configuration];
    if (self) {
        [self setup];
    }
    return self;
}

参考资料:
https://www.jianshu.com/p/92432d11c6dc
https://stackoverflow.com/questions/40472796/wkwebview-loadfileurl-works-only-once

调整经过:

因为Cordova必须要在初始化之前给url,在iOS这边他叫startPage。

而Cordova的wkwebivew是必须获取startPage后才会初始化

所以我进去以后才能设定[self.wkWebView.configuration.preferences setValue:@YES]
此时再刷新一下就好了。

Cordova是隐藏掉[self.wkWebView loadRequest:requestObj];这个步骤的,没办法在loadrequest之前做设置,所以只能刷新,让他重新触发一次loadrequest

以上是关于IOS Cordova嵌套Cocos Creator的坑的主要内容,如果未能解决你的问题,请参考以下文章

iOS cocos2d游戏引擎的了解之一

iOS cocos2d安装以及问题解决

使用 cordova-ios 5 更新 Cordova 9

Cordova 6.0.0 iOS 本地化与 cordova-ios@4.0 和 Xcode 7.2.1

Cocos2d-x使用iOS游戏内付费IAP(C++篇)

Cordova 平台 ios 错误