1class UpdateConfigurationViewController: UIViewController {
2 @IBOutlet weak var updateLocationConfigBtn: UIButton!
3 @IBOutlet weak var updateNotificationConfigBtn: UIButton!
4 @IBOutlet weak var updateDataTrackingConfigBtn: UIButton!
5 @IBOutlet weak var configurationInfo: UILabel!
6
7 override func viewDidLoad() {
8 super.viewDidLoad()
9 let assetTracking = AssetTracking.shared
10
11 let locationConfig = LocationConfig(trackingMode: .ACTIVE)
12 locationConfig.distanceFilter = 5
13 assetTracking.setLocationConfig(config: locationConfig)
14
15 let notificationConfig = NotificationConfig()
16 notificationConfig.showLowBatteryNotification = true
17 assetTracking.setNotificationConfig(config: notificationConfig)
18
19 let dataTrackingConfig = DataTrackingConfig()
20 dataTrackingConfig.shouldClearLocalDataWhenCollision = false
21 assetTracking.setDataTrackingConfig(config: dataTrackingConfig)
22
23 assetTracking.initialize(apiKey: "YOUR_API_KEY")
24
25 createAsset()
26 initView()
27 }
28
29 override func viewWillAppear(_ animated: Bool) {
30 super.viewWillAppear(animated)
31 self.navigationController?.setNavigationBarHidden(false, animated: true)
32 }
33
34 override func viewWillDisappear(_ animated: Bool) {
35 super.viewWillDisappear(animated)
36 self.navigationController?.setNavigationBarHidden(true, animated: true)
37 }
38
39 func initView(){
40 updateLocationConfigBtn.addTarget(self, action: #selector(updateLocationConfig), for: .touchUpInside)
41 updateNotificationConfigBtn.addTarget(self, action: #selector(updateNotificationConfig), for: .touchUpInside)
42 updateDataTrackingConfigBtn.addTarget(self, action: #selector(updateDataTrackingConfig), for: .touchUpInside)
43 configurationInfo.text = ""
44 }
45
46 @objc func updateLocationConfig(){
47 let locationConfig = AssetTracking.shared.getLocationConfig()
48 locationConfig.distanceFilter = 10
49
50 AssetTracking.shared.updateLocationConfig(config: locationConfig)
51
52 let newLocationConfig = AssetTracking.shared.getLocationConfig()
53
54 configurationInfo.text = "The updated location config value is: " + String(newLocationConfig.distanceFilter)
55 }
56
57 @objc func updateNotificationConfig() {
58 let notificationConfig = AssetTracking.shared.getNotificationConfig()
59 notificationConfig.showLowBatteryNotification = true
60
61 AssetTracking.shared.updateNotificationConfig(config: notificationConfig)
62
63 let newNotificationConfig = AssetTracking.shared.getNotificationConfig()
64
65 configurationInfo.text = "The updated notificationConfig config value is: " + String(newNotificationConfig.showLowBatteryNotification)
66 }
67
68 @objc func updateDataTrackingConfig() {
69 let dataTrackingConfig = AssetTracking.shared.getDataTrackingConfig()
70 dataTrackingConfig.shouldClearLocalDataWhenCollision = true
71
72 AssetTracking.shared.updateDataTrackingConfig(config: dataTrackingConfig)
73
74 let newDataTrackingConfig = AssetTracking.shared.getDataTrackingConfig()
75
76 configurationInfo.text = "The updated dataTrackingConfig config value is: " + String(newDataTrackingConfig.shouldClearLocalDataWhenCollision)
77 }
78
79
80 func createAsset(){
81 let attributes = ["attribute 1": "test 1", "attribute 2": "test 2"]
82 let assetProfile: AssetProfile = AssetProfile.init(customId: UUID().uuidString.lowercased(), assetDescription: "testDescription", name: "testName", attributes: attributes)
83
84 AssetTracking.shared.createAsset(assetProfile: assetProfile) { assetCreationResponse in
85 let assetId = assetCreationResponse.data.id
86
87 let toastView = ToastView(message: "Create asset successfully with id: " + assetId)
88 toastView.show()
89
90 self.bindAssetAndStartTracking(assetId: assetId)
91 } errorHandler: { error in
92 let errorMessage = error.localizedDescription
93 let toastView = ToastView(message: "Create asset failed: " + errorMessage)
94 toastView.show()
95 }
96 }
97
98 func bindAssetAndStartTracking(assetId: String) {
99 AssetTracking.shared.bindAsset(assetId: assetId) { responseCode in
100 let toastView = ToastView(message: "Bind asset successfully with id: " + assetId)
101 toastView.show()
102 AssetTracking.shared.startTracking()
103 } errorHandler: { error in
104 let errorMessage = error.localizedDescription
105 let toastView = ToastView(message: "Bind asset failed: " + errorMessage)
106 toastView.show()
107 }
108 }
109
110}