cordova-plugin-purchase:即使在调用命令之后,iOS 也不做任何事情
Posted
技术标签:
【中文标题】cordova-plugin-purchase:即使在调用命令之后,iOS 也不做任何事情【英文标题】:cordova-plugin-purchase: iOS does not do anything even after calling order 【发布时间】:2021-01-20 12:27:34 【问题描述】:我们正在使用Ionic 和cordova-plugin-purchase(也称为应用内购买2)来实现购买订阅。 android 运行良好——ios 给我们带来了很多问题。
使用产品名称调用 order
函数应该会显示 iOS 购买弹出窗口,并且购买应该照常继续。
但是,调用order
函数后,订阅产品的状态变为requested
,但之后没有任何反应。没有弹出窗口出现。奇怪的是,就在昨天,我们能够购买该产品,并且在订阅到期后,我们能够再次购买它。它工作得很好。但是,今天产品再次过期后,点击下单功能只是将产品状态更新为requested
,但之后没有任何反应。购买在 Android 上也运行得非常好——只是 iOS 非常奇怪并且总是产生错误和问题。有时,当我们更改沙盒帐户并使用新帐户时,它可以工作,但有时,它会突然停止工作。
我们尝试将代码尽可能地简化到只有这些是重要部分:
// this just automatically sets the validator to the correct URL which changes depending on the user's ID.
this.subscriptions.add(
this.status.userData.subscribe(data =>
this.userData = data;
this.store.validator = `https://xxxxxxxxxxx/api/app/users/$ data.id /purchased`;
)
);
this.store.register([
id: this.MONTHLY_SUBSCRIPTION,
type: this.store.PAID_SUBSCRIPTION
,
id: this.YEARLY_SUBSCRIPTION,
type: this.store.PAID_SUBSCRIPTION
]);
this.store.error((error) =>
console.log('ERROR', error);
);
this.store.when(this.YEARLY_SUBSCRIPTION).updated((p) =>
this.yearly = p;
console.log('yearly', p.state);
);
this.store.when(this.MONTHLY_SUBSCRIPTION).updated((p) =>
this.monthly = p;
console.log('month', p.state);
);
this.store.when(this.YEARLY_SUBSCRIPTION)
.approved(p => p.verify())
.verified(p => p.finish())
.owned(p => this.continue(true, p.id));
this.store.when(this.MONTHLY_SUBSCRIPTION)
.approved(p => p.verify())
.verified(p => p.finish())
.owned(p => this.continue(true, p.id));
this.store.refresh();
调用this.store.order(this.MONTHLY_SUBSCRIPTION);
不会做任何事情。有趣的部分是调用this.store.order(this.YEARLY_SUBSCRIPTION);
确实会显示iOS 购买弹出窗口。没有错误输出或任何东西。我们也曾尝试在this.store.refresh();
之前使用this.store.autoFinishTransactions = true;
,但这似乎没有任何作用。
我们最近运气不佳,如果有人可以提供有关如何解决此问题的建议或提示(可能是插件中的错误?我确实尝试过提交问题,但是...)
非常感谢您,如果需要,我很乐意提供任何进一步的信息。
【问题讨论】:
【参考方案1】:根据插件的文档,store.register()
接受一个对象,而不是一个数组。这可能是它只注册最后一个产品的原因。
store.register(
id: "cc.fovea.inapp1",
alias: "full version",
type: store.NON_CONSUMABLE
);
https://github.com/j3k0/cordova-plugin-purchase/blob/master/doc/api.md#register
我能想到的另一种可能性是您的MONTHLY_SUBSCRIPTION
的值可能与您在应用商店连接上的应用内购买项目的产品 ID 不匹配。
【讨论】:
以上是关于cordova-plugin-purchase:即使在调用命令之后,iOS 也不做任何事情的主要内容,如果未能解决你的问题,请参考以下文章
如何处理本机模式取消/错误事件(cordova-plugin-purchase)?
加载产品详细信息时,Cordova iOS In App Purchase 崩溃
phonegap build ios app 中的应用内购买集成