#cordova #ionic-framework #in-app-purchase #ionic4 #cordova-plugins
#cordova #ionic-framework #покупка в приложении #ionic4 #cordova-плагины
Вопрос:
У меня есть несколько существующих приложений в App Store, и я пытался добавить еще одно, но Apple продолжает отклонять мое приложение из-за проблем с покупкой в приложении. Я не изменил код покупки в приложении, поэтому я не уверен, что может быть не так. У меня нет Mac, поскольку я создаю вещи в облаке; следовательно, я хотел обратиться к сообществу за советом. Пожалуйста, найдите то, что я заметил ниже:
- Я знаю, что вы не можете протестировать покупку в приложении на симуляторе. Однако симулятор может нормально отображать данные магазина. Другими словами, inapp должно быть установлено нормально на стороне itunes.
- В iOS 11 при покупке появляется всплывающее окно для входа пользователя в систему. Однако на iOS 13 он завершается сбоем непосредственно с помощью
"Cannot connect to the itunes store"
сообщения. Следовательно, я предполагаю, что проблема может быть связана с iOS13 или с чем-то, что я должен был сделать для работы с iOS 13. Apple тестирует мое приложение на iOS13, и мои предыдущие приложения были одобрены в прошлом, возможно, на iOS11. Более того, отклонение Apple также указывало на то же сообщение об ошибке. - В iOS13 я также вижу следующую ошибку в журналах:
Found nil parameter when creating SKPaymentDiscount
Ниже приведена базовая структура моего кода:
При инициализации приложения я вызвал следующий метод:
configurePurchasing() {
try {
this.iapStore.register({
id: this.productId,
alias: this.productAlias,
type: this.iapStore.CONSUMABLE
});
this.iapStore.when(productId).approved((product) => {
product.finish();
// Purchase is completed
});
this.iapStore.when(productId).updated((product) => {
this.renderProductInfo();
});
this.iapStore.when(productId).cancelled((product) => {
// Show purchase cancelled message
});
this.iapStore.error((err) => {
// Show error message
});
this.iapStore.ready((status) => {
this.renderProductInfo();
});
this.iapStore.when(productId).error((err) => {
// Show error message
});
this.iapStore.refresh();
}
catch (err) {
}
}
renderProductInfo() {
try {
let product = this.iapStore.get(this.productId);
if (!product) {
// Show error message
}
else if (product.state === this.iapStore.INVALID) {
// Show error message
}
else if (product.state === this.iapStore.VALID) {
// Product loaded and valid.
if (this.storeInfoLoadedFlag == false) {
this.title = product.title;
this.price = product.price;
this.description = product.description;
}
else if (this.purchaseErrorFlag) {
// Show error message
}
else if (this.purchaseCancelledFlag) {
// Show cancel message
}
}
}
catch (e) {
}
}
И ниже приведен мой способ покупки:
purchaseLives() {
try {
productId = this.productId;
this.iapStore.get(productId);
this.iapStore.order(productId);
}
catch (err) {
}
}
Я был бы безмерно признателен, если бы вы могли предоставить какой-либо указатель, поскольку у меня нет Mac для тестирования кода на реальном устройстве.
Спасибо,
Doug
Комментарии:
1. вы также создали проблему на github разработчика плагина?
2. Привет, Сергей, большое спасибо за ваш ответ. Да, я создал проблему там, но я обеспокоен тем, что я упускаю что-то очевидное, а не проблему с плагином. Следовательно, я создал здесь вопрос, поскольку это может быть скорее проблема с кодированием с моей стороны в отношении iOS 13.