2016-07-07 2 views
4

根本的な問題は、SkPaymentQueue.defaultQueue().addPayment()はコールバック関数を渡すことができず、実行時に(私が知っている)関数SKPaymentTransactionObserverに関数を渡す方法がないことです。 React-nativeバージョン0.28を使用して、アプリ内購入を可能にするモジュールを作成していますが、アプリ内購入が完了するとJavascript関数をコールバックしたかったのです。Swift 2に関数リファレンスを保存するにはどうしたらいいですか?

したがって、RCTResponseSenderBlockコールバックへの参照をクラスに保存し、SKPaymentTransactionObserverで参照します。しかし、Swiftの関数を参照する方法はわかりません。

私はので、私はそれを設定することができますし、後でそれを参照するクラスの先頭に次の変数

weak var purchaseCallback: RCTResponseSenderBlock = nil

を作ってみました。しかし、スウィフトは、次のように不平を言っている:関数の参照および/または購入コールバックを行うためのより良い方法を処理する方法がある場合は

Nil cannot initialize specified type 'RCTResponseSenderBlock'

、私はいくつかの助けをいただければと思います!

+1

それをオプションに –

答えて

2

ブライアン・チェンが上記の彼のコメントで指摘したように、変数をオプションにすることがトリックでした。ここで

は私がコールバックを保持する変数を定義する方法は次のとおりです。

var purchaseCallback: RCTResponseSenderBlock? = nil 

そして、ここでは、私が反応-ネイティブスウィフトに呼び出される関数から関数参照を格納方法は次のとおりです。

@objc func purchaseProduct(identifier: String, callback successCallback: RCTResponseSenderBlock) { 
    purchaseCallback = successCallback 
} 
関連する問題