Nhảy tới nội dung

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 {

}
}