我有一个iOS应用程序,其中包含非消费性IAPApple托管内容。下载量非常大(~500MB)。在下载内容时,我必须保持事务“打开”,并且只有在下载完成后才完成事务。问题是,每次我将应用程序从后台移到前台(或打开应用程序)时,StoreKit都会自动请求重新验证,而交易在队列中。因此,如果我开始下载,按下主页按钮,返回到应用程序,StoreKit将要求我登录。无论我重新登录还是直接按“取消”,下载都会继续。有没有办法摆脱这个重新认证请求? 最佳答案 您可以使用SKPaymentTransactionStateDeferred来避免这
当我启动我的UnityiOS应用程序时,它不断提示我:Enterthepasswordfor.[environmentsandbox]注意没有用户名,我不能输入用户名。所以我也不能输入密码。我删除了所有对IAP的引用(channel和购买文件夹,并禁用了IAP服务),删除了iOS构建文件夹并重新构建它,然后编译它。我在iPhone上退出了iTunes。我还是提示我。我附上了截图。 最佳答案 我在使用RevenueCat(react-native-purchases)在ReactNative应用程序中实现IAP时遇到了同样的问题。我的
问题:我调用[[SKPaymentQueuedefaultQueue]restoreCompletedTransactions];它返回到我的观察者paymentQueueRestoreCompletedTransactionsFinished:SKPaymentQueue带有空交易数组。但我已经购买了非消耗性应用内应用。我正在测试我的应用如何恢复不同状态下的购买。重现的简单步骤:添加付款并完成购买。队列返回SKPaymentTransactionStatePurchased交易,因此应用启用功能并完成队列中的交易。删除有关购买的信息,以便我重新购买。(想象一下,用户重新安装了该应用程
应用内购买的新功能。我正在添加一个按钮,允许用户恢复以前购买的产品。当我使用这个时,这个首先提示用户购买=>输入登录信息->说已经购买了->下载产品。我不希望用户确认购买,即使他们没有为同一产品付费。我已经阅读了有关使用restoreCompletedTransactions的信息,有人可以帮助我替换下面的代码片段所需的内容。非常感谢!-(IBAction)OnAlreadyBtnClick:(id)sender{/*codetogetthein-appproductid*/SKPayment*payment=[SKPaymentpaymentWithProductIdentifier
我在使用应用内购买时遇到问题。每次我创建一个新的测试用户并在我使用密码点击确定后在我的iPhone上调试它时,我都会自动收到“你已经购买了这个但还没有下载它。”我已将其添加到我的viewDidLoad中:[[SKPaymentQueuedefaultQueue]addTransactionObserver:self];我的购买函数如下所示:-(IBAction)purchaseProduct:(id)sender{SKProduct*product=[productArrayobjectAtIndex:0];SKPayment*payment=[SKPaymentpaymentWith
有时下载会失败,而我的应用会在失败时完成交易,就像到处都推荐的那样。但是,如果我完成交易,那么StoreKit将无法恢复失败的下载。而且似乎StoreKit不会在下载失败后自动重试下载内容,而且似乎也没有办法触发下载。有人知道在这种情况下该怎么做吗?违背所有建议,在内容完全下载和安装之前不完成交易?或者我必须以编程方式恢复交易并忽略所有其他产品标识符吗? 最佳答案 您可以通过这种方式在您的应用中添加一个恢复购买的按钮:-//insideofanIBaction[[SKPaymentQueuedefaultQueue]addTrans
点击按钮后,我正在进行应用内购买(多次显示我的测试用户的登录警报)-(IBAction)BuyProduct:(id)sender{SKPayment*payment=[SKPaymentpaymentWithProduct:_product];[[SKPaymentQueuedefaultQueue]addPayment:payment];}然后代码移动到caseSKPaymentTransactionStateFailed:NSLog(@"TransactionFailed");[[SKPaymentQueuedefaultQueue]finishTransaction:trans
我在服务器端检查和处理(消耗品的)IAP收据,只有在收到回复后才在应用程序上调用[[SKPaymentQueuedefaultQueue]finishTransaction:transaction]。当服务器没有返回此消息时(无论出于何种原因),应用程序将无法正确完成交易。我现在的问题是:应用程序是否需要执行任何操作才能再次接收收据以进行重试,或者iOS是否通过调用-(void)paymentQueue:(SKPaymentQueue*)queueupdatedTransactions:(NSArray*)交易`?当我重新运行我的应用程序时,该项目被重新提交;但用户不需要重新启动应用。
用户购买商品后,通过输入电子邮件和密码并付款,绝不会调用updatedTransactions方法。该项目是定期购买的,但如果不调用updatedTransactions方法,我无法执行代码以将项目添加到应用程序。我注意到该商品已购买,因为如果我运行代码来恢复已购买的商品,一切都会正常进行,并且该产品会安装到应用程序中。这是我为购买产品而复制的代码:-(IBAction)buyProduct:(id)sender{NSLog(@"Purchasing:%@",self.product.productIdentifier);SKPayment*payment=[SKPaymentpaym
我在应用购买中实现。一切都很好,但我的流程总是停在SKPaymentTransactionStatePurchasing:有人知道原因吗?。请帮忙。-(void)paymentQueue:(SKPaymentQueue*)queueupdatedTransactions:(NSArray*)transactions{NSLog(@"transactions........%@",transactions);NSLog(@"transactionscount........%d",[transactionscount]);NSLog(@"transactionsdescription..