2016-07-07 20 views
4

根本問題是SkPaymentQueue.defaultQueue().addPayment()不允許您傳遞迴調函數,並且在運行時(我知道的)中沒有辦法將函數傳遞給SKPaymentTransactionObserver。我使用的是React原生版本0.28來創建一個允許我進行應用內購買的模塊,但是我想在應用內購買完成後回調Javascript函數。如何在Swift 2中存儲函數引用?

因此,我打算在類中存儲對RCTResponseSenderBlock回調的引用,並在SKPaymentTransactionObserver中引用它。但是,我不知道如何引用Swift中的函數。

我試着做以下變量

weak var purchaseCallback: RCTResponseSenderBlock = nil

在類的頂部,這樣就可以把魚和引用它以後;然而,斯威夫特抱怨下列要求:

Nil cannot initialize specified type 'RCTResponseSenderBlock'

如果處理函數引用和/或更好的方式來進行購買回調的方式,我會很感激一些幫助!

+1

使其可選 –

回答

2

正如Bryan Chen在他上面的評論中指出的那樣,使變量可選做到了。

這裏是我如何定義持有回調變量:

var purchaseCallback: RCTResponseSenderBlock? = nil 

這裏就是我如何存儲從通過調用函數的函數引用陣營本地斯威夫特:

@objc func purchaseProduct(identifier: String, callback successCallback: RCTResponseSenderBlock) { 
    purchaseCallback = successCallback 
} 
相關問題