Swift IOS 13,IAP - “无法连接到 Itunes Connect”

Posted

技术标签:

【中文标题】Swift IOS 13,IAP - “无法连接到 Itunes Connect”【英文标题】:Swift IOS 13, IAP - "Cannot connect to Itunes Connect" 【发布时间】:2020-06-17 22:03:14 【问题描述】:

我使用的是 ios 13.5,在实施 IAP 时遇到了一些问题。我在构建以前的应用程序时使用了完全相同的代码,当我在与现在相同的物理设备上测试运行以前的应用程序时,支付工作正常。

我检查了互联网连接是否正常,证书看起来不错,Itunes Connect 中的 IAP 是“准备提交”,应用程序启用了 IAP,我已经制作了几个沙盒测试器,结果相同。我清理构建并重新启动计算机和设备,但它总是说 Code=2“无法连接到 Itunes Connect”

我什至尝试将构建上传到 Itunes connect 以查看它是否会有所作为,但没有。我显然遗漏了一些东西,并希望得到有关此问题的任何帮助。

呼吁开始购买:

IAPService.shared.purchase(product: .fullAccess)

IAP服务:

class IAPService: NSObject 

private override init() 
static let shared = IAPService()

var products = [SKProduct]()
let paymentQueue = SKPaymentQueue.default()

func getProducts() 
    let products: Set = [IAPProduct.fullAccess.rawValue]
    let request = SKProductsRequest(productIdentifiers: products)
    request.delegate = self
    request.start()
    paymentQueue.add(self)


func purchase(product: IAPProduct)
    guard let productToPurchase = products.filter( $0.productIdentifier == product.rawValue).first else  return 
    let payment = SKPayment(product: productToPurchase)
    paymentQueue.add(payment)


func restorePurchases()
    print("restoring purchases")
    GlobalVariables.hasFullAccess = false
    GlobalVariables.partialAccessArrayKeys.removeAll()
    paymentQueue.restoreCompletedTransactions()
    CheckPurchase.shared.checkUserPurchase()


extension IAPService: SKProductsRequestDelegate 
    func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) 
        self.products = response.products
        for product in response.products 
            print(product.localizedTitle)
        
    


extension IAPService: SKPaymentTransactionObserver 
    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 
        for transaction in transactions 
            print(transaction.transactionState)
            print(transaction.transactionState.status(), transaction.payment.productIdentifier)
            print(transaction.debugDescription)
            if transaction.error != nil 
                print(transaction.error)
            
            
        
    


extension SKPaymentTransactionState 
    func status() -> String 
        switch self 
        case .deferred: return "deferred"
        case .failed: return "failed"
        case .purchased: return "purchased"
        case .purchasing: return "purchasing"
        case .restored: return "restored"
        
    

IAP产品:

enum IAPProduct : String 
    case fullAccess = "se.marcusthuvesen.Torst.FullAccess"

应用代理:

class AppDelegate: UIResponder, UIApplicationDelegate, SKPaymentTransactionObserver 

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 
    


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.
    UIApplication.shared.isIdleTimerDisabled = true
    FirebaseApp.configure()
    IAPService.shared.getProducts()
    SKPaymentQueue.default().add(self)
    //Load game texts from FireBase
    return true

【问题讨论】:

在 AppStoreConnect 上,在您的 iOS App 设置下,在 In-App Purchases 下。您是否已将应用购买中的“完全访问权限”添加到列表中?你更新了你所有的苹果协议和合同吗? 【参考方案1】:

首先,您需要在 App Delegate didFinishLaunchingWithOptions 回调中将自己添加为 paymentQueue 的观察者。

您在哪里看到错误消息?您应该首先看到 SKProductsRequestDelegate 回调。

【讨论】:

我真的需要这样做吗?它在我的其他应用程序中工作而没有这样做。向支付队列中添加观察者是什么意思? 您必须始终是支付队列的观察者,StoreKit 才能正常工作 - 因此在应用程序的整个生命周期内都是如此。 “您的应用程序应在应用程序初始化期间将观察者添加到支付队列。” developer.apple.com/documentation/storekit/skpaymentqueue/… 我在问题中添加了我的应用委托代码。我试图实现观察者,但这是这样做的方法吗? 将自己添加为 IAPService 类的 init 方法中的 SKPaymentQueue 观察者。然后在 didFinishLaunchingWithOptions 方法中,调用共享实例来创建对象并使其保持活动状态 - 您现在正在这样做,但请确保始终这样做,并且不要删除调用。从 getProducts 中删除重复的行。这个共享实例现在应该是任何 SKPaymentQueue 更新的观察者——太好了。这不会解决你的问题。您能告诉我们您何时收到错误消息,是在获取产品之后还是您尝试购买产品时? 好的,我会改变这个。当我尝试购买产品时出现错误消息。

以上是关于Swift IOS 13,IAP - “无法连接到 Itunes Connect”的主要内容,如果未能解决你的问题,请参考以下文章

IAP 自动更新沙盒帐户 - 无法连接到 iTunes Store 错误

Swift - 无法连接到 iCloud 文档

InApp 计划更改总是给出“无法连接到 iTunes 商店”错误

在swift 3中无法连接到xmpp中的套接字

Apple 说即使 wifi 已连接也无法连接到 wifi [关闭]

插座无法连接到重复内容 iOS