Как я могу использовать при покупке приложения без сервера - PullRequest
0 голосов
/ 27 марта 2020

В настоящее время я использую SwiftyStoreKit для обработки покупки приложения. Прямо сейчас мне нужно только установить переменную в Userdefaults на true после того, как пользователи закончат свои sh покупки. Когда я запускаю на своем устройстве, оно может успешно обрабатываться, а также восстанавливать работы. Но когда я отправляю в Apple на проверку, мне сказали, что в IAP есть ошибка, и она не может завершить покупку. Мое приложение не имеет внутреннего сервера.

Code in AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    let keychain = KeychainSwift()
    if(UserDefaults.standard.string(forKey: K.FIRSTTIME) == nil){
        keychain.clear()
    }

    //payments:
    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)
                }
                UserDefaults.standard.set(true, forKey: K.CANUSESTRONG)
            case .failed, .purchasing, .deferred:
                break // do nothing
            default:
                break
            }
        }
    }}

Код в функции осуществления платежей (это расширение)

func makePayments() {
    SwiftyStoreKit.purchaseProduct(K.PRODUCT_ID, quantity: 1, atomically: true) { result in
        switch result {
        case .success(let purchase):
            print("Purchase Success: \(purchase.productId)")
            self.alert(message: "_purchase_success".localized, willReturn: false)
            UserDefaults.standard.set(true, forKey: K.CANUSESTRONG)
        case .error(let error):
            print("result is !!!!!!!!!!!!!!!\(error)")
            switch error.code {
            case .unknown: self.alert(message: "_purchase_unknown".localized, willReturn: false)
            case .clientInvalid:
                self.alert(message: "_purchase_not_allowed".localized, willReturn: false)
            case .paymentCancelled: break
            case .paymentInvalid:
                self.alert(message: "_purchase_invalid".localized, willReturn: false)
            case .paymentNotAllowed:
                self.alert(message: "_purchase_not_allowed_device".localized, willReturn: false)
            default:
                self.alert(message: error.localizedDescription, willReturn: false)
            }
        }
    }
}

Может ли кто-нибудь помочь мне проверить, есть ли что-то, что мне нужно изменить для покупки в приложении? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...