アプリケーションでアプリ内購入を使用しています。すべてが正常に機能しています。ユーザーは、トランザクションを適切に購入、復元できます。
復元機能に 1 つの問題があります。
実装方法-ユーザーはアイテムを購入せずに復元することはできません。ユーザーがアイテムを購入せずに復元ボタンをクリックすると、復元が行われ、アプリがブロックされるためです。
アプリケーションでアプリ内購入を使用しています。すべてが正常に機能しています。ユーザーは、トランザクションを適切に購入、復元できます。
復元機能に 1 つの問題があります。
実装方法-ユーザーはアイテムを購入せずに復元することはできません。ユーザーがアイテムを購入せずに復元ボタンをクリックすると、復元が行われ、アプリがブロックされるためです。
Web サービスを実装する必要はありません。わずか数行のコードで問題を解決できます。
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
int totalNumberOfPurchaseToBeRestored = queue.transactions.count;
if (totalNumberOfPurchaseToBeRestored == 0)
{
//No item found for Restore"
}
else
{
// Restore items
}
}
トランザクションが完了したら、ProductPurchased を更新します。そして、viewDidLoad で ProductPurchased の値を確認し、それに応じて復元ボタンを設定します。以下のコードを確認してください。役立つ可能性があります。お知らせください。
if([[[NSUserDefaults standardUserDefaults]valueForKey:@"ProductPurchased"]intValue]==1)
restoreButton.hidden=YES;
復元トランザクション完了トランザクション メソッドに次のコードを記述します。
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
{
if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
self.viewController.restoreButton.hidden=YES;
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
self.viewController.restoreButton.hidden=YES;
}