@available(iOS 17.2, *)
func testPurchase_PromotionalOffer() async throws {
// Arrange
testSession.clearTransactions()
testSession.resetToDefaultState()
let productID = "subscription_1"
let option = Product.PurchaseOption.promotionalOffer(id: "promotional_1")
// Act
try await testSession.buyProduct(identifier: productID, options: [option])
// Assert
let currentTransactions = await StorekitOfferingsManager.fetchCurrentTransactions()
let wasTransactionFound = currentTransactions.contains { transaction in
return transaction.productID == productID && (transaction.offerType == .promotional || transaction.offer?.type == .promotional)
}
XCTAssert(wasTransactionFound, "Promotional Offer transaction not found")
}
static func fetchCurrentTransactions() async -> Set {
var activeTransactions: Set = []
for await entitlement in Transaction.currentEntitlements {
if let transaction = try? entitlement.payloadValue {
activeTransactions.insert(transaction)
}
}
return activeTransactions
}
< /code>
Тем не менее, эта функция тестирования не сбои, всегда. < /p>
Какой правильный способ их проверить? >
[*] product.purchaseoption.promotionaloffer(id:)
product.purchaseOption.codeoffer(ReferenceName P> Нужно ли слушать обновления
? Или просто проверьте CurrentEntiTlements?
с Winback, это должно быть BuickIntents.Intents, но я не могу получить эту работу. src = "https://i.sstatic.net/63cgqbmk.png"/>
Попытка проверить рекламное предложение о покупке предложения через набор тестирования: < /p> [code] @available(iOS 17.2, *) func testPurchase_PromotionalOffer() async throws { // Arrange testSession.clearTransactions() testSession.resetToDefaultState() let productID = "subscription_1" let option = Product.PurchaseOption.promotionalOffer(id: "promotional_1")
// Assert let currentTransactions = await StorekitOfferingsManager.fetchCurrentTransactions()
let wasTransactionFound = currentTransactions.contains { transaction in return transaction.productID == productID && (transaction.offerType == .promotional || transaction.offer?.type == .promotional) }
XCTAssert(wasTransactionFound, "Promotional Offer transaction not found")
}
static func fetchCurrentTransactions() async -> Set { var activeTransactions: Set = []
for await entitlement in Transaction.currentEntitlements { if let transaction = try? entitlement.payloadValue { activeTransactions.insert(transaction) } } return activeTransactions } < /code> Тем не менее, эта функция тестирования не сбои, всегда. < /p> Какой правильный способ их проверить? > [*] product.purchaseoption.promotionaloffer(id:) product.purchaseOption.codeoffer(ReferenceName P> Нужно ли слушать обновления [/code]? Или просто проверьте CurrentEntiTlements? с Winback, это должно быть BuickIntents.Intents, но я не могу получить эту работу. src = "https://i.sstatic.net/63cgqbmk.png"/>