BLE & vivoactive 3

I seem to get a crash whenever I try and use any Bluetooth (BLE) calls in the simulator for a vivoactive 3 (but works for vivoactive 3 music). Also have a user getting crashes on a real vivoactive 3 device. The manifest allows me to build for 3.1.x with BLE for the vivoactive 3, but I'm now suspecting this combination should not actually be allowed. It wasn't listed in the original announcement here: forums.garmin.com/.../connect-iq-3-1-connects-you-to-the-world

So is this a problem in what the manifest allows or should it actually work for the vivoactive 3?

  • Thanks, I'll assume it's a bug in the manifest system then, and log a bug report Slight smile

  • Not a bug.  The compatible devices isn't checked against either the permissions or what specific API's you use.

    That's up to the developer.

  • Consider this simple case, where you use "floors" in a watch face.  You have the va3 and Approach S60 as targets (they are very similar devices).  The iq builds fine and you put it in the store.  When installed on a va3, it runs fine, but crashes on a S60 - the reason being the S60 doesn't have a baro altimiter, and because of that doesn't have floors.

    Building the iq shouldn't flag the S60 because it sees "floors", as that's a condition that's easily handled in the code with the use of "has".

    That;'s why it's important to check all targets in the sim, as the sim will throw an error if you try to access floors with the S60 as a target.

    in the case of "floors", that's something a watch face can easily adjust for.  Just don't display them, so nothing should be caught when building an iq as it will work on the S60 with the proper check..  The same could be said for BLE, where the app can just display a message if BLE isn't available on a specific device.  This would also be something that could be done with native maps - the app can be smart enough to use them or not, but that's not known when building an iq.

  • I see what you mean with BLE - someone could make an app which doesn't rely on bluetooth, but when it is available then it gets used.

    And yes I've already been caught out by the "floors" case on the 245! I think that is poor documentation actually - as the documentation states that floorsClimbed is supported for all devices post 2.1 (except VA3 & S60 as you mention). And in the floors case it says that the value can be accessed but will be null for other devices if it isn't available.

    But for BLE the trouble is I made a data field which only does something if bluetooth is available. So if I only want to list Bluetooth compatible devices for my app, then I need to go and test for myself every possible device in the simulator, in order to see if bluetooth is there. I guess it would be nice if this was mentioned in the documentation again (like floors on the 245). Or if there was a list of bluetooth compatible devices in the documentation that would be even nicer!

  • This is something that can easily be seen in the sim by just trying different targets you plan to use, and is really no different than many other things in CIQ.  It may have come as a surprise if you're new to things like data fields, devices apps, etc, but doing things differently with the manifest would cause big problems to a whole bunch of things, as BLE is just one case.

    Just try the target in the sim before you publish for that target.  It's not an issue.

  • Just updating this thread for future info: tested other 3.1.x devices in the sim for BLE and only the 645 (as well as vivoactive 3) didn't support it. (The 645 music does though).

    This is the bug report which isn't a bug but anyway: forums.garmin.com/.../vivoactive-3-doesn-t-support-ble-but-manifest-file-allows-the-combination-to-be-selected

  • As far as actual devices that currently have CIQ 3.1, other's don't support BLE, such as the 935/f5/f5s/f5x

  • Ok thanks, I'll remember to check them when they become available Slight smile Currently they get disabled in the manifest for 3.1