-2
我的現有應用更新已於今天在應用商店發佈,並通過應用內購買來移除廣告。我不得不放置一個恢復按鈕,因爲它是非消耗性的應用程序內購買。我注意到我可以在沒有購買的情況下恢復應用內購買。即使在購買之前即可恢復應用內購買
該應用程序約4小時前出售。這對新應用程序是否正常?應用商店是否需要一些時間來連接應用內購買(可能是一個愚蠢的問題)?或者我在代碼中做錯了什麼?
如果你知道發生了什麼,請回復。
編輯: 這裏是我用
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
default:
break;
}
}
}
- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
[[SKPaymentQueue defaultQueue]addTransactionObserver:self];
}
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
if (SKPaymentTransactionStatePurchased)
{
//save purchase
NSUserDefaults *savePurchase = [NSUserDefaults standardUserDefaults];
[savePurchase setBool:TRUE forKey:k_Save];
[savePurchase synchronize];
_adBanner.hidden = YES;
// alert after successful restore.
UIAlertView *restoreTransactionAlert = [[UIAlertView alloc] initWithTitle:@"Congratulations!"
message:@"Your purchase is restored."
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[restoreTransactionAlert show];
}
else
{
// alert after unsuccessful restore.
UIAlertView *restoreTransactionAlert = [[UIAlertView alloc] initWithTitle:@"Restore failed"
message:@"Restore failed. please try again"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[restoreTransactionAlert show];
}
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
}
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
}
如果這是您第一次實施此特定應用程序購買,那麼這很可能是您的代碼中的問題。請在您的應用程序 – ZeMoon
中使用您在應用程序購買中用於恢復的代碼編輯答案,謝謝您的回覆akashg。我用代碼編輯了我的問題。能否請你幫忙。 – Isti
當您測試IAP在工作時是否使用了其他帳戶?難道你可以恢復它,只是因爲你已經購買了它作爲測試的一部分?就像您發佈的代碼一樣,在恢復的Switch語句中,您似乎沒有做任何事情? – Flexicoder