StoreKit 2 не получает продукты в песочнице (iOS 18.2, Xcode 16.2, macOS 15.3.1)IOS

Программируем под IOS
Ответить
Anonymous
 StoreKit 2 не получает продукты в песочнице (iOS 18.2, Xcode 16.2, macOS 15.3.1)

Сообщение Anonymous »

Я изо всех сил пытаюсь заставить StoreKit 2 получать продукты в моем приложении SwiftUI, используя пользователя песочницы. Я думаю, что выполнил все необходимые шаги по настройке в Xcode, App Store Connect и на своем физическом тестовом устройстве, но Product.products(for:) всегда возвращает пустой массив. Буду признателен за любую информацию!
Что я сделал
  • Настройка локального приложения (Xcode 16.2)
    • Создал пустой проект SwiftUI Xcode.
    • Включил возможность покупок в приложении в разделе «Подписание и возможности».
    • Реализован минимальный код StoreKit 2 для получения доступного кода. продукты (см. ниже).
    • Использование правильного идентификатора пакета, соответствующего App Store Connect.
  • Конфигурация App Store Connect
    • Зарегистрировано приложение с тем же идентификатором пакета.
    • Создана автоматически возобновляемая подписка с: идентификатором продукта v1 (соответствует моему коду). Все поля заполнены (цены, локализация и т.д.). Статус: готов к проверке.
  • Пользователь песочницы и настройка тестирования
    • Создана учетная запись тестировщика песочницы.
    • На моем физическом устройстве (iOS 18.2): вошёл в систему с пользователем песочницы в меню «Настройки» → «Разработчик» → Apple ID «песочницы». Установлено и запущено приложение непосредственно из Xcode.
  • Проблема: StoreKit не возвращает ни одного продукта.
    • Product.products(for:["v1"]) не возвращает никаких продуктов.
    • Никаких ошибок не выдается, просто пустой массив.
    • Я подтвердил, что для конфигурации StoreKit установлено значение «Нет» в Xcode.
    • В консоли не отображаются журналы, связанные со StoreKit.
Фрагменты кода

Код: Выделить всё

//StoreKitManager.swift

import StoreKit
import SwiftUI

@MainActor
class StoreKitManager: ObservableObject {
@Published var products: [Product] = []
@Published var errorMessage: String?

func fetchProducts() async {
do {
let productIDs: Set = ["v1"] // Matches App Store Connect
let fetchedProducts = try await Product.products(for: productIDs)
print(fetchedProducts) // Debug output

DispatchQueue.main.async {
self.products = fetchedProducts
}
} catch {
DispatchQueue.main.async {
self.errorMessage = "Failed to fetch products: \(error.localizedDescription)"
}
}
}
}

Код: Выделить всё

//ContentView.swift

import SwiftUI

struct ContentView: View {
@StateObject private var storeKitManager = StoreKitManager()

var body: some View {
VStack {
if let errorMessage = storeKitManager.errorMessage {
Text(errorMessage).foregroundColor(.red)
} else if storeKitManager.products.isEmpty {
Text("No products available")
} else {
List(storeKitManager.products, id: \.id) { product in
VStack(alignment: .leading) {
Text(product.displayName).font(.headline)
Text(product.description).font(.subheadline)
Text("\(product.price.formatted(.currency(code: product.priceFormatStyle.currencyCode ?? "USD")))")
.bold()
}
}
}

Button("Fetch Products") {
Task {
await storeKitManager.fetchProducts()
}
}
}
.padding()
.onAppear {
Task {
await storeKitManager.fetchProducts()
}
}
}
}

#Preview {
ContentView()
}
Дополнительная информация
• Версия iOS: 18.2
• Версия Xcode: 16.2
• Версия macOS: 15.3.1
• Устройство: физический iPhone (не симулятор)
• Конфигурация StoreKit: установлено значение «Нет».
Есть ли способ выяснить, почему StoreKit не распознает мою подписку?

Подробнее здесь: https://stackoverflow.com/questions/794 ... cos-15-3-1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»