StoreKit 2周围的许多tutorials,甚至Apple's own Sample Code都引用了“Xcode中的StoreKit测试”,这样你就可以构建和运行示例应用程序,而无需在App Store Connect中完成任何设置。该项目在Products.storekit文件中为StoreKit测试服务器定义应用内产品。”我有一个应用程序,已在App Store Connect中设置了自动续订订阅(从SwiftyStoreKit迁移到StoreKit 2)...我如何设置此StoreKitManager类来检查活动订阅,而无需创建单独的Products.plist
文件?下面这段代码主要基于Apple的示例代码,结果是Error Domain=ASDErrorDomain Code=509 "No active account"
,这很明显,因为我不知道如何将我的产品连接到StoreKit 2逻辑上?🤔
编辑:这是我的代码的gist
import Foundation
import StoreKit
typealias Transaction = StoreKit.Transaction
public enum StoreError: Error {
case failedVerification
}
@available(watchOSApplicationExtension 8.0, *)
class WatchStoreManager: ObservableObject {
var updateListenerTask: Task<Void, Error>? = nil
init() {
print("Init called in WatchStoreManager")
//Start a transaction listener as close to app launch as possible so you don't miss any transactions.
updateListenerTask = listenForTransactions()
}
deinit {
updateListenerTask?.cancel()
}
func listenForTransactions() -> Task<Void, Error> {
return Task.detached {
//Iterate through any transactions that don't come from a direct call to `purchase()`.
for await result in Transaction.updates {
do {
let transaction = try self.checkVerified(result)
print("we have a verified transacction")
//Deliver products to the user.
//TODO:
//await self.updateCustomerProductStatus()
//Always finish a transaction.
await transaction.finish()
} catch {
//StoreKit has a transaction that fails verification. Don't deliver content to the user.
print("Transaction failed verification")
}
}
}
}
func checkVerified<T>(_ result: VerificationResult<T>) throws -> T {
//Check whether the JWS passes StoreKit verification.
switch result {
case .unverified:
//StoreKit parses the JWS, but it fails verification.
throw StoreError.failedVerification
case .verified(let safe):
//The result is verified. Return the unwrapped value.
return safe
}
}
}
字符串
2条答案
按热度按时间bvn4nwqk1#
第509章:没有活动帐户
表示用户未登录应用商店。转到
Settings -> Sign in to Your iPhone
并使用有效的App Store或沙盒帐户登录编辑:我看到你在你的设备上登录-这很奇怪。你提到你没有链接你的产品。您需要从App Store中获取产品,类似于以下内容。但我不希望你看到那个特定的错误信息...
字符串
我正在将购买状态设置为checkVerified,当验证通过时...
vlju58qv2#
对我来说,我的Xcode项目的Bundle id与appstoreConnect的Bundle id不完全匹配。我在Xcode上更改了它,在appstoreconnect上没有更新。
奇怪的是,我的本地测试配置存储文件同步得很好,一切正常。
一般来说(对于StoreKit 2的沙盒测试),我当然会检查:- 您已经在appstoreconnect上创建了应用和应用内购买。- 您已同意AppstoreConnect上的所有协议-协议、税收等。- 产品标识符和捆绑包ID匹配。
这就是我试图解决这个问题所得到的,看到其他人的问题和对他们有效的东西。希望有人能得到这个有用的!