Ionic Native InAppPurchase2 - 无法使用.ready()加载存储

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

我在使用Ionic Native的InAppPurchase2插件时遇到了一些麻烦,其中我想要做的就是在我的组件加载时加载商店,尽管我没有运气。

在我的组件中,我正在做以下事情:

ionViewDidLoad() {
    this.platform.ready().then(() => {
      this.inAppPurchase2.ready().then(() => this.product = 'InAppPurchase plugin called');
    });
  }

根据插件的Ionic Native页面上的文档,使用.ready()函数返回一个promise,但是当我在我的设备上运行时,这段代码永远不会运行,我也不会收到错误。

我在其他地方发现了一个帖子,说你可以做类似InAppPurchase2.getPlugin().ready(() => this.product = 'InAppPurchase plugin called'));的事情并直接从模块中调用函数,虽然我也没有任何运气,我尝试的其他任何东西都给我的打字稿代码错误。

有什么东西我想念我在这里做的事吗?

ionic-framework ionic2 ionic-native
2个回答
0
投票

您要做的是异步填充属性。

执行此操作:创建一个调用插件的ready()函数的函数,并在promise resolve上返回您选择的字符串。

    makeAPromiseCall(): Promise<any> {
        return this.InAppPurchase2
            .ready()
            .then(() => 'InAppPurchasePlugin');
    }

将此承诺分配给您的财产,如

this.product: Promise<any> = this.makeAPromiseCall();

并在您的HTML中使用角度异步管道。

{{product | async}}

0
投票

我之前遇到过一些麻烦。有时候“准备好”的事件并没有像你期望的那样激发。这是我用来完成这项工作的一些代码

  constructor(public store: InAppPurchase2) {} ...

  this.store.ready().then((status) => {
    this.logger.logEvent('store_ready', {});
    console.log(JSON.stringify(this.store.get(productId)));
    console.log('Store is Ready: ' + JSON.stringify(status));
    console.log('Products: ' + JSON.stringify(this.store.products));
  });
  // This is what is missing...
  this.store.refresh();

希望这会有所帮助。您还必须单独注册产品。我在blog post做了一个简短的解释。您需要调用refresh以使存储处于就绪状态。

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