你可以实现:
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool { }
更多关于此 苹果
当用户启动应用内购买时,将调用此委托方法 在App Store中,交易将继续在您的应用中进行。 具体来说,如果您的应用已安装,则调用该方法 自动。 如果用户启动应用程序时尚未安装您的应用程序 在App Store中购买时,用户会在应用程序时收到通知 安装完成。当用户点击时调用此方法 通知。否则,如果用户手动打开应用程序,则此操作 只有在购买后不久打开应用程序时才会调用方法 开始。
当用户启动应用内购买时,将调用此委托方法 在App Store中,交易将继续在您的应用中进行。 具体来说,如果您的应用已安装,则调用该方法 自动。
如果用户启动应用程序时尚未安装您的应用程序 在App Store中购买时,用户会在应用程序时收到通知 安装完成。当用户点击时调用此方法 通知。否则,如果用户手动打开应用程序,则此操作 只有在购买后不久打开应用程序时才会调用方法 开始。
整个删除此行:
SKPaymentQueue.default().remove(self)
你需要你的观察者成为一个永久的持久对象,比如app delegate。切勿将其取下或商店无法与您交谈。