如何使用InAppBrowser将postMessage数据传递到我的Ionic 6应用程序?

von4xj4u  于 2023-03-11  发布在  Ionic
关注(0)|答案(1)|浏览(205)

我有一个使用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)
  })

而且我在我的消息事件中一直没有得到令牌。有人能帮我解决这个问题吗?

ct3nt3jp

ct3nt3jp1#

您需要保存令牌并将其作为消息发送到应用程序。
您必须执行以下操作:

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”事件:
'负载启动'|“负载停止”|“加载前”

相关问题