Skip to content

Tổng quan Mobile SDK ​

SmartOTP SDK lưu giữ khóa bí mật của client trên thiết bị, bảo vệ nó bằng PIN của người dùng, và tạo mã TOTP ở chế độ offline. SDK có bản cho Android và iOS. SDK cũng bọc các lệnh gọi API mà ứng dụng của bạn cần — kích hoạt, hủy kích hoạt, trạng thái, đồng bộ thời gian, giao dịch mới nhất.

Nền tảng ​

Thông tinMô tả
AndroidKotlin. Entry point SdkSoft. Phiên bản hiện tại 0.4.0.
iOSSwift. Framework CakeOTP.xcframework.

SDK làm gì cho bạn ​

Thông tinMô tả
Lưu giữ khóa bí mậtLưu khóa bí mật của client từ Kích hoạt trong bộ nhớ an toàn cục bộ, mã hóa bằng PIN của người dùng.
Tạo mãTạo OTP cơ bản và OTP nâng cao ngay trên thiết bị, không cần gọi mạng.
Bọc APITự gọi kích hoạt, hủy kích hoạt, lấy trạng thái, đồng bộ thời gian và lấy giao dịch mới nhất giúp bạn.
Theo dõi độ lệchSo sánh đồng hồ thiết bị với server và điều chỉnh.

Backend của bạn vẫn phụ trách Đăng ký, Tạo giao dịch và Xác minh OTP — SDK không bao giờ tự xác minh mã mà nó tạo ra.

PIN ​

Mọi thứ SDK lưu trữ đều được khóa bằng một PIN mà người dùng chọn khi kích hoạt.

Thông tinMô tả
Đặt PINstoredSecureSmartOTP(pin) sau khi kích hoạt thành công.
Kiểm tra PINisValidPin(pin) trước khi tạo bất kỳ mã nào.
Đổi PINchangePin(oldPin, newPin). PIN mới không được trùng với hai PIN trước đó.

WARNING

Android quy định PIN là 4 chữ số; iOS chấp nhận 4 hoặc 6. Nếu một ứng dụng cần tương tác với ứng dụng còn lại — cùng một người dùng, hai thiết bị — hãy thống nhất một độ dài duy nhất từ đầu, nếu không PIN đặt trên iOS có thể không dùng được trên Android.

Tạo mã ​

text
isValidPin(pin)                      → false: hiển thị lỗi, yêu cầu nhập lại
  ↓ true
generateSmartOTP()                   → OTP cơ bản, không gắn ngữ cảnh giao dịch
generateAdvancedSotp(challengeKey)   → OTP nâng cao, gắn với một giao dịch cụ thể

challengeKey đến từ Tạo giao dịch, được push đến thiết bị qua Firebase hoặc được backend của bạn truyền xuống.

Hàm hỗ trợ thiết bị và phiên ​

Cả hai nền tảng đều expose cùng các accessor chỉ đọc sau:

Thông tinMô tả
isSmartOtpRegisteredThiết bị này đã đăng ký SmartOTP với bất kỳ người dùng nào chưa.
getCurrentUserId · getCurrentUsernameNgười dùng đã đăng ký trên thiết bị này.
getRegistrationId · getSerialIdCác định danh được lưu khi kích hoạt.
getTimeTimestamp của server.
getPeriodChu kỳ TOTP tính bằng giây.
getRemainingValidityTimeSố giây còn lại của mã hiện tại.

Các giá trị trạng thái ​

SDK báo cáo hai trạng thái mà endpoint Lấy trạng thái (Back-end) không có.

TrườngKiểuMô tả
NOT_REGISTEREDstringThiết bị này chưa đăng ký SmartOTP với bất kỳ người dùng nào.
NOT_CURRENT_USERstringuserId được hỏi không phải người dùng mà thiết bị này đã đăng ký.
NON_ACTIVATEDstringĐã đăng ký nhưng chưa kích hoạt trên thiết bị này, hoặc đã kích hoạt trên một thiết bị khác.
ACTIVATEDstringSmartOTP đang hoạt động cho người dùng này trên thiết bị này.
TEMPORARY_BLOCKEDstringSmartOTP của người dùng này trên thiết bị này đang bị chặn.

INFO

NOT_REGISTERED và NOT_CURRENT_USER là kết luận cục bộ trên thiết bị mà SDK đưa ra trước hoặc thay vì gọi server. Hãy xử lý cả năm giá trị, không chỉ ba giá trị có trong tài liệu API.

Mã lỗi của SDK ​

Ngoài mã lỗi của API, SDK còn tự phát sinh thêm ba mã riêng.

TrườngKiểuMô tả
-1intThông tin không hợp lệ — invalid information.
-2intGiải mã secret token thất bại. Chỉ Android.
190302intOTP không chính xác — incorrect OTP. Được đồng bộ thời gian phát sinh khi mở khóa bằng useOtp.

Ghi đè Base URL ​

Mọi lệnh gọi API của SDK đều nhận một overrideBaseUrl để trỏ đến một môi trường khác mà không cần khởi tạo lại.

WARNING

Trên iOS, truyền null hoặc chuỗi rỗng cho overrideBaseUrl không quay về host đã cấu hình — lệnh gọi sẽ thất bại với Unknown host name. Hãy bỏ hẳn tham số này thay vì truyền một giá trị rỗng.

Bước tiếp theo ​

Developers