Я использовал демонстрационное приложение для автоматического продления подписок, чтобы реализовать автопродление подписок в моем приложении.Я могу войти и подписаться, что вызовет стандартные диалоги подписки ios.Однако в следующий раз, когда я вхожу в систему, я вызываю механизм iap.isSubscribeed () из Codenameone, результат всегда ложный (это потому, что я нахожусь в среде testflight?).Когда метод isSubscribeed возвращает ошибку, я отправляю пользователя на страницу подписки, на которой есть кнопка для подписки. Когда эта кнопка нажата, я получаю диалоговое окно, информирующее меня, что я уже подписан.
Я попытался использовать эмулятор, а также настоящий Apple iphone6 +, ни один из которых не получил успешно подписанную квитанцию для пользователя
@Override
public void initForm() {
theme = UIManager.initFirstTheme("/theme");
//create a new content container
Container content = new Container();
iap = Purchase.getInAppPurchase();
// Pro only feature, uncomment if you have a pro subscription
// Log.bindCrashProtection(true);
// Define a receipt loader
iap.setReceiptStore(createReceiptStore());
/*
The form needs to be split up into 3 parts 1 part for Successful subscriptions
1 part for paymens that have not been sucecssful yet
and 1 part for people who have not subscribed yet
*/
if (!iap.isSubscribed(Skus)) {
EMCDialogFactory.showMessageDialog("Subscription Failed", "Is Subscribed upon login: " + iap.isSubscribed(SKU_1_MONTH));
content = createNonSubscribedHomeScreen();
} else {
EMCDialogFactory.showMessageDialog("Subscription Failed", "Is Subscribed upon login: " + iap.isSubscribed(SKU_1_MONTH));
content = createSuccessfulHomeScreen();
}
setLayout(new BorderLayout());
add(BorderLayout.CENTER, content);
}
/**
* Creates a receipt loader to load receipts from our web service
*
* @return
*/
private ReceiptStore createReceiptStore() {
//fetch all your receipts from the server to be used by the receipt store
listOfReceipts = fetchReceipts();
return new ReceiptStore() {
@Override
public void fetchReceipts(SuccessCallback<Receipt[]> callback) {
List<Receipt> out = new ArrayList<>();
//loop through the receipts
for (Receipt res : listOfReceipts) {
//create a new receipt
Receipt r = new Receipt();
r.setTransactionId(res.getTransactionId());
r.setPurchaseDate(res.getPurchaseDate());
r.setQuantity(1);
r.setSku(res.getSku());
//check cancellation and expiry
if (res.getCancellationDate() != null) {
r.setCancellationDate(res.getCancellationDate());
}
if (res.getExpiryDate() != null) {
r.setExpiryDate(res.getExpiryDate());
}
out.add(r);
}
callback.onSucess(out.toArray(new Receipt[out.size()]));
}
@Override
public void submitReceipt(Receipt r, SuccessCallback<Boolean> callback) {
submitTheReceipt(r, callback);
}
};
}
Нет сообщения об ошибке, которое показывает егопросто возвращает false, что я не подписан, и он возвращается на мою страницу подписки.Однако, если я снова нажимаю кнопку подписки, это говорит о том, что я уже подписан.