我在InAppPurchase2插件上遇到了一些麻烦,即离子本机,我要做的就是在组件加载时让商店加载,尽管我不是有任何运气。
在我的组件中,我正在执行以下操作:
ionViewDidLoad() {
this.platform.ready().then(() => {
this.inAppPurchase2.ready().then(() => this.product = 'InAppPurchase plugin called');
});
}
根据插件的离子本机页面上的文档,使用.ready()
函数会返回承诺,尽管当我在设备上运行该函数时,此代码永远不会运行,我也不会遇到错误。
我在其他地方找到了一个帖子,说您可以执行诸如InAppPurchase2.getPlugin().ready(() => this.product = 'InAppPurchase plugin called'));
之类的操作并直接从模块调用该功能,尽管我对此没有任何运气,我尝试的其他任何东西都会在打字稿中给我错误。
我想在这里尝试做什么?
您要做的是异步填充属性。
这样做:制作一个调用插件的ready()函数的函数,并在Promise Resolve上返回您选择的字符串。
makeAPromiseCall(): Promise<any> {
return this.InAppPurchase2
.ready()
.then(() => 'InAppPurchasePlugin');
}
将此承诺分配给您的财产,如
this.product: Promise<any> = this.makeAPromiseCall();
在您的HTML中使用角异步管。
{{product | async}}
我以前遇到过一些麻烦。有时,"准备就绪"事件不会像您期望的那样开火。这是我用来使这项工作的一些代码
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();
希望这会有所帮助。您还必须单独注册产品。我在博客文章中对此做了简要说明。您需要致电刷新以使商店处于现成状态。