2017-11-01 11 views
-1

私は購入が購入が完了したとき、私はから購入ViewController上のオブジェクトを、非表示にすることができますどのようにスウィフトは:購入が完了したときに通知する方法

extension IAPService: SKPaymentTransactionObserver { 
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 
    for transaction in transactions { 
     print(transaction.transactionState.status(), transaction.payment.productIdentifier) 
     if transaction.transactionState.status() == "purchased" { 
      // Pro Purchased 
     } 
     switch transaction.transactionState { 
     case .purchasing: break 
     default: queue.finishTransaction(transaction) 
     } 
    } 
} 
} 

完了したときSKPaymentTransactionObserverチェックを持っている

+0

チェックこの例アウト:https://github.com/bobbymay/In-App-Purchase – Bobby

+1

あなたは[アプリ内購入を読みましたプログラミングガイド](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267-CH1-SW1)? – rmaddy

+0

@rmaddyはい、私は持っていますが、購入が完了したときに通知を受ける方法を教えてくれるものは見つかりません。トランザクション状態を2番目に購入した関数を実行できるようにしたい – Gjeruldsen

答えて

1

することができますあなたのIAPServiceクラスでクロージャを作成します。

var productDidPurchased: (() -> Void)? 

次に、あなたの拡張機能で、あなたがこの方法でそれを使用することができます。

switch transaction.transactionState { 
    case .purchasing: 
     break 
    case .purchased: 
     productDidPurchased?() 
    default: 
     queue.finishTransaction(transaction) 
} 

次に、あなたのViewControllerでそれを取得する:

IAPService.shared.productDidPurchased = { 
    [weak self] in 
    //you will receive a callback when the product is purchased and can hide your view here 
} 
+0

返信いただきありがとうございます。このコードを実装しようとすると、「値のタイプ 'IAPService'にメンバー 'productDidPurchased'がありません」 – Gjeruldsen

+0

IAPServiceは、アプリの購入を管理するクラスですか、ライブラリを使用していますか? –

+0

ちょうどXcodeを再起動しなければなりませんでした。ありがとうございます – Gjeruldsen

関連する問題