Tích hợp iOS
Yêu cầu
Yêu cầu iOS >= 9.0
Bước 1: Cấu hình file Info.plist
- CFBundleURLSchemes: là Mobile Code/clientId trên môi trường tương ứng được gửi kèm trong email khi đăng ký tích hợp.
- LSApplicationQueriesSchemes: Thêm scheme vnptsmartca(môi trường Production) và vnptsmartcademo(môi trường Demo).
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string></string>
<key>CFBundleURLSchemes</key>
<array>
<string>Mobile_Code hoặc VNPTSmartCAPartner_clientId</string>
// Ví dụ VNPTSmartCAPartner-48b7d184-bbf4-4fa2-a661-3a223dcb716a hoặc VNPTSmartCAPartner_4b1a-3a223dcb716a.apps.smartcaapi.com
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>vnptsmartca</string>
<string>vnptsmartcademo</string>
</array>
Bước 2: Import SDK trong file AppDelegate.swift
import VNPTSmartCAiOSSDK
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
VNPTSmartCATransaction.receiveBackLink(url: url, sourceApp: sourceApplication!)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
VNPTSmartCATransaction.receiveBackLink(url: url, sourceApp: "")
return true
}
Lưu ý
Đối với phiên bản iOS >= 13.0, cần import SDK trong file SceneDelegate.swift.
import VNPTSmartCAiOSSDK
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
VNPTSmartCATransaction.receiveBackLink(url: URLContexts.first!.url, sourceApp: "")
}
Bước 3: Cập nhật giao diện và truyền tham số để mở ứng dụng VNPTSmartCA
- Trước khi mở ứng dụng VNPTSmartCA, cần chọn môi trường với hàm: VNPTSmartCATransaction.setEnvironment là DEMO hoặc PRODUCTION.
import VNPTSmartCAiOSSDK
override func viewDidLoad() {
//STEP 1: addObserver Notification
NotificationCenter.default.removeObserver(self,name: NSNotification.Name(rawValue: "<VNPTSmartCA>NotificationCenterReceived"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.NotificationCenterTokenReceived), name:NSNotification.Name(rawValue: "<VNPTSmartCA>NotificationCenterReceived"), object: nil)
//STEP 2: INIT TRANSACTION BASIC INFO AS CLIENT ID AND TRAN ID
let tranInfo: NSMutableDictionary = NSMutableDictionary()
tranInfo["clientId"] = "partnerSchemeId" // Mobile_Code hoặc VNPTSmartCAPartner_clientId khớp với giá trị trong CFBundleURLSchemes.
tranInfo["tranId"] = "tranId" // Id của giao dịch chờ ký số
VNPTSmartCATransaction.setEnvironment(_environment: VNPTSmartCATransaction.ENVIRONMENT.DEMO)
VNPTSmartCATransaction.createTransactionInformation(info: tranInfo)
//STEP 3: OPEN VNPTSMARTCA
VNPTSmartCATransaction.handleOpen()
}
Lưu ý
tranId là mã giao dịch do hệ thống VNPT SmartCA sinh ra và trả về cho đối tác. Ví dụ trandId: "48b7d184-bbf4-4fa2-a661-3a223dcb716a"
Bước 4: Nhận dữ liệu trả về từ ứng dụng VNPTSmartCA
// You can listen return event from VNPTSmartCA app in here
@objc func NotificationCenterTokenReceived(notify: NSNotification) {
let response: NSMutableDictionary = notify.object! as! NSMutableDictionary
let _statusStr = "\(response["status"] as! String)"
let _message = response["message"]
if (_statusStr == "0") {
print("Status code: \(_statusStr)")
print("Message:", _message as! String)
} else {
}
}