StoreKit 不喜欢从 pList 加载的产品标识符
StoreKit doesn't like product identifiers loaded from a pList
过去 2 天我一直在努力让 StoreKit 正常工作。
我通过堆栈溢出发现了许多可能的故障和补救措施。我还没有在任何地方看到这个特殊问题。
第一个代码片段显示了我的项目中的工作原理。它通过适当的委托函数使用硬编码的产品 ID 字符串和 returns SKProduct。它适用于设备和模拟器 (iOS 8.4)。
private var request : SKProductsRequest?
func fetchProducts()
{
self.request = SKProductsRequest(productIdentifiers: Set(["TestProductA","Test Product A"]))
self.request?.delegate = self
self.request?.start()
}
但是如果我使用从 plist 加载的相同产品 ID,那么它就不再起作用了。我立即得到典型的模糊错误 "cannot connect to store"。为什么这不起作用让我暂时不知所措。
func fetchProducts()
{
if let productList = NSBundle.mainBundle().URLForResource("Products", withExtension: "plist"),
let productIdentifiers = NSArray(contentsOfURL: productList) as? [String]
{
self.request = SKProductsRequest(productIdentifiers: Set(arrayLiteral: productIdentifiers))
self.request?.delegate = self
self.request?.start()
}
}
找到解决方案。我不得不更改集合的创建方式。
self.request = SKProductsRequest(productIdentifiers: Set<String>(productIdentifiers))
过去 2 天我一直在努力让 StoreKit 正常工作。 我通过堆栈溢出发现了许多可能的故障和补救措施。我还没有在任何地方看到这个特殊问题。
第一个代码片段显示了我的项目中的工作原理。它通过适当的委托函数使用硬编码的产品 ID 字符串和 returns SKProduct。它适用于设备和模拟器 (iOS 8.4)。
private var request : SKProductsRequest?
func fetchProducts()
{
self.request = SKProductsRequest(productIdentifiers: Set(["TestProductA","Test Product A"]))
self.request?.delegate = self
self.request?.start()
}
但是如果我使用从 plist 加载的相同产品 ID,那么它就不再起作用了。我立即得到典型的模糊错误 "cannot connect to store"。为什么这不起作用让我暂时不知所措。
func fetchProducts()
{
if let productList = NSBundle.mainBundle().URLForResource("Products", withExtension: "plist"),
let productIdentifiers = NSArray(contentsOfURL: productList) as? [String]
{
self.request = SKProductsRequest(productIdentifiers: Set(arrayLiteral: productIdentifiers))
self.request?.delegate = self
self.request?.start()
}
}
找到解决方案。我不得不更改集合的创建方式。
self.request = SKProductsRequest(productIdentifiers: Set<String>(productIdentifiers))