Я разработал плагин RevenueCat Flutter и некоторое время назад создал проблему на GitHub, чтобы отследить это (https://github.com/RevenueCat/purchases-flutter/issues/3). Извините, есть некоторые возможности для улучшения нашей обработки ошибок Flutter.
Когда мы отправляем исключения платформы, мы передаем код ошибки в виде строки:
result.error(error.getCode().ordinal() + "", error.getMessage(), userInfoMap);
Жаль, что мы не можем просто передать int в качестве первого параметра, и мы должны передатьСтрока, я думаю, мы могли бы передать это в userInfoMap
. Но сейчас, поскольку мы еще не предоставляем перечисление с кодами ошибок, вам придется сделать что-то подобное в вашем коде:
enum PurchasesErrorCode {
UnknownError,
PurchaseCancelledError,
StoreProblemError,
PurchaseNotAllowedError,
PurchaseInvalidError,
ProductNotAvailableForPurchaseError,
ProductAlreadyPurchasedError,
ReceiptAlreadyInUseError,
InvalidReceiptError,
MissingReceiptFileError,
NetworkError,
InvalidCredentialsError,
UnexpectedBackendResponseError,
ReceiptInUseByOtherSubscriberError,
InvalidAppUserIdError,
OperationAlreadyInProgressError,
UnknownBackendError,
InsufficientPermissionsError
}
try {
} on PlatformException catch (e) {
PurchasesErrorCode errorCode = PurchasesErrorCode.values[int.parse(e.code)];
switch (errorCode) {
case PurchasesErrorCode.UnknownError:
case PurchasesErrorCode.PurchaseCancelledError:
case PurchasesErrorCode.StoreProblemError:
// Add rest of cases
}
}
Когда вы делаете e.details
, вы также получаете доступ к readableErrorCode
, содержащему название кода ошибки, и underlyingErrorMessage
, который, как мы надеемся, может помочь вам отладить любую проблему.
Я надеюсь, чтопомогает