我对此错误感到疯狂。请仔细查看错误消息!这是“ SS ErrorDomain”NOT“SK ...”与code = 0的组合。到目前为止,我无法在网上的任何地方找到任何有相同问题的人。人们似乎有 SS 错误域,代码= 2 或 SK 错误域代码= 0 。我的组合没有描述,到目前为止没有任何帮助。
好的,这就是我尝试的内容:自1月1日起,应用程序在没有应用程序的情况下工作正常,可以在商店购买。现在我已将应用程序内购买添加到我的应用程序中。我试着测试它们,但我得到的只是上面的错误。它甚至没有试图向我询问测试用户或其他任何东西。
我绝对肯定,我已经退出商店,在真实设备上工作并完成了我可以在网上找到的所有其他测试(很多次)。没有!仍然“无法连接......”
我已经检查了这里描述的所有内容Ray Wenderlichs In-App Tutorial。我甚至从头开始用他的教程创建了一个新的应用程序。同样的问题。等了几天也没有用。
我已经完成了这里描述的事情Cannot connect to iTunes in Baker Factory。你可以猜到结果。
这是一些代码。只是在viewDidLoad()
中调用的开始:
internal class InApp : NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {
private var request: SKProductsRequest!
// Start communication with Apple Store to retrieve list of available products
internal func start() {
if let url = NSBundle.mainBundle().URLForResource("InAppProducts", withExtension: "plist") {
if let productIds = NSArray(contentsOfURL: url) {
NSLog("InApp: Product-Id \(productIds)")
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
request = SKProductsRequest(productIdentifiers: Set(arrayLiteral: productIds))
request.delegate = self
request.start()
NSLog("InApp: request started")
}
}
}
日志打印正确读取plist的两个产品ID。该日志还显示“请求已启动”。之后,它直接调用错误例程:
internal func request(request: SKRequest!, didFailWithError error: NSError!) {
NSLog("ERROR: decription: \(error!.description), reason: \(error!.localizedFailureReason), options: \(error!.localizedRecoveryOptions), suggestion: \(error!.localizedRecoverySuggestion)")
}
我正在使用Xcode 6.3和带有iOS 8.3的iPhone 6。 GameCenter iAdBanner和所有其他功能完美运行。
任何任何建议,我可以看到以及我能做些什么,高度欢迎!
答案 0 :(得分:3)
最后我发现了它。它实际上是这个的副本:Swift Cannot connect to iTunes。
以下是我更改的代码段: OLD / WRONG:
if let url = NSBundle.mainBundle().URLForResource("InAppProducts", withExtension: "plist") {
if let productIds = NSArray(contentsOfURL: url) {
let request = SKProductsRequest(productIdentifiers: Set(arrayLiteral: productIds))
request.delegate = self
request.start()
return true
}
}
NEW / RIGHT:
if let url = NSBundle.mainBundle().URLForResource("InAppProducts", withExtension: "plist") {
if let productIds = NSArray(contentsOfURL: url) {
var set = Set<String>()
for productId in productIds {
if let productId = productId as? String {set.insert(productId as String)}
}
log("InApp: Product-Id \(productIds) = \(set))")
let request = SKProductsRequest(productIdentifiers: set)
request.delegate = self
request.start()
return true
}
}
基本上,我在从plist中读取时犯了一个错误,因为它作为一个对象存储在一个集合中,包含两个字符串。现在它实际上是一组两个字符串。
最后一条非常“有趣”的错误消息,根本无法初始化请求!