diff --git a/Sources/Logging/Strings/OfferingStrings.swift b/Sources/Logging/Strings/OfferingStrings.swift index 8722ff751d..01d1c184c2 100644 --- a/Sources/Logging/Strings/OfferingStrings.swift +++ b/Sources/Logging/Strings/OfferingStrings.swift @@ -22,7 +22,6 @@ enum OfferingStrings { case fetching_offerings_error(error: String) case found_existing_product_request(identifiers: Set) case no_cached_offerings_fetching_from_network - case no_cached_requests_and_products_starting_skproduct_request(identifiers: Set) case offerings_stale_updated_from_network case offerings_stale_updating_in_background case offerings_stale_updating_in_foreground @@ -62,10 +61,6 @@ extension OfferingStrings: CustomStringConvertible { case .no_cached_offerings_fetching_from_network: return "No cached Offerings, fetching from network" - case .no_cached_requests_and_products_starting_skproduct_request(let identifiers): - return "No existing requests and " + - "products not cached, starting SKProducts request for: \(identifiers)" - case .offerings_stale_updated_from_network: return "Offerings updated from network." diff --git a/Sources/Logging/Strings/StoreKitStrings.swift b/Sources/Logging/Strings/StoreKitStrings.swift index f525c11510..657a261af3 100644 --- a/Sources/Logging/Strings/StoreKitStrings.swift +++ b/Sources/Logging/Strings/StoreKitStrings.swift @@ -18,13 +18,13 @@ enum StoreKitStrings { case skrequest_failed(error: Error) - case skproductsrequest_failed(error: Error) + case store_products_request_failed(error: Error) case skproductsrequest_timed_out(after: Int) - case skproductsrequest_finished + case store_product_request_finished - case skproductsrequest_received_response + case store_product_request_received_response case skunknown_payment_mode(String) @@ -36,6 +36,8 @@ enum StoreKitStrings { case sk1_discount_missing_locale + case no_cached_products_starting_store_products_request(identifiers: Set) + } extension StoreKitStrings: CustomStringConvertible { @@ -46,8 +48,8 @@ extension StoreKitStrings: CustomStringConvertible { case .skrequest_failed(let error): return "SKRequest failed: \(error.localizedDescription)" - case .skproductsrequest_failed(let error): - return "SKProductsRequest failed! error: \(error.localizedDescription)" + case .store_products_request_failed(let error): + return "Store products request failed! Error: \(error.localizedDescription)" case .skproductsrequest_timed_out(let afterTimeInSeconds): return "SKProductsRequest took longer than \(afterTimeInSeconds) seconds, " + @@ -55,11 +57,11 @@ extension StoreKitStrings: CustomStringConvertible { "If this is happening to you consistently, you might want to try using a new Sandbox account. " + "More information: https://rev.cat/skproductsrequest-hangs" - case .skproductsrequest_finished: - return "SKProductsRequest did finish" + case .store_product_request_finished: + return "Store products request finished" - case .skproductsrequest_received_response: - return "SKProductsRequest request received response" + case .store_product_request_received_response: + return "Store products request request received response" case let .skunknown_payment_mode(name): return "Unrecognized PaymentMode: \(name)" @@ -77,6 +79,9 @@ extension StoreKitStrings: CustomStringConvertible { case .sk1_discount_missing_locale: return "There is an issue with the App Store, this SKProductDiscount is missing a Locale - " + "The current device Locale will be used instead." + + case .no_cached_products_starting_store_products_request(let identifiers): + return "No existing products cached, starting store products request for: \(identifiers)" } } diff --git a/Sources/Purchasing/ProductsManager.swift b/Sources/Purchasing/ProductsManager.swift index 387750e65a..8771ed3115 100644 --- a/Sources/Purchasing/ProductsManager.swift +++ b/Sources/Purchasing/ProductsManager.swift @@ -106,8 +106,10 @@ private extension ProductsManager { _ = Task { do { let products = try await self.sk2StoreProducts(withIdentifiers: identifiers) + Logger.debug(Strings.storeKit.store_product_request_finished) completion(.success(Set(products))) } catch { + Logger.debug(Strings.storeKit.store_products_request_failed(error: error)) completion(.failure(error)) } } @@ -116,14 +118,7 @@ private extension ProductsManager { func invalidateAndReFetchCachedSK1Products() { productsFetcherSK1.clearCache { [productsFetcherSK1] removedProductIdentifiers in guard !removedProductIdentifiers.isEmpty else { return } - productsFetcherSK1.products(withIdentifiers: removedProductIdentifiers, completion: { result in - switch result { - case.success: - Logger.debug(Strings.storeKit.skproductsrequest_finished) - case .failure(let error): - Logger.debug(Strings.storeKit.skproductsrequest_failed(error: error)) - } - }) + productsFetcherSK1.products(withIdentifiers: removedProductIdentifiers, completion: { _ in }) } } @@ -134,9 +129,10 @@ private extension ProductsManager { if !removedProductIdentifiers.isEmpty { do { _ = try await self.productsFetcherSK2.products(identifiers: removedProductIdentifiers) - Logger.debug(Strings.storeKit.skproductsrequest_finished) + + Logger.debug(Strings.storeKit.store_product_request_finished) } catch { - Logger.debug(Strings.storeKit.skproductsrequest_failed(error: error)) + Logger.debug(Strings.storeKit.store_products_request_failed(error: error)) } } } diff --git a/Sources/Purchasing/StoreKit1/ProductsFetcherSK1.swift b/Sources/Purchasing/StoreKit1/ProductsFetcherSK1.swift index 8be59b5c33..30d9ea3dd9 100644 --- a/Sources/Purchasing/StoreKit1/ProductsFetcherSK1.swift +++ b/Sources/Purchasing/StoreKit1/ProductsFetcherSK1.swift @@ -60,7 +60,7 @@ class ProductsFetcherSK1: NSObject { } Logger.debug( - Strings.offering.no_cached_requests_and_products_starting_skproduct_request(identifiers: identifiers) + Strings.storeKit.no_cached_products_starting_store_products_request(identifiers: identifiers) ) self.completionHandlers[identifiers] = [completion] @@ -119,7 +119,7 @@ extension ProductsFetcherSK1: SKProductsRequestDelegate { func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) { queue.async { [self] in - Logger.rcSuccess(Strings.storeKit.skproductsrequest_received_response) + Logger.rcSuccess(Strings.storeKit.store_product_request_received_response) guard let productRequest = self.productsByRequests[request] else { Logger.error("requested products not found for request: \(request)") return @@ -141,7 +141,7 @@ extension ProductsFetcherSK1: SKProductsRequestDelegate { } func requestDidFinish(_ request: SKRequest) { - Logger.rcSuccess(Strings.storeKit.skproductsrequest_finished) + Logger.rcSuccess(Strings.storeKit.store_product_request_finished) self.cancelRequestToPreventTimeoutWarnings(request) } @@ -151,7 +151,7 @@ extension ProductsFetcherSK1: SKProductsRequestDelegate { } queue.async { [self] in - Logger.appleError(Strings.storeKit.skproductsrequest_failed(error: error)) + Logger.appleError(Strings.storeKit.store_products_request_failed(error: error)) guard let productRequest = self.productsByRequests[request] else { Logger.error(Strings.purchase.requested_products_not_found(request: request)) diff --git a/Sources/Purchasing/StoreKit2/ProductsFetcherSK2.swift b/Sources/Purchasing/StoreKit2/ProductsFetcherSK2.swift index 1a8efcc7c3..6a4abe3061 100644 --- a/Sources/Purchasing/StoreKit2/ProductsFetcherSK2.swift +++ b/Sources/Purchasing/StoreKit2/ProductsFetcherSK2.swift @@ -29,10 +29,20 @@ actor ProductsFetcherSK2 { func products(identifiers: Set) async throws -> Set { do { if let cachedProducts = await self.cachedProducts(withIdentifiers: identifiers) { + Logger.debug( + Strings.offering.products_already_cached( + identifiers: Set(cachedProducts.map { $0.productIdentifier}) + ) + ) return cachedProducts } + Logger.debug( + Strings.storeKit.no_cached_products_starting_store_products_request(identifiers: identifiers) + ) + let storeKitProducts = try await StoreKit.Product.products(for: identifiers) + Logger.rcSuccess(Strings.storeKit.store_product_request_received_response) let sk2StoreProducts = Set(storeKitProducts.map { SK2StoreProduct(sk2Product: $0) }) await self.cache(products: sk2StoreProducts)