ÿÿ Hướng dẫn xá»­ lý lá»—i iOS SDK | Tài liệu Adapty

Xử lý lỗi trong iOS SDK

Adapty SDK có lá»›p bá»c riêng cho tất cả các loại lá»—i, gá»i là AdaptyError. Vá» cÆ¡ bản, má»i lá»—i được SDK trả vá» Ä‘á»u là AdaptyError. Nó có hai thuá»™c tính hữu ích: originalError và adaptyErrorCode, được mô tả bên dưới.

originalError chứa lá»—i gốc trong trưá»ng hợp bạn cần làm việc trá»±c tiếp vá»›i nó. Có thể là SKError, NSError hoặc Error thông thưá»ng trong Swift. Thuá»™c tính này là tùy chá»n vì má»™t số lá»—i có thể được SDK tạo ra trá»±c tiếp — ví dụ như dữ liệu không nhất quán hoặc thiếu dữ liệu — và sẽ không có lá»—i gốc mà lá»›p bá»c ban đầu được xây dá»±ng xung quanh.

adaptyErrorCode có thể được dùng để xử lý các vấn đỠphổ biến, như:

  • thông tin xác thá»±c không hợp lệ
  • lá»—i mạng
  • thanh toán bị há»§y
  • vấn đỠthanh toán
  • biên lai không hợp lệ
  • và nhiá»u hÆ¡n nữa

Việc kiểm tra lỗi theo mã cụ thể và phản hồi phù hợp khá đơn giản.

do {
    let info = try await Adapty.makePurchase(product: product)
} catch {
    if error.adaptyErrorCode == .paymentCancelled {
        // purchase was cancelled
        // you can offer discount to your user or remind them later
    }
}

Bật verbose logs trước khi debug. Hầu hết các AdaptyError Ä‘á»u bá»c má»™t lá»—i StoreKit, mạng, hoặc backend bên dưới. Khi bật verbose logs (Adapty.logLevel = .verbose — xem Logging), lá»—i bá»c đó sẽ được in ra console, thưá»ng cho biết nguyên nhân thá»±c sá»±. Thuá»™c tính originalError luôn được Ä‘iá»n bất kể mức log — verbose logs chỉ giúp hiển thị nó trong console.

Nếu các giải pháp này không khắc phục được vấn đỠcủa bạn, xem phần Các vấn đỠkhác để biết các bước cần thực hiện trước khi liên hệ hỗ trợ, giúp chúng tôi hỗ trợ bạn hiệu quả hơn.

Lá»—i StoreKit

LỗiMãGiải pháp
unknown0Mã lỗi cho biết đã xảy ra lỗi không xác định hoặc không mong đợi.
Thử lại hoặc xem phần Các vấn đỠkhác.
clientInvalid1Mã lỗi này cho biết client không được phép thực hiện hành động đã cố gắng.
paymentCancelled2

Mã lá»—i này cho biết ngưá»i dùng đã há»§y yêu cầu thanh toán.

Không cần thá»±c hiện hành động nào, nhưng vá» mặt logic kinh doanh, bạn có thể đỠxuất giảm giá cho ngưá»i dùng hoặc nhắc nhở há» sau.

paymentInvalid3Lỗi này cho biết một trong các tham số thanh toán không được App Store nhận dạng.
paymentNotAllowed4Mã lá»—i này cho biết ngưá»i dùng không được phép á»§y quyá»n thanh toán.
storeProductNotAvailable5Mã lỗi này cho biết sản phẩm được yêu cầu không có sẵn trong cửa hàng.
Hãy thử cài đặt lại ứng dụng.
cloudServicePermissionDenied6Mã lá»—i này cho biết ngưá»i dùng chưa cho phép truy cập thông tin dịch vụ Cloud.
cloudServiceNetworkConnectionFailed7Mã lỗi này cho biết thiết bị không thể kết nối mạng.
cloudServiceRevoked8Mã lá»—i này cho biết ngưá»i dùng đã thu hồi quyá»n sá»­ dụng dịch vụ cloud này.
privacyAcknowledgementRequired9Mã lá»—i này cho biết ngưá»i dùng chưa xác nhận chính sách quyá»n riêng tư cá»§a Apple.
unauthorizedRequestData10Mã lá»—i này cho biết ứng dụng Ä‘ang cố sá»­ dụng má»™t thuá»™c tính mà nó không có quyá»n truy cập cần thiết.
invalidOfferIdentifier11

identifier của ưu đãi không hợp lệ. Ví dụ: bạn chưa thiết lập ưu đãi với identifier đó trong App Store, hoặc bạn đã thu hồi ưu đãi.

Hãy đảm bảo bạn thiết lập các ưu đãi mong muốn trong AppStore Connect và truyá»n má»™t offer identifier hợp lệ.

invalidSignature12Mã lỗi này cho biết chữ ký trong payment discount không hợp lệ.
missingOfferParams13Mã lỗi này cho biết các tham số bị thiếu trong payment discount.
invalidOfferPrice14Mã lỗi này cho biết giá bạn đã chỉ định trong App Store Connect không còn hợp lệ. Các ưu đãi phải luôn thể hiện mức giá đã giảm.
noProductIDsFound1000

Lỗi này cho biết không có sản phẩm nào bạn yêu cầu trên paywall có thể mua trong App Store, dù chúng được liệt kê ở đó. Lỗi này đôi khi xuất hiện kèm cảnh báo InvalidProductIdentifiers. Nếu cảnh báo xuất hiện mà không có lỗi, hãy bỠqua.

Nếu gặp lỗi này, hãy làm theo các bước trong phần Fix for Code-1000 noProductIDsFound error.

productRequestFailed1002Không thể lấy danh sách sản phẩm khả dụng tại thá»i Ä‘iểm này.
cantMakePayments1003In-app purchase không được cho phép trên thiết bị này. Xem hướng dẫn khắc phục sự cố.
cantReadReceipt1005

Không có biên lai hợp lệ trên thiết bị. Äây có thể là vấn đỠkhi kiểm thá»­ sandbox.

Trong sandbox, bạn sẽ không có file biên lai hợp lệ cho đến khi thực sự thực hiện một giao dịch mua, vì vậy hãy đảm bảo thực hiện một lần trước khi truy cập. Khi kiểm thử sandbox, cũng đảm bảo bạn đã đăng nhập trên thiết bị bằng tài khoản Apple sandbox hợp lệ.

productPurchaseFailed1006Mua sản phẩm thất bại. Lá»—i này bá»c má»™t lá»—i StoreKit bên dưới — Ä‘á»c originalError (hoặc bật verbose logs để xem trong console) để biết nguyên nhân thá»±c sá»±. Lá»—i bá»c thưá»ng là má»™t trong các mã StoreKit 0–14 trong bảng trên — phổ biến nhất là paymentCancelled, paymentInvalid, paymentNotAllowed, hoặc invalidOfferPrice. Nếu không xác định được nguyên nhân cụ thể, hãy thá»­ tạo sandbox profile má»›i; nếu vẫn thất bại, liên hệ Apple support.
refreshReceiptFailed1010Thao tác làm mới biên lai thất bại.
fetchSubscriptionStatusFailed1020Không thể lấy trạng thái gói đăng ký từ App Store.
unknownTransactionId1030Mã giao dịch không xác định.
paymentPendingError1050Thanh toán đang ở trạng thái chỠxử lý.

Lỗi mạng

LỗiMãGiải pháp
notActivated2002Adapty SDK chưa được kích hoạt.
Thưá»ng gặp nhất khi màn hình splash hoặc má»™t hook UI sá»›m gá»i các phương thức Adapty trước khi Adapty.activate hoàn thành. Triệu chứng có thể không ổn định và không tái hiện trên simulator vì thá»i gian thá»±c thi trên thiết bị thật khác nhau. Hãy await completion handler hoặc async result cá»§a activate trước khi gá»i bất kỳ SDK call nào khác. Xem Thứ tá»± gá»i trong iOS SDK để biết đầy đủ trình tá»±.
badRequest2003Bad request.
Äảm bảo bạn đã hoàn thành tất cả các bước cần thiết để tích hợp vá»›i App Store.
serverError2004Lá»—i server.
Thá»­ lại sau má»™t thá»i gian. Nếu vẫn chưa giải quyết được, hãy liên hệ đội há»— trợ Adapty.
networkFailed2005Lá»—i này cho biết có vấn đỠvá»›i kết nối mạng trên thiết bị cá»§a ngưá»i dùng.
Hãy thử tắt VPN hoặc chuyển từ mạng di động sang WiFi hoặc ngược lại.
decodingFailed2006Lỗi này cho biết việc giải mã phản hồi thất bại.
Xem lại code của bạn và đảm bảo các tham số bạn gửi là hợp lệ. Ví dụ, lỗi này có thể cho biết bạn đang dùng API key không hợp lệ.
encodingFailed2009Lỗi này cho biết việc mã hóa yêu cầu thất bại.

Lá»—i chung

LỗiMãGiải pháp
analyticsDisabled3000Chúng tôi không thể xử lý các sự kiện analytics vì bạn đã tắt tính năng này.
wrongParam3001Lỗi này cho biết một số tham số của bạn không đúng.
Nếu bạn đang dùng Adapty paywall builder và không thể hiển thị paywall vì lỗi này, hãy bật Show on device trong paywall builder.
Nguyên nhân khác có thể là phiên bản file fallback cục bộ không khớp với phiên bản SDK. Tải file mới trong dashboard.
activateOnceError3005ÿÿKhông thể gá»i phương thức .activate nhiá»u hÆ¡n má»™t lần.
profileWasChanged3006Hồ sÆ¡ ngưá»i dùng đã thay đổi trong quá trình thá»±c hiện thao tác.
Äiá»u này xảy ra khi má»™t phương thức được gá»i trong khi Adapty.identify vẫn Ä‘ang chạy — lệnh gá»i Ä‘ang thá»±c thi kết thúc trên má»™t hồ sÆ¡ sắp bị thay thế, và SDK từ chối nó. Luôn await identify (hoặc dùng completion handler cá»§a nó) trước bất kỳ lệnh gá»i nào liên quan đến hành động ngưá»i dùng. Xem Thứ tá»± gá»i trong iOS SDK.
unsupportedData3007Lỗi này cho biết định dạng dữ liệu không được SDK hỗ trợ.
unidentifiedUserLogout3020Không thể gá»i phương thức logout cho ngưá»i dùng chưa được xác định.
fetchTimeoutError3101Lá»—i này cho biết thao tác fetch đã hết thá»i gian chá».
operationInterrupted9000Thao tác này đã bị hệ thống ngắt.

Các vấn đỠkhác

Nếu bạn vẫn chưa tìm được giải pháp, các bước tiếp theo có thể là:

  • Nâng cấp SDK lên phiên bản má»›i nhất: Chúng tôi luôn khuyến nghị nâng cấp lên các phiên bản SDK má»›i nhất vì chúng ổn định hÆ¡n và bao gồm các bản sá»­a lá»—i đã biết.
  • Liên hệ đội há»— trợ hoặc nhá» giúp đỡ từ các lập trình viên khác trong diá»…n đàn há»— trợ.
  • Liên hệ đội há»— trợ qua support@adapty.io hoặc qua chat: Nếu bạn chưa sẵn sàng nâng cấp SDK hoặc việc nâng cấp không giúp ích, hãy liên hệ đội há»— trợ cá»§a chúng tôi. Lưu ý rằng vấn đỠcá»§a bạn sẽ được giải quyết nhanh hÆ¡n nếu bạn bật verbose logging và chia sẻ logs vá»›i đội ngÅ©. Bạn cÅ©ng có thể đính kèm các Ä‘oạn code liên quan.
ÿÿÿÿ