根本问题是SkPaymentQueue.defaultQueue().addPayment()
不允许您传递回调函数,并且无法在运行时(我知道)向SKPaymentTransactionObserver
传递函数。我正在使用React-native版本0.28
创建一个模块,允许我进行应用内购买,但是我想在应用内购买完成后回调一个Javascript函数。
因此,我打算在类中存储对RCTResponseSenderBlock
回调的引用,并在SKPaymentTransactionObserver
中引用它。但是,我不知道如何在Swift中引用一个函数。
我尝试过制作以下变量
weak var purchaseCallback: RCTResponseSenderBlock = nil
在课程的顶部,所以我可以设置它并在以后引用它;然而,斯威夫特抱怨如下:
Nil cannot initialize specified type 'RCTResponseSenderBlock'
如果有办法处理功能参考和/或更好的方式进行购买回调,我会感激一些帮助!
答案 0 :(得分:2)
正如Bryan Chen在上面的评论中指出的那样,使变量成为可选项就行了。
以下是我如何定义保存回调的变量:
var purchaseCallback: RCTResponseSenderBlock? = nil
以下是我如何在Swift中使用React-native调用的函数存储函数引用:
@objc func purchaseProduct(identifier: String, callback successCallback: RCTResponseSenderBlock) {
purchaseCallback = successCallback
}