在 geotrigger 在后台启动应用程序后,Cordova 应用程序卡在启动屏幕上

chi*_*kad 5 splash-screen ios cordova wkwebview tls1.2

我正在使用 ionic ( 3.20.0 ) 和 angular ( ionic-angular ^3.9.2 )开发 Cordova iOS 应用程序 ( cordova-ios 4.5.4 )。

我正在使用最新版本的 ionic WKWebView ( cordova-plugin-ionic-webview ^1.2.1 )。我不能使用 apache cordova WKWebView 因为我们愿意支持 Android。

我的应用程序通过触发地理围栏来填充本地通知。一旦触发地理围栏,如果应用程序未运行(被终止),操作系统就会在后台启动应用程序。

当应用程序在后台启动时,我有时会收到以下错误,

错误域=NSURLErrorDomain 代码=-1004 “无法连接到服务器。” UserInfo={_kCFStreamErrorCodeKey=61, NSUnderlyingError=0x1c0241830 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, NSLocalizedDescription=Could.yRecoverW, 无法连接到服务器NSErrorFailingURLStringKey= http://localhost:8080/var/containers/Bundle/Application/0E78BB1F-7EAA-4095-8A6D-0CBB232F0E56/XXX.app/www/index.html , NSErrorFailingURLKey= http://localhost:8080/var/容器/捆绑/应用程序/0E78BB1F-7EAA-4095-8A6D-0CBB232F0E56/XXX.app/www/index.html,_kCFStreamErrorDomainKey=1 }

以下方法发生错误CDVWKWebViewEngine.m

- (void)webView:(WKWebView*)theWebView didFailNavigation:(WKNavigation*)navigation withError:(NSError*)error
Run Code Online (Sandbox Code Playgroud)

我为本地主机异常域添加了应用程序传输安全设置

            <key>localhost</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSRequiresCertificateTransparency</key>
                <false/>
                <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
                <false/>
                <key>NSThirdPartyExceptionMinimumTLSVersion</key>
                <string>TLSv1.2</string>
                <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
                <true/>
            </dict>
Run Code Online (Sandbox Code Playgroud)

也已经设定,

<key>NSAllowsArbitraryLoads</key>
<true/>
Run Code Online (Sandbox Code Playgroud)

但我仍然收到错误。一旦发生这种情况,通过点击应用程序图标或滑动通知,应用程序会在下一次应用程序启动时卡在启动屏幕上。

我需要设置的任何其他内容。

一些博客说, 配置一个为 TLS 1.2 协议启用的服务器。

但我不确定如何配置 ionic Cordova WKWebView 的本地 Web 服务器。

任何帮助都非常感谢,因为我坚持了几个星期。谢谢。


更新:

我没有在 config.xml 中添加这些,

<allow-navigation href="http://localhost:8080/*"/>

<feature name="CDVWKWebViewEngine">
 <param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
Run Code Online (Sandbox Code Playgroud)

我现在将它们添加到 config.xml 并构建了 ionic ios。但是我已经<allow-navigation href="*" />在 config.xml 中添加了。