In this page

Asset profile Operations

This example demonstrates:

  1. Creating an Asset: Learn how to generate a new asset within your application, enabling the introduction of new assets into your tracking system.

  2. Binding an Existing Asset ID to the Current Device: Discover the process of associating an existing asset ID with the device you're currently using, facilitating tracking and management of that asset.

  3. Updating the Current Asset Profile: Gain insights into how to modify the profile of an asset, ensuring that the asset's information remains accurate and up-to-date.

  4. Retrieving Asset Details for the Bound Asset ID: Learn how to access and retrieve detailed information about an asset that has been successfully bound to the current device, enabling comprehensive asset management.

For all code examples, refer to iOS Tracking Android Code Examples

AssetOperationViewController view source

1class AssetOperationViewController: UIViewController {
2    @IBOutlet weak var createNewAssetBtn: UIButton!
3    @IBOutlet weak var bindAssetBtn: UIButton!
4    @IBOutlet weak var updateAssetBtn: UIButton!
5    @IBOutlet weak var getAssetInfoBtn: UIButton!
6    @IBOutlet weak var assetInfo: UILabel!
7    
8    private var assetId = ""
9    private var assetName = "testName"
10    private var assetDescription = "testDescription"
11    private var assetAttributes = ["attribute 1": "test 1", "attribute 2": "test 2"]
12    
13    override func viewDidLoad() {
14        super.viewDidLoad()
15        AssetTracking.shared.initialize(apiKey: "YOUR_API_KEY")
16        
17        initView()
18    }
19    
20    override func viewWillAppear(_ animated: Bool) {
21        super.viewWillAppear(animated)
22        self.navigationController?.setNavigationBarHidden(false, animated: true)
23    }
24    
25    override func viewWillDisappear(_ animated: Bool) {
26        super.viewWillDisappear(animated)
27        self.navigationController?.setNavigationBarHidden(true, animated: true)
28    }
29    
30    func initView(){
31        createNewAssetBtn.addTarget(self, action: #selector(createAsset), for: .touchUpInside)
32        bindAssetBtn.addTarget(self, action: #selector(bindAsset), for: .touchUpInside)
33        updateAssetBtn.addTarget(self, action: #selector(updateAsset), for: .touchUpInside)
34        getAssetInfoBtn.addTarget(self, action: #selector(getAssetInfo), for: .touchUpInside)
35        assetInfo.text = ""
36    }
37    
38    @objc func createAsset(){
39        let assetProfile: AssetProfile = AssetProfile.init(customId: UUID().uuidString.lowercased(), assetDescription: assetDescription, name: assetName, attributes: assetAttributes)
40        
41        AssetTracking.shared.createAsset(assetProfile: assetProfile) { assetCreationResponse in
42            let assetId = assetCreationResponse.data.id
43            self.assetId = assetId
44            
45            let toastView = ToastView(message: "Create asset successfully with id: " + self.assetId)
46            toastView.show()
47            
48            do {
49                let encoder = JSONEncoder()
50                let jsonData = try encoder.encode(assetProfile)
51                if let jsonString = String(data: jsonData, encoding: .utf8) {
52                    self.assetInfo.text = jsonString
53                }
54            } catch {
55                print("Error encoding JSON: \(error)")
56            }
57            
58        } errorHandler: { error in
59            let errorMessage = error.localizedDescription
60            let toastView = ToastView(message: "Create asset failed: " + errorMessage)
61            toastView.show()
62        }
63    }
64    
65    @objc func bindAsset(){
66        AssetTracking.shared.bindAsset(assetId: self.assetId) { responseCode in
67            let toastView = ToastView(message: "Bind asset successfully with id: " + self.assetId)
68            toastView.show()
69        } errorHandler: { error in
70            let errorMessage = error.localizedDescription
71            let toastView = ToastView(message: "Bind asset failed: " + errorMessage)
72            toastView.show()
73        }
74    }
75    
76    @objc func updateAsset() {
77        assetName = "newName"
78        assetDescription = "newDescription"
79        
80        let assetProfile: AssetProfile = AssetProfile.init(customId: assetId, assetDescription: assetDescription, name: assetName, attributes: assetAttributes)
81        
82        AssetTracking.shared.updateAsset(assetProfile: assetProfile) {responseCode in
83            let toastView = ToastView(message: "update asset profile successfully with id: " + self.assetId)
84            toastView.show()
85            
86            do {
87                let encoder = JSONEncoder()
88                let jsonData = try encoder.encode(assetProfile)
89                if let jsonString = String(data: jsonData, encoding: .utf8) {
90                    self.assetInfo.text = jsonString
91                }
92            } catch {
93                print("Error encoding JSON: \(error)")
94            }
95            
96        } errorHandler: {
97            error in
98            let errorMessage = error.localizedDescription
99            let toastView = ToastView(message: "Update asset profile failed: " + errorMessage)
100            toastView.show()
101        }
102    }
103    
104    @objc func getAssetInfo(){
105        AssetTracking.shared.getAssetDetail(){getAssetResponse in
106            let data: GetAssetResponseData = getAssetResponse.data
107            do {
108                let encoder = JSONEncoder()
109                let jsonData = try encoder.encode(data)
110                if let jsonString = String(data: jsonData, encoding: .utf8) {
111                    self.assetInfo.text = jsonString
112                }
113            } catch {
114                print("Error encoding JSON: \(error)")
115            }
116        } errorHandler: { error in
117            let errorMessage = error.localizedDescription
118            let toastView = ToastView(message: "Get asset profile failed: " + errorMessage)
119            toastView.show()
120        }
121    }
122}

Upon executing the code example provided above, your app's appearance will resemble the following snippet:

Code Highlights

The above code snippet is a class inherited from the UIViewController class, which is the base class for all view controllers in iOS.

  1. The class has four outlet properties: createNewAssetBtn, bindAssetBtn, updateAssetBtn, and getAssetInfoBtn. These properties are linked to the corresponding UI elements in the view controller's storyboard.

  2. The class has four private variables: assetId, assetName, assetDescription, and assetAttributes. These variables store the asset's ID, name, description, and attributes.

  3. The viewDidLoad() method is called when the view controller is first loaded. In this method, the class initializes the AssetTracking shared instance and calls the initView() method to initialize the view controller's user interface.

  4. The viewWillAppear() and viewWillDisappear() methods are called when the view controller is about to appear or disappear, respectively. In these methods, the class hides or shows the navigation bar, depending on the view controller's visibility.

  5. The initView() method is called to initialize the view controller's user interface. In this method, the class adds target-action listeners to the four buttons to perform the corresponding operations when the buttons are tapped.

  6. The createAsset() method creates a new asset with the specified attributes. The method calls the AssetTracking.shared.createAsset() method to make the API request. The method also handles the success and failure cases of the API request.

  7. The bindAsset() method binds the asset to the current view controller. The method calls the AssetTracking.shared.bindAsset() method to make the API request. The method also handles the success and failure cases of the API request.

  8. The updateAsset() method updates the asset's profile with the specified name and description. The method calls the AssetTracking.shared.updateAsset() method to make the API request. The method also handles the success and failure cases of the API request.

  9. The getAssetInfo() method gets the asset's profile. The method calls the AssetTracking.shared.getAssetDetail() method to make the API request. The method also handles the success and failure cases of the API request.

Here is a more detailed explanation of some of the key concepts in the code:

  1. AssetTracking: This is a class that provides methods for making API requests to the Asset Tracking API.

  2. ToastView: This is a class that displays a short message on the screen.

DIDN'T FIND WHAT YOU LOOKING FOR?