问题标签 [skproduct]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
storekit - 通过 productsRequest:didReceiveResponse 返回的 SKProduct 在生产中没有 .introductoryPrice,但沙盒符合预期
我们有一个免费试用的 IAP 设置。在沙盒中,我们会看到此产品 ID 的预期试用期。在生产中(当我使用 Release 配置在本地构建时),相同标识符的 .introductoryPrice 为零。我已验证 IAP 已在 AppStore 中设置。这是一个已经存在了很长一段时间的产品 ID,我相信最近唯一的变化是编辑它所属的订阅组,但没有编辑 IAP 本身。
问题可能出在哪里?
ios - 访问用户之前在 iOS 上取消、升级或删除的订阅的接收数据信息
在 android 计费库中有一个类似下面的方法。
https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord
- 如果有可用的订阅,则为该订阅购买令牌等。返回数据。
- 如果当前没有订阅,但用户有之前的订阅,例如取消,则此旧订阅的 purchaseToken 等返回数据。
对于我的iOS 应用程序,如果用户有之前取消的订阅或订阅升级、降级取消的订阅,我想收到此订阅的receiptData 信息。这样的事情可能吗?我怎样才能访问它。
swiftui - SwiftUI 应用内购买特定产品崩溃
开发中的购买工作完美,没有任何麻烦。经过一些修改后,一切都通过了审查,现在与 IAP 一起使用。但是,在启动时,应用程序崩溃。这主要是因为我无法在 SKproduct 数组中正确搜索特定的产品标识符。我的问题:我如何在其中搜索特定产品SKproduct[]
,如果不存在,例如显示"error"
swift - 未从 SKProductsRequest 收到应用内购买 SKProduct
我在 App Store 连接帐户中有 3 次应用内购买(不可续订的订阅),均已在代码中成功批准和检索
然后我又添加了一个免费的不可续订的应用内购买,提交到应用商店新的应用内购买被批准,所有协议都有效,税务和银行信息是好的,代码中的产品标识符与在App Store 连接
我在 SKProductsRequest 中请求所有四个产品但在 productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) 我收到三个旧的应用内购买 SKProducts,但在 invalidProductIdentifiers 中收到新的应用内购买的产品标识符
控制台输出:
是苹果的错,还是你有什么代码推荐给我?
ios - Appstore IAP 价格等级给出错误的价格
我已经为我们的 iOS 应用程序设置了应用程序内购买所需的一切,并且从技术方面的一切都有效。我目前正在沙盒上进行测试。
我的问题是我从 SKProductsRequest 获得的 SKProduct 价格(以瑞典克朗为单位的本地价格)不是 AppStore 价格层列表中的正确价格。
第 4 层应该给出 45 瑞典克朗的价格,但我得到的产品价格是 50 瑞典克朗。50 瑞典克朗不是任何级别的价格。这种不一致似乎出现在我检查过的所有价格层上。
我检查过的其他使用 IAP 的应用程序的价格都与价格等级列表一致。
我进行了三重检查,以确保我在产品上选择了正确的层级并且我使用了正确的 productID。
有谁知道可能出了什么问题?
编辑* 据我所知,Sandbox 上的价格使用的是旧价目表(我发现旧价目表与我得到的错误价格相匹配)。我们最终没有发布那个版本,所以我不确定生产中的价格是否正确,尽管我认为它们是正确的。
ios - 恢复购买按钮始终为沙盒用户 Swift 返回之前购买的产品
让我描述一下我做了什么。我开始和停止在我的应用委托中观察应用内购买,如下所示:
在didFinishLaunchingWithOptions
:
并在applicationWillTerminate
:
这些是我的 IAPManager 类中的函数:
我知道沙盒用户的购买时间范围如下:
但它与沙盒用户测试不匹配。跨越这个时间跨度后,如果我点击“恢复购买”按钮,它仍然会给我所有以前购买的产品 ID。
我的恢复代码:
PurchaseViewController
:
IAPManager class
:
SKPaymentTransactionObserver
委托方法:
在这一行的委托方法中,print("restored productID \(prodID)")
我总是得到我以前的所有产品标识符,尽管它们应该已经过期。我在这里想念什么?
ios - 我将应用内购买价格设置为零,但 SKProduct 价格不为零
我注意到购买非消耗品的问题。如果我将产品价格更改为 0,我会在 SKProduct 中看到以前的价格,但如果我尝试购买它,我会在原生 Apple 购买窗口中看到零价格。我在沙盒中对其进行了测试,SKProduct 的价格应该会立即改变。有没有人遇到过一个棘手的问题?
ios - 我的逻辑验证来处理自动更新订阅 Swift 的升级、降级和取消
我只有一个订阅组,它有 3 种产品:
在自动续订订阅中,如果用户降级到另一个方案,新的降级计划将在下一次续订中激活。(完成目前的高等方案后)
对于升级,新升级的计划在取消旧的降级计划后立即激活,并退还之前的降级计划。
对于取消,如果用户取消了一个计划,那么
latest_receipt_info
我们会通过这个名称获得当天的日期cancellation_date
。通常这里不会显示。
基于这 3 个条件,我正在处理isSubscriptionActive
升级、降级和取消状态的状态。
在这里,我在(购买产品)和(恢复产品)委托的receiptValidation
每笔成功交易后调用该函数。updatedTransactions
paymentQueueRestoreCompletedTransactionsFinished
在receiptValidation
函数内部获得 JSON 响应后,这就是我检查升级、降级和取消订阅的方式。
latest_receipt_info
在一个单独的函数中,我从该 JSON中创建了一个所有可用的对象数组。在这里我也添加cancellation_date
属性如果它在latest_receipt_info
字典中可用。这是因为此属性仅在用户从苹果支持取消订阅时才会出现。正常响应不包含此内容。然后在另一个函数中,我传递这个数组并根据这些检查返回一个布尔值(isSubscriptionActive):
代码:
latest_receipt_info
对象:
func receiptValidation
:
制作一个数组latest_receipt_info
:
a), b), c), d), e) 检查:
我知道如果我只使用苹果通知会容易得多,但现在我需要像上面那样做。请分享你的想法。
谢谢!
ios - 添加和删除“SKPaymentQueue”观察者Swift的正确方法
我正在didFinishLaunchingWithOptions
像这样添加观察者,然后调用收据验证:
并像这样删除它applicationWillTerminate
:
我还applicationWillEnterForeground
通过调用收据验证来检查购买状态:
简而言之 IAP Manager 类:
在内部的 IAP 管理器类中updatedTransactions
,我正在验证收据,然后在每次购买和恢复后完成交易,如下所示:
最后在内部调用收据验证paymentQueueRestoreCompletedTransactionsFinished
:
但是当我从后台返回到前台或重新启动应用程序时,我的收据验证 Func 会随机调用多次。
我在互联网上搜索发现它正在发生,因为不知何故添加了多个观察者。但我根据苹果的指南添加它。所以根据我的实现,我在这里缺少什么?
我只想调用一次收据验证函数