我知道这是在HTTPS request fails only on iOS, Ionic 2之前被问到的,但是这些答案对我来说不起作用。
我已经在ios xcode10项目的[myproject] -info.plist文件中进行了以下设置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
在我的项目中没有安装here的wkwebview插件,而是在我的项目中安装了ionic-webview-plug。
端点是Windows服务器中托管的MVC控制器操作方法。我无法像我进行Android测试那样使用chrome:// inspect从Windows调试IOS应用程序。虽然该App能够访问其他静态链接(例如图像),但是此Web服务调用失败。
在下面的Angular代码中,介绍了如何使用HttpClient进行Web服务调用
var oDat = {
uuid: uuid
};
let headers = new HttpHeaders();
headers = headers.set(‘Content-Type’, ‘application/json; charset=utf-8’);
return this.http.post(this.apiUrl23, JSON.stringify(oDat), {headers: headers}).pipe(
map(this.extractData),
catchError(this.handleError)
);
以下是从页面触发的此类订阅者代码之一
this.horoService.getPlan(this.device.uuid)
.subscribe(res => {
this.info2 = '';
let pln: Plan = { uuid: res['uuid'], name: res['name'], credits: res['credits'], dobs: res['dobs'] };
this.plan = pln;
if(res['name'] == 'xxx.xxx.xxx.xxx'){
this.showSU = true;
this.showCR = false;
this.showASU = false;
} else if(Number(res['credits']) == 0) {
this.showSU = false;
this.showCR = true;
this.showASU = false;
} else {
this.showSU = true;
this.showCR = false;
this.showASU = true;
}
}, (err) => {
this.showSU = false;
this.showCR = false;
this.showASU = false;
this.info2 = JSON.stringify(err);
});
下面是我的项目中使用的Cordova版本
Ionic:
ionic (Ionic CLI) : 4.2.1 (C:\Users\Hamsini\AppData\Roaming\npm\node_modules\ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.0
Cordova:
cordova (Cordova CLI) : 8.0.0
Cordova Platforms : android 6.3.0, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.2, cordova-plugin-ionic-webview 1.2.1, (and 12 other plugins)
该版本是在xCode10上构建的,并在ipad 9.3.5版上进行了测试
有猜到吗?
UPDATE-30 / 10 当我使用离子服务运行时,我可以看到HTTPResponse正确返回,但是在.subscribe(err)处理程序中,它显示了未知URL,未知错误
答案 0 :(得分:1)
我正在回答自己的问题,因为这可能会对某人有所帮助。
在downgrading to UIWebView似乎已解决之后,问题似乎出在WKWebView上
在科尔多瓦解决问题之前,现在需要执行以下步骤
此post非常详细地介绍了xCode10和Cordova的兼容性问题,自发布以来已有一段时间了,而Cordova的人还没有提出解决方案,解决方法是在构建过程中忽略新的体系结构,在iOS上的部署过程并不复杂,因为它更多地依赖于MAC平台XCode,因此在使用以下命令行进行构建之后
ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"
您还必须确保在xCode构建设置中选择“旧版构建系统” ,如图here和here
所示。但是由于这种降级,可能还会导致其他副作用,例如,在应用程序中轻击App中的SVG图像的某些部分无法正常工作(以前在Android设备上可以正常使用,对于该设备甚至动态地附加了侦听器)如果这是由于降级的原因,因为它不仅仅适用于iOS设备,因为我之前从未在其他任何iOS设备中测试过此应用程序