Troubleshooting Mist SDK Issues

1. SDK crash, error, or warning in Xcode while running SDK.

  1. Reason: Mobile App is running on the simulator.
  2. Warning: ignoring file /Users/username/project/mist-vble-ios-sdk/DemoApp/Mist-indoor-location-dr/Pods/MistSDKDR/Framework/MistSDK.framework/MistSDK, building for iOS Simulator-x86_64 but attempting to link with file built for iOS-arm64

Error:

Undefined symbol: _OBJC_CLASS_$_MSTPoint
Undefined symbol: _OBJC_CLASS_$_MSTCentralManager
Undefined symbol: _OBJC_CLASS_$_MSTOrgCredentialsManager

Fix: Run the App on iPhone or iPad device.

2. Unable to develop/test rest of the project on simulator due to Mist SDK(requires device to run SDK)

Fix: Use the following code sample to run the project without compiling the SDK on the simulator.
Mist SDK mainly functions on 2-3 callbacks. Hence, you can use the following swift code to run the project on the simulator.

#if targetEnvironment(simulator)                      
       // your simulator code                         
      class ViewController: UIViewController {       
      // disabled Mist code                           
       }                                               
#else                                                  
      // your real device code                       
      import MistSDK                                  
      class ViewController: UIViewController,MSTCentralManagerDelegate,MSTCentralManagerMapDataSource {
      ..                                              
      ..                                              
       }                                               

#endif

 

Reference Sample app:

 

3. The map doesn’t load.
Callback to get map is didUpdateDRMap (iOS) and onMapUpdated (android)
To troubleshoot, please check the following:

  1. Do you have a BLE-enabled Mist Access Point placed on the map correctly?
  2. Is the floor map scaled?
  3. Running the SDK on a device or simulator?
  4. Is Bluetooth permission enabled on the device?
  5. Is the Mobile SDK secret correct?
  6. Does WebSocket connection return true in the SDK? refer to the method below to see the WebSocket connected in iOS SDK.
    func mistManager(_ manager: MSTCentralManager!, didConnect isConnected: Bool) {
        print("didConnect callback response is: \(isConnected)")
    }
  7. Is the error handling callback implemented to re-enroll the org on Authfailure?

 

4. Bluedot is not accurate.

  1. Check the SDK version if it is the latest one.

  2. Check if they are using the correct callback.
    For iOS, it should be – didUpdateDRRelativeLocation
    – For Android, it should be – onDRRelativeLocationUpdated
  3. Location deployed as per the guide below:
  4. Collect RF recordings to see if the SDK receives enough RSSI.

 

5. Unable to receive zone or virtual beacon notifications.

  1. Check if the zone and vBeacon are set in the Mist Dashboard accurately.
  2. Check if the virtual beacons and zones are placed in the area that has good Mist AP BLE coverage.
  3. Virtual beacon should have a message(set from the Mist Web UI Portal):
  4. Zone should have a name(Good to have):
  5. Callback to get a notification is:
    1. For iOS, didReceiveNotificationMessage
    2. For Android, onNotificationReceived
  6. For troubleshooting, how do you check what SDK version and DR version?
    You can confirm the SDK and DR version using below in iOS:
MSTCentralManager.getSDKBundleVersion()  
MSTCentralManager.getMobileSDKVersion().

You can confirm the SDK and DR version using below in Android:

import com.mist.android.adapter.go.LocalCloud;  // header
String drVersion = "DR SDK Version: " + LocalCloud.getInstance().getDRVersion();  //  getMobileSDKVersion
String sdkVersion = "MIST SDK Version: " + getResources().getString(R.string.mist_sdk_version); //  getSDKBundleVersion