Автообновляемые подписки не будут автоматически продлены - PullRequest
2 голосов
/ 28 сентября 2011

Извините за этот миллионный вопрос об автообновляемых подписках, но я не понимаю. Я сделал все как описано в Apple App In-App Guidelines, но это не решило проблему.

Моя проблема в том, что я создал автообновляемые подписки, но они не будут автоматически обновляться.

Я создал класс обозревателя платежных транзакций, который реализует интерфейс SKPaymentTransactionObserver. Этот класс будет установлен как paymentObserver при запуске приложения в методе viewDidLoad:.

PaymentTransactionObserver * наблюдатель = [[PaymentTransactionObserver alloc] init];

[[SKPaymentQueue defaultQueue] addTransactionObserver: наблюдатель];

В обозревателе paymenttransaction у меня есть метод paymentQueue: updateTransactions: (аналогично описанию в документации Apple)

  • (void) paymentQueue: (SKPaymentQueue *) очередь обновлена ​​транзакций: (NSArray *) транзакций { для (транзакции SKPaymentTransaction * в транзакциях) {
    switch (transaction.transactionState) {

        case SKPaymentTransactionStatePurchased: 

            [self completeTransaction:transaction]; 

            break;

        case SKPaymentTransactionStateFailed: 

            [self failedTransaction:transaction]; 

            break;

        case SKPaymentTransactionStateRestored:

            [self restoreTransaction:transaction]; 

            break;

        default:

            break;
    }
}

Когда я покупаю автообновляемый продукт, он будет успешно приобретен. Но это никогда не будет автоматически возобновлено. Я думал о том, что наблюдатель транзакции, так или иначе, будет освобожден, но этого не произойдет (в противном случае я буду уведомлен отладчиком). Хотя я также удалил наблюдателя, но он никогда не будет удален.

Я использовал отладчик, чтобы гарантировать, что метод updateTranscations: будет вызван, но ничего. Когда я покупаю тестовый продукт (в режиме «песочницы») со временем автоматического обновления, равным одной неделе, метод должен вызываться через 3 минуты, но это не так.

Что я делаю не так?

Кто-нибудь может помочь?

Br Nic

Ответы [ 2 ]

1 голос
/ 20 октября 2011

Если подписка обновляется автоматически, транзакция не пройдет метод paymentQueue: updateTransactions.Обновление просто происходит в магазине.Если вы хотите проверить его, вам нужно:

  • Подтвердить квитанцию ​​на сервере приложений, если вы храните квитанцию ​​там.

  • Повторная проверка квитанции на вашем клиенте iOS

(http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1)

), чтобы избежать проверки на автообновление при каждом запуске / активацииВы должны сохранить endDate периода подписки, чтобы впоследствии проверить его на продление.

См. также:

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/RenewableSubscriptions/RenewableSubscriptions.html#//apple_ref/doc/uid/TP40008267-CH4-SW4

Однако, похоже, что ошибка впесочница. Подписки иногда обновляются, иногда нет. Трудно проверить ....

0 голосов
/ 05 октября 2011

Автообновления публикуются в очереди покупок вашего приложения только при запуске приложения или когда оно перестает быть фоновым.Попробуйте нажать кнопку «Домой» и вернуться в свое приложение.

...