Awesome Maps v3+

... this was supposed to be part of the existing discussion thread, but that got classed as Spam (I know, Garmin forums!) so I'll post here to complete my admin and change this to be part of the Awesome Maps thread if/when it gets restored in some days ...

Awesome Maps v3+

Update – addition of now 12 localised country maps, route following and elevation profile preview and extended glance support for grid references with over 10k downloads – thank you!  Comments are welcome here of course, but there is a new Reddit community for discussion as well.

For this more developer-focussed forum here are topics that have come up for me recently…

Multiple BLE Requests

Forum discussions point to the ability to have x3 requests (e.g. makeImageRequest) however IRL testing on Edge and (older) Venu devices just don’t show that.  Is the limitation actually in the BLE transfer whilst the requests are manages by the CIA app? Is it a feature of newer devices only?  I have an in-app switch to test and would love some interested parties to get in touch and help here.

Complications in Adding Complications

There seems still to be poor compiler support for complications with invalid errors/warnings such as below shown in VSC where the solution does include the requested permissions and does compile OK:

   The 'ComplicationPublisher' permission is invalid for app type 'widget'

   approachs50: Permission 'ComplicationPublisher' required for '$.Toybox.Complications.updateComplication'

These seem to be the same issues that were reported over 3 years ago:
Why Widgets can't publishing Complications? - Connect IQ App Development Discussion - Connect IQ - Garmin Forums

Furthermore, Edge devices (which do not support complications) are happy to have the code with :has protection, however older watches simply fail to build without refactoring the code into different files and using jungle approaches to exclude.

Support from PMC – the Prettier Monkey-C Optimiser

Whilst PMC was originally my route to optimisation to make my coordinate system algorithms fit in :glance space it has become a much greater helper with more understanding and direction from within the extension and from the developer. Thanks again Mark.

https://marketplace.visualstudio.com/items?itemName=markw65.prettier-extension-monkeyc

Garmin CIQ App Discoverability

This one is driving me nuts, especially after passing the 10k download target.

Obviously as developers we care about production and want tools and solutions to be of high quality and to be used (not just potential fiscal gain).  End-user usage is itself a reward for effort and shows filling a gap.  Not all end-users search and many use recommended or top-results as a guide to solutions and Awesome Maps is now on page, like, 5 of “Navigate Your World”.  There are page #1 apps that have Less Downloads and Less Reviews and Poorer Reviews average.  So what is the algorithm?  Even why am I below the 0*, 0 Reviews, 10+ downloads apps?

Some of Garmin’s own apps are up there too (based on a lot of downloads but last updated 3+ years ago, supporting no modern devices and getting very poor reviews) and they should perhaps look to Europe where Google’s dodgy app store / market dominance practices landed them a €890m fine:

https://www.bbc.co.uk/news/articles/cevmenngkzpo

  • BLE (makeWebRequest) - a big variable is Android vs iOS.  On Android, you can have at most 1 active request.  This isn't CIQ - it's the way Android works,  So in my apps, I never have more than 1 and do things like start the 2nd when the first completes.

    Complications - You only see this on pre-ciq4 devices. On CIQ4 and greater, there actually are no "widgets" - they get built as device apps.  Also, be careful with the XML file used with complications.  Processing that file while building on a device without complications results in a fatal error:
    ERROR: fenix5: C:\Users\James\workspace-prod\WuWid2\resources-comp\comps\comps.xml: Complications are not supported by device 'fenix5'.

    Discovery - Garmin has been tight lipped about how this ranks apps, probably to prevent folks from trying to "game the system".  I'm pretty sure that in addition to downloads/review/ranking, simple "views" come into play - meaning just a link from social media.. Otherwise only apps with 100k. 500k, etc  downloads with good reviews would dominate the list.

  • Thanks for the iOS / Android tip Jim (and the original Complications startup guide you authored is still going strong) -- I'd missed that nugget and explains my daily testing observations!

    I just dropped devices (sorry Fenix-6 series... I tried) prior to API 5.0 and have some :glance headroom now.

    I appreciate there is some secret-sauce in the ranking, but there are many examples of regional apps which must be useful to a developer (but probably shouldn't be set to a worldwide audience) and I am still listed below things like the "Prague Tram Timer" and the "SF Neighbourhood Finder" -- absolutely no disrespect to these apps or developers but 10+ vs 10k+ should have an impact and I know I'm getting 1000's of unique device requests per week from the logs.

  • Remember "views" with no downloads involved matter.

    Also, downloads are "unique", so if a user has multiple devices and installs the same app on each, the download count will only go up by 1.  In the same way if a user has your app installed and deletes the app and reinstall, download count doesn't increase.  Or if the user gets an update to the app, that don't increase the download count.

    Where are you seeing 1000'a of unique requests per week?  Are you using something like uniqueIdentifier which is constant for the same app for the same user?

  • Yes, the nature of on-demand mapping (excluding the fact I also have a small on-device cache limited by the Application.Storage - which is incidentally smaller on the new Fr70 than some older devices… which I know because I catch and report Storage exceptions so I am building a catalog of per-device Storage limits that I will share once I have enough data to make the results significant)… the nature of on-demand mapping means I handle a lot of server-side requests that I can ad-hoc count for UniqueIdentifier because the solution is also a Freemium solution so I use that UniqueIdentifier to track and manage free usage limits.