私のアプリではアプリ内購入がうまくいきます。アプリがバックグラウンドに移行したときのアプリ内購入処理(中断されていないトランザクション)
私が直面している問題は、
- 私がサブスクリプションプロセスを開始し、iPhoneのホームボタンを押してアプリをバックグラウンドに送信すると、
アプリ内購入APIは動作し続け、アプリはバックグラウンドでユーザーはサブスクリプションを正常に購入するプロセスを完了しますが、ユーザーにiTunes資格情報を要求します。
アプリがバックグラウンドでアプリを使用している間にユーザーがアプリ内APIを使用して購読を購入しましたが、ユーザーがアプリを前景に戻さずにサブスクリプション購入情報を私たちのサーバーに転送されることはありません。私たちはサーバー上のユーザーアカウントを更新することができず、ユーザーはアプリの特別な機能を使用することができません。
は、最新の領収書を送信すると、アプリ内のサーバーに購入情報、私は法の下で通知を受ける:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
NSLog(@"updated transaction");
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
NSLog(@"transationStatePurchased");
// here I send data to server, but it never runs if app is in background.
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"transationStateFailed");
[self failedTransaction:transaction];
break;
default:
break;
}
}
}
しかし、問題があるので、アプリがフォアグラウンドにある時には、上記の方法は、常に動作します上記の方法が実行されなくても、完全なトランザクションについての通知を受け取るにはどうすればよいですか。
を委任観察者 。購入プロセスが完了してトランザクションを永続化するまで、トランザクションを完了としてマークしてはいけません。そのため、ユーザーがアプリを強制終了しても、トランザクションは依然としてキューの保留状態になります。 – Paulw11