Connecting to the IDTECH VP3300 Bluetooth Reader faster while using the iOS framework

Quest Mobile SDK's

The initBluetoothSearch initializer on the ClearentConnection object will perform a Bluetooth scan with the following:

  • Scan for devices for 10 seconds
  • Scan for devices with a Bluetooth friendly name starting with prefix IDTECH-VP3300

Because this is a Bluetooth scan it’s likely you will not get the final results (via the public delegate callback method called BluetoothDevices) until the scan times out at 10 seconds.


This latency can contribute to a poor user experience especially if you have to scan with every transaction. The advantage of using the 60ms Bluetooth advertising interval (which makes the Bluetooth reader “extremely chatty” in the Bluetooth spectrum) is negated.


To decrease latency, your application should be aware of which reader it is connecting to. The goal is to cache the reader info to use later. Once you connect, get the friendly name by calling the device_getBLEFriendlyName method on the Clearent_VP3300 object. The other option is to call the config_getSerialNumber method.


If you have the friendly name now you can use a different initializer on the ClearentConnection object called initBluetoothWithFriendlyName. The scanning logic likes it when a reader is known in advance and will stop scanning the moment it finds the device.


If for some reason the friendly name cannot be determined, you can identify the last 5 digits of the device serial number from the config_getSerialNumber. With this information you can use the initializer initBluetoothWithLast5 on the ClearentConnection object. The scan logic will take the known prefix of IDTECH-VP3300- and add the last 5 to the end. It will then stop scanning the moment it finds this friendly name.


If you decide to do this keep in mind you now have stored a piece of data that will probably need to be exposed to the user, or you will need to provide some other means of giving the user the option to “Forget Device” in case they end up with a second reader within range they would like to connect to.


Here are a couple of ideas that would take longer to implement but we’ve seen other apps do this.

  1. Educate your user with a picture or animation showing the desirable card orientation when inserting. You can also point out the importance of pressing the button on the reader. This can also be done with documentation but having it inline creates a pleasant experience with new technology.
  2.  Solve the out of box experience at the same time you solve the issue of your app not knowing what device it will connect to. If you have a “hamburger” icon where users are directed to for user /preferences, you can direct them to it and instruct them to perform a first time pairing. This immediately gets the hardest part of the new technology out of the way and allows for the user to focus on the technology set up instead of having to worry about it at payment time. This area will also serve as a place to go if they ever have trouble with their reader. They can go here and do things like “Forget the Device”, which can do things like clear out the cache of the reader info or force a Bluetooth disconnect (device_disconnectBLE on the Clearent_VP3300 object). Some of our integrators have simply asked the user to read the last 5 digits of the serial number on the box or bottom of the reader. There may be issues with numbers being too small and numbers cannot be read. To help, you can perform your Bluetooth scan to make it flexible and present a list of iDTech Bluetooth readers within range and let them select which one they want to use.