0
我已經實現了我的應用程序AppDelegate
蘋果推薦的方式SKPaymentTransactionObserver
:顯示對話在應用程序內購買完整
- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:transaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:transaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void) failedTransaction: (SKPaymentTransaction *)transaction
{
if (transaction.error.code != SKErrorPaymentCancelled)
{
// Optionally, display an error here.
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
self.products = response.products;
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
default:
break;
}
}
}
我想我的應用程序發送的對話信息給用戶時,以下發生:購買成功,購買失敗,恢復成功,恢復失敗。我在包裝我的頭腦時遇到了一些麻煩,我可以如何在設計時設置這一點。我有幾個問題:
1)警報需要在事務初始化的視圖控制器中發佈。我怎樣才能讓AppDelegate
與這個視圖控制器進行通信,讓它知道事件發生的時間?我是否設置了AppDelegate
的代表?這對我來說似乎很有趣...有更好的方法嗎?
2)我在哪裏發送消息?它應該在finishTransaction
(我是否需要重寫?)或其他地方?