У меня проблема с платформой SwiftyStoreKit, и я даже не уверен, как проверить, решил ли я проблему. Когда я использую свой аккаунт в песочнице, все покупки работают отлично. Но когда я отправляю его в App Store, они отклоняют его, потому что говорят, что получают сообщение «Не удалось получить информацию о продукте - неверный идентификатор продукта: com.rrtenz.puzzlesfromsurvivor2.unlockAll».
Я включил их снимок экрана ниже и полный текст описания проблемы.
Руководство 2.1 - Производительность - Полнота приложения
Мы обнаружили одну или несколько ошибок в вашем приложении при просмотре на iPad
работает iOS на Wi-Fi.
Мы получили прикрепленное сообщение об ошибке при любом выборе из
магазин.
Следующие шаги
Чтобы решить эту проблему, запустите приложение на устройстве, чтобы определить
проблемы, затем пересмотрите и повторно отправьте ваше приложение на рассмотрение.
Если мы неправильно поняли предполагаемое поведение вашего приложения, ответьте на
это сообщение в Центре разрешения проблем, чтобы предоставить информацию о том, как эти
функции были предназначены для работы.
Для новых приложений удалите все предыдущие версии приложения из
устройство, затем установите и следуйте инструкциям, чтобы воспроизвести проблему. За
обновления, установите новую версию как обновление предыдущей версии,
затем следуйте инструкциям, чтобы воспроизвести проблему.
Ресурсы
Для получения информации о тестировании вашего приложения и подготовке его к рассмотрению,
см. Техническую ноту TN2431: Руководство по тестированию приложения.
Обзор сети можно найти в разделе «О сети».
Продукт был добавлен в App Store Connect, и идентификаторы продукта совпадают.
Не знаю, имеет ли это значение, но идентификатор пакета моего приложения - "com.rrTenz. Puzzles-for-Survivors ", а идентификаторы моего продукта - "com.rrtenz. puzzlesfromsurvivor2 .xxxxx».
Вот мой код:
AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
SwiftyStoreKit.completeTransactions(atomically: true) { purchases in
for purchase in purchases {
switch purchase.transaction.transactionState {
case .purchased, .restored:
if purchase.needsFinishTransaction {
// Deliver content from server, then:
SwiftyStoreKit.finishTransaction(purchase.transaction)
}
// Unlock content
case .failed, .purchasing, .deferred:
break // do nothing
@unknown default:
fatalError()
}
}
}
return true
}
Получить код информации:
func getInfo(purchase: RegisteredPurchase) {
NetworkActivityIndicatorManager.NetworkOperationStarted()
SwiftyStoreKit.retrieveProductsInfo([bundleID + "." + purchase.rawValue], completion: {
result in
NetworkActivityIndicatorManager.NetworkOperationFinished()
if let product = result.retrievedProducts.first {
//handle info here
[...]
}else {
//error alert
[...]
}
})
}
Сделать код покупки:
func purchase(purchase: RegisteredPurchase) {
NetworkActivityIndicatorManager.NetworkOperationStarted()
SwiftyStoreKit.purchaseProduct(bundleID + "." + purchase.rawValue, completion: {
result in
NetworkActivityIndicatorManager.NetworkOperationFinished()
if case .success(let product) = result {
//update purchase variables here
[...]
}
//purchase complete alert
[...]
})
}
Итак, как я упоминал ранее, я не уверен, как отладить эту проблему, потому что я даже не могу продублировать поведение при использовании своей учетной записи в песочнице. Если кто-то посоветует или может определить, что я делаю неправильно, я был бы очень признателен.