0

アプリケーションでアプリ内購入を使用しています。すべてが正常に機能しています。ユーザーは、トランザクションを適切に購入、復元できます。

復元機能に 1 つの問題があります。

実装方法-ユーザーはアイテムを購入せずに復元することはできません。ユーザーがアイテムを購入せずに復元ボタンをクリックすると、復元が行われ、アプリがブロックされるためです。

4

2 に答える 2

2

Web サービスを実装する必要はありません。わずか数行のコードで問題を解決できます。

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
int totalNumberOfPurchaseToBeRestored = queue.transactions.count;
if (totalNumberOfPurchaseToBeRestored == 0)
{
    //No item found for Restore"
}
else
{
        // Restore items
}

}

于 2012-12-27T05:59:18.440 に答える
1

トランザクションが完了したら、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;
}
于 2012-12-17T06:56:46.497 に答える