Why some watch models cannot download my watch face?

Some users of Forerunner 945 & Fenix 3 do not see my watch face in the Connect IQ store so they cannot download it.

I've double checked that both models are marked as supported in the manifest file, and the watch face runs fine for both models in the simulator. The watch face is also running fine on my own Forerunner 935 & 965 so I don't believe it is an API compatibility problem (at least not on 945). Any idea how to solve the problem?

  • Are you using the Garmin payment stuff?  There are some countries where you can't use that to pay. Last I looked, South Africa was one of those countries.

    Here  you can see a list of supported countries:

    https://developer.garmin.com/connect-iq/monetization/app-sales/

  • No I'm not using the Garmin payment. Also, my Fenix 3 and Forerunner 965 are both under the same account but the 965 can see and download the watch face without any problem so I don't believe it is related to the user country.

  • If you specify any languages in your manifest file, any part numbers which do not support at least one of those languages will be excluded from the build. Note that English (eng) is *not* implicitly included in this case.

    Both fr945 and fenix3 have multiple part numbers:

    - one part number is for Asia-Pacific regions (APAC), and has language/font support for English / eng and various Asian languages (e.g. Simplified Chinese / zhs, Traditional Chinese  / zht, Japanese / jpn). This part number is typically what customers in the Asia-Pacific have.

    - one part number is worldwide (WW), and has language/font support for English (eng) and various non-Asian languages (e.g. French / fre, Italian / ita). This part number is what customers in the rest of the world (not Asia-Pacific) have.

    In general, older Garmin models have separate WW and APAC part numbers, as described above, because of limited storage space for fonts / languages. 

    Most newer Garmin models have a single part number for both WW and APAC.

    What all of that means is that if you specify only Asian languages in manifest.xml, and you do not include English, this will prevent users of older devices outside of Asia from installing your app.


    For more information, open ConnectIQ/Devices [*] and refer to compiler.json for the Garmin device you are interested in.

    e.g. ConnectIQ/Devices/fr945/compiler.json

    ConnectIQ/Devices/fenix3/compiler.json

    compiler.json contains a partNumbers array which has the language information I mentioned above. It's usually easy to tell when a device has separate WW/APAC part numbers [**]:

    - usually there are only two part numbers, or at least two part numbers

    - the first part number always supports English and non-Asian languages. It is usually also referenced by the worldWidePartNumber value in the same file

    - the second part number always supports English and Asian languages


    [*] ConnectIQ/ is the parent folder of the SDKs and device libraries installed on your development computer. To open it:

    - open VS Code

    - press CTRL-SHIFT-P / CMD-SHIFT-P for the command palette

    - select "Monkey C: Open Samples Folder" - this will open a folder like .../ConnectIQ/SDK/[current sdk]/Samples

    - Go up 3 parent folders till you reach ConnectIQ/

    - Open the ConnectIQ/Devices folder


    [**] You can also explicitly look up the mapping from part number to "user-facing" model name and other information (which usually includes a hint as to whether the part number in question is only for APAC)

    - open https://apps.garmin.com/api/appsLibraryExternalServices/api/asw/deviceTypes (this is the api request used by the CIQ store website to display supported devices for an app in the Devices tab)

    - look up the part number of interest (from compiler.json)

    - For example, fr945/compiler.json lists 2 part numbers:

    006-B3113-00

    006-B3441-00

    - The deviceTypes response for these part numbers looks like this:

    From this we can guess:

    006-B3113-00 => Forerunner 945 (WW)

    006-B3441-00 => Forerunner 945 (APAC)

    This can be guessed by the fact that urlName for 006-B3441-00 is "forerunner945-asia" and urlName for 006-B3113-00 is just "forerunner945".

    Ofc this could've been guessed without looking at the deviceTypes response. But some CIQ devices, like fenix7x, actually refer to multiple human-facing models like Fenix 7X, Enduro 2, Tactix 7, and Quatix 7X. In cases like that, it's very useful to use the deviceTypes response to map part numbers to human-facing models.

    Note that urlName allows you to construct a URL to search the Connect IQ store for apps which are supported by that part number:

    e.g. https://apps.garmin.com/en-US/devices/forerunner945/apps 

    You can substitute any urlName in the deviceTypes response for forerunner945 above

  • Thanks a lot! My Fenix 3 can now download the watch face after selecting English in addition to Traditional Chinese in the manifest file