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

问题描述 投票:0回答:1

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

而且我从来没有在我的消息事件中得到令牌。谁能帮我解决这个问题?

cordova ionic-framework inappbrowser ionic6
1个回答
0
投票

您需要保存令牌并将其作为消息发送到您的应用程序。

你将不得不做这样的事情:

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”事件:

'加载开始' | '负载停止' | '加载前'

© www.soinside.com 2019 - 2024. All rights reserved.