我有一个使用 InAppBrowser 打开 url 的 Ionic 6 应用程序,我需要捕获该网站生成的令牌。在网上搜索我找到了 window.postMessage,我把这个功能放在我的网站上以将令牌发送到我的应用程序
window.postMessage(token, 'https://my-url.net');
现在在我的 Ionic 应用程序中,我执行以下操作以尝试接收此令牌
const browser = this.iab.create(environment.checkoutUrl, '_blank')
browser.show();
browser.on('message').subscribe((event) => {
console.log('test')
console.log(event)
})
而且我从来没有在我的消息事件中得到令牌。谁能帮我解决这个问题?
您需要保存令牌并将其作为消息发送到您的应用程序。
你将不得不做这样的事情:
browser.on('loadstop').subscribe(event => {
browser.executeScript({
code: "var message = YOUR_TOKEN;\
var messageObj = {message: message};\
var stringifiedMessageObj = JSON.stringify(messageObj);\
webkit.messageHandlers.cordova_iab.postMessage(stringifiedMessageObj);"
});
});
browser.on('message').subscribe((value)=>{
let externalData = JSON.parse(value.data.message);
browser.close();
});
也许您必须使用其他可用事件之一而不是使用“loadstop”事件:
'加载开始' | '负载停止' | '加载前'