Tích hợp iOS
Yêu cầu
Yêu cầu iOS >= 12.0
Bước 1: Tải SDK và cấu hình Project
Tải phiên bản SDK mới nhất từ link: https://github.com/VNPT-SmartCA/ios_vnptsmartca_sdk hoặc copy thư mục SdkSmartCA trong example này
Kéo thả toàn bộ file .xcframework và .framework vào trong project. Đi tới Targets Project -> General -> Frameworks, Libraries, and Embedded Content
Ngoại trừ 2 thư viện FlutterPluginRegistrant.xcframework và permission_handler_apple.xcframework cấu hình Do not Embed, tất cả các thư viện còn lại cấu hình Embed & Sign
Nếu project chưa cấu hình quyền sử dụng camera(NSCameraUsageDescription) hãy bổ sung cấu hình quyền sử dụng camera trong Info.plist
Bước 2: Khởi tạo SDK tại nơi bắt đầu kết nối
- Code tại ViewController
// import thư viện
import SmartCASDK
//Khai báo biến
var vnptSmartCASDK: VNPTSmartCASDK?
// Khởi tạo SDK
override func viewDidLoad() {
super.viewDidLoad()
self.vnptSmartCASDK = VNPTSmartCASDK(
viewController: self,
partnerId: "CLIENT_ID",
environment: VNPTSmartCASDK.ENVIRONMENT.DEMO,
lang: VNPTSmartCASDK.LANG.VI,
isFlutterApp: false)
//isFlutterApp: true nếu app của bạn là Flutter, false nếu app của bạn là native
//...
//Code của project
}
Bước 3: Sử dụng các hàm chính
- Quản lý tài khoản: Đăng ký tài khoản, Quản lý chứng thư, Lịch sử giao dịch, Tài khoản,...
- Lấy thông tin xác thực người dùng (accessToken & credentiald)
- Xác nhận/Hủy giao dịch ký số
- Hủy kết nối SDK
📦 Hàm quản lý tài khoản
- Đối tác tạo 1 menu liên kết chức năng riêng trên app của mình để người dùng sử dụng các chức năng của SDK như: Đăng ký tài khoản, Quản lý chứng thư, Lịch sử giao dịch, Tài khoản,...
@objc func getMainInfo(){
self.vnptSmartCASDK?.getMainInfo(callback: { result in
if result.status == SmartCAResultCode.SUCCESS_CODE {
// Xử lý khi thành công
} else {
// Xử lý khi có lỗi
print("Lỗi giao dịch: \(result.status) - \(result.statusDesc) - \(result.data)");
}
})
}
📦 Lấy thông tin xác thực người dùng (accessToken & credentiald)
- SDK sẽ thực hiện kiểm tra trạng thái tài khoản và chứng thư của khách hàng như: đã kích hoạt hay chưa, chứng thư hợp lệ hay không, tự động làm mới token khi hết hạn,.... Thành công SDK sẽ trả về accessToken và credentialId của người dùng
@objc func getAuthentication() {
// SDK tự động xử lý các trường hợp về token: Hết hạn, chưa kích hoạt...
self.vnptSmartCASDK?.getAuthentication(callback: { result in
if result.status == SmartCAResultCode.SUCCESS_CODE {
// SDK trả lại token, credential của khách hàng
let data = result.data
// Đối tác tạo transaction cho khách hàng để lấy transId, sau đó gọi getWaitingTransaction
} else {
// Xử lý khi có lỗi
print("Lỗi giao dịch: \(result.status) - \(result.statusDesc) - \(result.data)");
}
});
}
📦 Hàm xác nhận giao dịch
- Sau khi lấy được accessToken và credentialId của người dùng từ getAuthentication, từ phía Backend của Đối tác tạo giao dịch ký số cho khách hàng, lấy tranId sau đó gọi hàm xác nhận ký số.
@objc func getWaitingTransaction() {
self.tranId = "xxxx"; // tạo giao dịch từ backend, lấy tranId từ hệ thống VNPT SmartCA trả về
self.vnptSmartCASDK?.getWaitingTransaction(tranId: self.tranId, callback: { result in
if result.status == SmartCAResultCode.SUCCESS_CODE {
print("Giao dịch thành công: \(result.status) - \(result.statusDesc) - \(result.data)");
} else {
print("Lỗi giao dịch: \(result.status) - \(result.statusDesc) - \(result.data)");
}
});
}
📦 Hàm SignOut
- Đăng xuất tài khoản đang đăng nhập SDK.
@objc func signOut(){
self.vnptSmartCASDK?.signOut(callback: { result in
if result.status == SmartCAResultCode.SUCCESS_CODE {
// Xử lý khi thành công
} else {
// Xử lý khi có lỗi
}
})
}
📦 Hàm hủy kết nối với SDK
override func viewDidDisappear(_ animated: Bool) {
self.vnptSmartCASDK?.destroySDK();
}