Sorry, this app is not compatible with your...

Hello,

There is a lot of people asking why do they get this message, even when it is a compatible device, and was selected as a build target. What can it be? firmware version?

Thanks in advance for your tips and knowledge!!

  • Hi mate, 

    You could ask them to unpair and pair again their device with Garmin IQ app.

    It Sometimes happens That device fw is not up to date on Garmin IQ data. 

  • And yes, they need to have the latest fw on their devices 

  • Thanks a lot for your answer, unfortunately, it did not work. There must be something ese.

    Any clue?

  • Have you set a minimum FW version in the manifest?  If so, what is it?

    Are you running into a case where users with APAC devices see this but now ROW/World Wide users? (APAC devices often lag ROW devices)

  • Welll, I set minimun SDK, wich is 3.2.x

    Yes, the users sometimes say it is APAC version. What is the difference? How can I make it availbale?

    Thanks a lot!!

  • The APAC version typically lags behind the WW version when it comes to firmware updates. This means that your code needs to check (using a has check) for features that you are trying to use that may not be available on an APAC device.

  • All of my projects have a min SDK of 1.2.x.  Setting a min SDK only does part of what you need, and leads to issues like this.  You can eliminate CIQ 1 and CIQ 2 devices by just not including them as targets, as well as targets that don't support something that's required for your app (say BLE)

    If you look at the current WW devices with 3.2, you got other things you want to check ("has" is my method).  For example, the venu sq and fr245 doesn't have a baro altimeter, so things like getTemperatureHistory, getPressureHistory and floors aren't available.  The venu and venu SQ don't support onPartialUpdate(), but do requireBurnInProtection for always on.

    What I do is that I do all my has checks in initialize, as it's not going to change, and then set a class variable, and check that later on (say in onUpdate()), and check that boolean later on - checking a boolean is cheaper than doing a has.

    so in my class, I have

    var hasWeather;

    then in initialize()

    hasWeather=(Toybox has :Weather);

    then in onUpdate()

    if(hasWeather) {

    ...

    }

    Same logic for things like getTemperatureHistory, floors, etc.

    With floors and getTemperatureHistore, you can also handle that with jungles, as a 245 won't suddenly get that function.  With "has", your app will start working for 3.2 things when the APAC version gets 3.2 with no change on your part.

  • The downside to that, though Jim, is memory. 

    Each added var on the class definition consumes memory. I know there’s a trade off between battery and processor, but where I am running tight on memory (especially if I support CIQ1, for example) setting a class var rather than inline checks where needed can make the difference between out-of-memory and running nicely as compiled class properties seem to consume a disproportionate amount of available memory.

    Irritating, yes. Unsatisfying, also yes. Still a fact, unfortunately. 

  • Then you use jungles.

    But there too, you have you use has to handle APAC and WW devices if the CIQ version isn't the same.

    A few booleans can buy you a small bit runtime efficiency, so it's a trade off.  Same when it comes to settings.

    if you do

    var showSeconds=Application.Properties.getValue("showsec");

    only when needed - when the app starts or on onSettingsChanged()

    vs doing this on onUpdate()

    if(Application.Properties.getValue("showsec")) {

    }

    it's more efficient.  Every little bit can help.

    instead, in onUpdate() you just do

    if(showSeconds) {

    }

  • Ok, thanks a lot for all the explanation and also sharing the approach that you take at code to cope with all this little differences between devices. Very interesting.

    And, if I got it right, in the end... the problem right now is that APAC devices still have not get 3.2.. is it?

    Thanks a lot!!