错误域= SSErrorDomain代码= 0“无法连接到iTunes Store”

时间:2015-05-31 17:05:31

标签: ios swift in-app-purchase

我对此错误感到疯狂。请仔细查看错误消息!这是“ 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和所有其他功能完美运行。

任何任何建议,我可以看到以及我能做些什么,高度欢迎!

1 个答案:

答案 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中读取时犯了一个错误,因为它作为一个对象存储在一个集合中,包含两个字符串。现在它实际上是一组两个字符串。

最后一条非常“有趣”的错误消息,根本无法初始化请求!