我正在使用Capacitor(但不是Ionic)来打包iOS的SvelteKit应用程序,并试图获得应用内购买工作。
Capacitor关于应用内购买的页面令人惊讶地没有帮助。我已经尽力了,
-
我已经在appstoreconnect中设置了产品,它们的状态是"准备提交">
-
我已经安装了
cordova-plugin-purchase
并运行npx cap update
和npx cap sync
,它正在安装
[info]找到1个Cordova插件cordova-plugin-purchase@13.0.3
- 我试着做最简单的测试,我可以只是看看发生了什么:
import 'cordova-plugin-purchase'; // This seems to add `CdvPurchase` to the global scope.
function buy() {
const {store, ProductType, Platform} = CdvPurchase;
store.verbosity = store.DEBUG;
store.register([{
type: ProductType.CONSUMABLE,
id: "my-product-id",
platform: Platform.APPLE_APPSTORE,
}]);
store.error(e => {
console.log('error', e);
});
store.when()
.productUpdated(() => {
console.log('product updated', product);
})
.approved(value => {
console.log('approved', value);
})
.verified(value => {
console.log('verified', value);
})
.finished(value => {
console.log('finished', value);
});
store.ready(() => {
console.log('ready', store.products);
store.order('my-product-id');
});
store.initialize(Platform.APPLE_APPSTORE)
.then(() => {
console.log('initialize resolved', store.products);
store.order('my-product-id');
});
}
但是我运行buy
函数,所有我得到的是:
[log] - [CordovaPurchase] INFO: initialize()
store
从不报告为就绪。没有一个监听器被触发,甚至.error()
也没有。
您需要在设备准备好时设置并初始化存储
你不能buy()
一个产品,然后初始化存储;它必须在设备启动时完成。
例如,在Cordova中,这是onDeviceReady
事件(示例)。
对于电容器,如果你使用Ionic + Angular,你可以使用this.platform.ready()
事件。
对于React, Vue和其他框架,你可以使用:
document.addEventListener("deviceready", function(){
//do something when device is ready
}, false);