- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在处理带有订阅的应用内购买。很快,您可以像这样从 SKProduct 获取价格和价格区域设置:
weeklyProduct.price.doubleValue
weeklyProduct.priceLocale.currencySymbol
其中 weeklyProduct 是 SKProduct。
是否可以获得免费试用期?例如,我为产品指定了两周的免费试用期。我可以从 SKProduct 得到这个吗?
最佳答案
我已经使用 DateComponentsFormatter 解决了这个问题,这为您节省了大量时间来本地化不同的语言以及处理复数等等。这可能看起来像很多代码,但我希望它能在未来节省我的时间。
import Foundation
class PeriodFormatter {
static var componentFormatter: DateComponentsFormatter {
let formatter = DateComponentsFormatter()
formatter.maximumUnitCount = 1
formatter.unitsStyle = .full
formatter.zeroFormattingBehavior = .dropAll
return formatter
}
static func format(unit: NSCalendar.Unit, numberOfUnits: Int) -> String? {
var dateComponents = DateComponents()
dateComponents.calendar = Calendar.current
componentFormatter.allowedUnits = [unit]
switch unit {
case .day:
dateComponents.setValue(numberOfUnits, for: .day)
case .weekOfMonth:
dateComponents.setValue(numberOfUnits, for: .weekOfMonth)
case .month:
dateComponents.setValue(numberOfUnits, for: .month)
case .year:
dateComponents.setValue(numberOfUnits, for: .year)
default:
return nil
}
return componentFormatter.string(from: dateComponents)
}
}
需要将SKProduct周期单位转换为NSCalendarUnit
import StoreKit
@available(iOS 11.2, *)
extension SKProduct.PeriodUnit {
func toCalendarUnit() -> NSCalendar.Unit {
switch self {
case .day:
return .day
case .month:
return .month
case .week:
return .weekOfMonth
case .year:
return .year
@unknown default:
debugPrint("Unknown period unit")
}
return .day
}
}
您可以像这样从 SubscriptionPeriod 中调用它:
import StoreKit
@available(iOS 11.2, *)
extension SKProductSubscriptionPeriod {
func localizedPeriod() -> String? {
return PeriodFormatter.format(unit: unit.toCalendarUnit(), numberOfUnits: numberOfUnits)
}
}
您可以像这样依次从 SKProductDiscount 调用它。请注意,我暂时没有实现其他付款方式。
import StoreKit
@available(iOS 11.2, *)
extension SKProductDiscount {
func localizedDiscount() -> String? {
switch paymentMode {
case PaymentMode.freeTrial:
return "Free trial for \(subscriptionPeriod.localizedPeriod() ?? "a period")"
default:
return nil
}
}
}
关于iOS 应用内购买订阅从 SKProduct 获得免费试用期长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825091/
我正在开发一款 iOS 应用,其中包含自动续订订阅。我想根据可用的订阅列表动态填充升级屏幕。虽然我可以轻松提取价格信息、标题和描述,但我似乎无法成功提取免费试用信息。 有什么方法可以检索产品的免费试用
我在我的应用程序中实现了应用内购买商店。我有英语和德语作为语言。但我总是从 SKProducts 获得德语标题和描述。我正在调用正确的 localizedDescription localizedTi
不确定您是否需要比这更多的代码(如果需要,请告诉我)。我已经为应用内购买准备好了大部分代码,但是,我遇到了这两段代码的问题: var productsArray: Array = [] let
我正在制作一个带有一些 IAP 的应用程序,但我面临着一个无聊的问题,这让我感到疯狂。我测试了我的 IAP,但它不起作用。 (什么也没发生)我检查了问题所在,发现问题来自SKProduct。因此,我尝
我的应用程序中有应用程序内购买。我正在使用日本商店中的测试帐户测试 Japanase 语言设备。我在应用购买标题和描述中同时使用英语和日语。 无论我做什么,SKProduct 的 localizedT
在 inAppPurchases 中使用用户的商店区域设置价格没有问题。但我需要获取以 USD 为单位的产品价格作为我的个人统计数据。有没有办法获取以 美元 表示的 SKProduct 价格,而不是商
我有一个带有以下 SKProduct 代码的 swift 应用 func validateProductIdentifiers() { let identifiers:NSSet =
我正在实现应用程序内商店并成功地从应用程序商店获取 SKProducts。 SKProducts 中的价格信息和描述都很好,但我所有的 localizedTitles 都是零。在 iTunes Con
我正在使用 Xcode v7.2 和 Obj-c。我正在向现有的 iOS 应用程序添加不同的语言。主要问题是 SKProduct localizedTitle(iTC 上的显示名称)总是以英文返回。
我试图通过使用 NSKeyedArchiver 类存档来保存 SKProduct 对象,但它会生成一个错误,如 -[SKProduct encodeWithCoder:]: unrecognized
我正在处理带有订阅的应用内购买。很快,您可以像这样从 SKProduct 获取价格和价格区域设置: weeklyProduct.price.doubleValue weeklyProduct.pri
我正在尝试在我正在创建的应用程序中实现应用内购买,但是当我尝试“获取”产品时,我有 var products = [SKProducts]() 但这会返回一个空数组导致应用程序崩溃。我已经检查了所有税
我的问题很奇怪——我以前从未在论坛上见过它。在请求 IAP (getPurchaseInfo() —> request.start()) 时,我第一次点击它时,它给我一个错误,没有找到任何产品。但是,
我想要按钮在按钮中显示价格和订阅期,就像这样 - 我创建了以每周和每年为周期的自动续订订阅。我得到了值- print("numberOfUnits : \(product.subscriptionPe
我已经实现了一个 IAP 场景 OptionsPage: SKScene,用户可以在其中购买“删除广告”和游戏币等。但是如果我从 MenuScene: SKScene 转到OptionsPage: S
我收到“无效的转换类型 nsmutablearray 以键入 skproduct”错误。当我尝试将产品添加到我的 uitableview 时。这是我正在使用的代码... 初始化 SKProduct *
我的应用程序有一个应用程序内购买,价格为 1.99 英镑。我使用弹出窗口显示此价格,但是,当设备未连接到互联网时,它无法检索我的 IAP 价格,因此它显示为空白。 我的 IAP 价格始终为 1.99
我想删除创建 SKProduct 选项列表所需的任何往返行程,然后使用该列表创建 SKMutablePayment/SKPayment 操作。 有没有关于如何序列化 SKProduct 的指南? 数据
如果您有这样的代码,则 p 将为 "2.99": let price = 2.99 let p = String(format: "%.2f", price) 但是,如果您有这样的代码: let pr
我正在尝试将 SKProduct 保存在 Realm 中,但在乞求时,我正在尝试将 SKProduct 转换为 NSData,但收到此错误由于未捕获的异常“NSInvalidArgumentExcep
我是一名优秀的程序员,十分优秀!