IONIC 2 InAppBrowser在IOS中不工作



下面的代码在Android中运行良好。但是,它在IOS中不起作用

我们认为浏览器.executeScript在此不起作用。在这里,我们从API获得重定向url作为html内容(this.paymentGatewayDetails),我们需要打开它。它在android中运行良好。

  1. 在IOS11.0手机中尝试此操作。

  2. IONIC 2.2版

  3. 插件@ionic native/应用程序内浏览器":"^4.3.2">

这是我们试图执行的函数。

callGateway() {  
return new Promise(
(resolve, reject) => {
let injected = false;
if (!this.paymentGatewayDetails) {
reject("PG_DET_INVALID")
}
const browser = this.iab.create("about:blank", "_blank", "location=no");
browser.show()
//inject html code to blank page. one time
browser.on("loadstop")
.subscribe(
(sucess) => {
if (!injected) {
browser.executeScript({ code: "document.write('" + this.paymentGatewayDetails + "');" }).then(
(sucess) => {
console.log("sucess");
browser.executeScript({ code: "document.mypg.submit();" }).then(
(sucess) => {
console.log("sucess redirection");
}, (err) => {
console.log("error redirection");
}
);
}, (err) => {
console.log("err")
}
);
injected = true;             
}
console.log("success url is", sucess.url);
if (sucess.url.includes("mobile.mypg.com")) {
//payment gateway call sucess.
browser.close()
resolve("PG_CALL_SUCC")
}
}
)}

我们在PLIST文件中给出了

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

并且在INDEX.html中>

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline';”>

我们也安装了白名单插件

cordova插件白名单

在config.xml中添加了这些行

<content src="index.html" />
<access origin="*" subdomains="true" />
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />

cordova插件ls

com.darktalker.cordova.screenshot 0.1.5"屏幕截图">

cordova插件操作表2.3.3"操作表">

cordova插件compat 1.1.0"compat">

cordova插件控制台1.0.5"控制台">

cordova插件设备1.1.4"设备">

cordova插件对话框1.3.3"通知">

cordova插件fcm 2.1.2"FCMPlugin">

cordova插件地理定位2.4.3"地理定位">

cordova插件全球化1.0.7"全球化">

cordova插件热线1.2.1"Phonegap的热线插件">

cordova插件inappbrowser 1.7.1"inappbrowser">

cordova插件mfp 8.0.2017072706"IBM MobileFirst平台基础">

cordova插件mfp jsonstore 8.0.2017081712"IBM MobileFirst平台基金会JSONStore">

cordova插件nativestorage 2.2.2"nativestorage">

cordova插件okhttp 2.0.0"okhttp">

cordova插件屏幕定向2.0.1"屏幕定向">

cordova插件短信1.0.5"短信">

cordova插件splashscreen 4.0.3"splashscreen">

cordova插件状态栏2.2.2"状态栏">

cordova插件白名单1.3.1"白名单">

cordova-plugin-x-社交共享5.1.8"社交共享">

cordova.plugins.diagnostic 3.6.6"诊断">

es6 promise插件4.1.0"promise">

离子插件键盘2.2.1"键盘">

uk.co.workingedge.phonegap.plugin.launchnavigator 4.0.4"发布Navigator">

请帮助我们解决此问题

感谢

我解决了这个问题。

browser.executeScript({ code: "document.write('" + this.paymentGatewayDetails + "');" });适用于IOS和Android

在这里,我删除了。然后((成功)=>{

现在新代码在IOS和Android 中都可以使用

callGateway() {  
return new Promise(
(resolve, reject) => {
let injected = false;
if (!this.paymentGatewayDetails) {
reject("PG_DET_INVALID")
}
const browser = this.iab.create("about:blank", "_blank", "location=no");
browser.show()
//inject html code to blank page. one time
browser.on("loadstop")
.subscribe(
(sucess) => {
if (!injected) {
browser.executeScript({ code: "document.write('" + this.paymentGatewayDetails + "');" });
console.log("sucess");
browser.executeScript({ code: "document.mypg.submit();" }).then(
(sucess) => {
console.log("sucess redirection");
}, (err) => {
console.log("error redirection");
}
);           
injected = true;             
}
console.log("success url is", sucess.url);
if (sucess.url.includes("mobile.mypg.com")) {
//payment gateway call sucess.
browser.close()
resolve("PG_CALL_SUCC")
}
}
)}

我不知道为什么它不在那里工作。如果有人知道,请回答。

感谢

相关内容

  • 没有找到相关文章

最新更新