问题标签 [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.

0 投票
1 回答
22 浏览

storekit - 通过 productsRequest:didReceiveResponse 返回的 SKProduct 在生产中没有 .introductoryPrice,但沙盒符合预期

我们有一个免费试用的 IAP 设置。在沙盒中,我们会看到此产品 ID 的预期试用期。在生产中(当我使用 Release 配置在本地构建时),相同标识符的 .introductoryPrice 为零。我已验证 IAP 已在 AppStore 中设置。这是一个已经存在了很长一段时间的产品 ID,我相信最近唯一的变化是编辑它所属的订阅组,但没有编辑 IAP 本身。

问题可能出在哪里?

0 投票
1 回答
31 浏览

ios - 访问用户之前在 iOS 上取消、升级或删除的订阅的接收数据信息

在 android 计费库中有一个类似下面的方法。

https://developer.android.com/reference/com/android/billingclient/api/PurchaseHistoryRecord

  1. 如果有可用的订阅,则为该订阅购买令牌等。返回数据。
  2. 如果当前没有订阅,但用户有之前的订阅,例如取消,则此旧订阅的 purchaseToken 等返回数据。

对于我的iOS 应用程序,如果用户有之前取消的订阅或订阅升级、降级取消的订阅,我想收到此订阅的receiptData 信息。这样的事情可能吗?我怎样才能访问它。

0 投票
0 回答
35 浏览

swiftui - SwiftUI 应用内购买特定产品崩溃

开发中的购买工作完美,没有任何麻烦。经过一些修改后,一切都通过了审查,现在与 IAP 一起使用。但是,在启动时,应用程序崩溃。这主要是因为我无法在 SKproduct 数组中正确搜索特定的产品标识符。我的问题:我如何在其中搜索特定产品SKproduct[],如果不存在,例如显示"error"

0 投票
1 回答
125 浏览

swift - 未从 SKProductsRequest 收到应用内购买 SKProduct

我在 App Store 连接帐户中有 3 次应用内购买(不可续订的订阅),均已在代码中成功批准和检索

然后我又添加了一个免费的不可续订的应用内购买,提交到应用商店新的应用内购买被批准,所有协议都有效,税务和银行信息是好的,代码中的产品标识符与在App Store 连接

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我在 SKProductsRequest 中请求所有四个产品但在 productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) 我收到三个旧的应用内购买 SKProducts,但在 invalidProductIdentifiers 中收到新的应用内购买的产品标识符

控制台输出:

是苹果的错,还是你有什么代码推荐给我?

0 投票
1 回答
150 浏览

ios - Appstore IAP 价格等级给出错误的价格

我已经为我们的 iOS 应用程序设置了应用程序内购买所需的一切,并且从技术方面的一切都有效。我目前正在沙盒上进行测试。

我的问题是我从 SKProductsRequest 获得的 SKProduct 价格(以瑞典克朗为单位的本地价格)不是 AppStore 价格层列表中的正确价格。

第 4 层应该给出 45 瑞典克朗的价格,但我得到的产品价格是 50 瑞典克朗。50 瑞典克朗不是​​任何级别的价格。这种不一致似乎出现在我检查过的所有价格层上。

我检查过的其他使用 IAP 的应用程序的价格都与价格等级列表一致。

我进行了三重检查,以确保我在产品上选择了正确的层级并且我使用了正确的 productID。

有谁知道可能出了什么问题?

编辑* 据我所知,Sandbox 上的价格使用的是旧价目表(我发现旧价目表与我得到的错误价格相匹配)。我们最终没有发布那个版本,所以我不确定生产中的价格是否正确,尽管我认为它们是正确的。

0 投票
0 回答
34 浏览

ios - 恢复购买按钮始终为沙盒用户 Swift 返回之前购买的产品

让我描述一下我做了什么。我开始和停止在我的应用委托中观察应用内购买,如下所示:

didFinishLaunchingWithOptions

并在applicationWillTerminate

这些是我的 IAPManager 类中的函数:

我知道沙盒用户的购买时间范围如下:

但它与沙盒用户测试不匹配。跨越这个时间跨度后,如果我点击“恢复购买”按钮,它仍然会给我所有以前购买的产品 ID。

我的恢复代码:

PurchaseViewController

IAPManager class

SKPaymentTransactionObserver委托方法:

在这一行的委托方法中,print("restored productID \(prodID)")我总是得到我以前的所有产品标识符,尽管它们应该已经过期。我在这里想念什么?

0 投票
0 回答
29 浏览

ios - 我将应用内购买价格设置为零,但 SKProduct 价格不为零

我注意到购买非消耗品的问题。如果我将产品价格更改为 0,我会在 SKProduct 中看到以前的价格,但如果我尝试购买它,我会在原生 Apple 购买窗口中看到零价格。我在沙盒中对其进行了测试,SKProduct 的价格应该会立即改变。有没有人遇到过一个棘手的问题?

0 投票
0 回答
19 浏览

ios - 我的逻辑验证来处理自动更新订阅 Swift 的升级、降级和取消

我只有一个订阅组,它有 3 种产品:

  • 在自动续订订阅中,如果用户降级到另一个方案,新的降级计划将在下一次续订中激活。(完成目前的高等方案后)

  • 对于升级,新升级的计划在取消旧的降级计划后立即激活,并退还之前的降级计划。

  • 对于取消,如果用户取消了一个计划,那么 latest_receipt_info我们会通过这个名称获得当天的日期 cancellation_date。通常这里不会显示。

基于这 3 个条件,我正在处理isSubscriptionActive 升级、降级和取消状态的状态。

在这里,我在(购买产品)和(恢复产品)委托的receiptValidation每笔成功交易后调用该函数。updatedTransactionspaymentQueueRestoreCompletedTransactionsFinished

receiptValidation函数内部获得 JSON 响应后,这就是我检查升级、降级和取消订阅的方式。

  1. latest_receipt_info在一个单独的函数中,我从该 JSON中创建了一个所有可用的对象数组。在这里我也添加cancellation_date属性如果它在latest_receipt_info字典中可用。这是因为此属性仅在用户从苹果支持取消订阅时才会出现。正常响应不包含此内容。

  2. 然后在另一个函数中,我传递这个数组并根据这些检查返回一个布尔值(isSubscriptionActive):

代码:
latest_receipt_info对象:

func receiptValidation

制作一个数组latest_receipt_info

a), b), c), d), e) 检查:

我知道如果我只使用苹果通知会容易得多,但现在我需要像上面那样做。请分享你的想法。
谢谢!

0 投票
0 回答
18 浏览

ios - 添加和删​​除“SKPaymentQueue”观察者Swift的正确方法

我正在didFinishLaunchingWithOptions像这样添加观察者,然后调用收据验证:

并像这样删除它applicationWillTerminate

我还applicationWillEnterForeground通过调用收据验证来检查购买状态:

简而言之 IAP Manager 类:

在内部的 IAP 管理器类中updatedTransactions,我正在验证收据,然后在每次购买和恢复后完成交易,如下所示:

最后在内部调用收据验证paymentQueueRestoreCompletedTransactionsFinished

但是当我从后台返回到前台或重新启动应用程序时,我的收据验证 Func 会随机调用多次。

我在互联网上搜索发现它正在发生,因为不知何故添加了多个观察者。但我根据苹果的指南添加它。所以根据我的实现,我在这里缺少什么?

我只想调用一次收据验证函数