App Settings - Feature Request: Allow external settings provider

I know this is a crazy request and will probably never happen, but there are currently many issues with the GC mobile app settings implementation, including:
1) Cosmetic issues (long settings titles cut off, newlines not rendered)
2) Too easy to accidentally discard changes by swiping right or hitting back
3) No real settings validation (numeric vs. non-numeric). Instead of displaying error message and forcing user to fix settings, instead, bad settings are silently changed to null. At worst, this causes app crashes; at best, the user doesn't know what settings are actually in effect now. Which is why some devs tell users to send settings twice in case the first time "didn't take".
4) Settings page just randomly exits for no reason, causing you to lose changes. (Actually, this happens when GC syncs with watch over bluetooth, but to most users it just looks random)
5) Very difficult to deal with large numbers of settings, because of 2), 3) and 4), and also because there are no sections and you can't selectively hide irrelevant settings


My preference to deal with most of these would be:
- Render newlines and don't cut off long settings titles
- Get rid of the back button and add Cancel/Save at the top of the page, so it's like a classic "dialog", just like iOS email account settings.
- Do NOT let the user swipe right to go back (thus accidentally losing changes)
- If there are errors (i.e. non-numeric value in numeric field), do NOT let the user save changes. Force them to either fix their settings or press Cancel to discard changes. Alternatively, implement a control (e.g. masked input) that prevents user from entering bad values (e.g. non-numeric value in numeric field)
- The Cancel button could have a confirm prompt, although this might be a bit annoying
- Stop randomly exiting the settings page

However, I'm pragmatic enough to realize that maybe none of these things will ever happen.

So here's my crazy alternative, which will also never happen:

Allow devs to add a "settings provider" URL to one or more (probably hidden) properties on the settings page.
e.g.
"my.app.settings/

The user might see a button that looks like "More Settings..." which would open a web app in their browser that could populate settings based on the passed in property string(s). Since I believe all the GC platforms support 1024 chars for string settings, these could actually be quite comprehensive.

When the user is done editing settings in the web app, they could press a button in the web app which could launch a Garmin Connect App URI that would automatically sync the changed settings strings back to the CIQ app (possibly with a confirmation prompt).

Advantages:
- Save a ton of memory in the app by not having to include settings strings and complex settings dictionary
(I wish apps didn't have to waste memory by having settings strings they won't use in the resource table, but I feel like this is never going to change.)
- Allows for a richer settings UX, if the developer so chooses. Complex apps can implement simplified settings to avoid overwhelming users

Disadvantages:
- External dependency that's not under Garmin's control
- Internet connection necessary (then again, currently GC is the same)
- Potential to alienate/confuse users
- When external app goes away, app is useless

I'm pragmatic enough to see a bunch of logistical, technical, and political reasons this will probably never even be considered, but I figure it couldn't hurt to ask.

(I also wanted one last chance to bring up some of the UX issues in the GC settings.)
  • I don't see this happening, Connect IQ is a tight environment and if it would be implemented as you suggest there's no way to protect end-users from malicious websites when the end-user wants to change the settings.

    You could say the same about the other url's on the app page (source code url, companion url, ...) etc, but I think editing the settings acts on another level as it is something nearly every user wil do and it would also have to be launched from within the Garmin Connect Mobile app so it is acting on a different (much more frequent) level.

    I think the Garmin Connect Mobile app is also something which the end-user entrusts and the end-user wouldn't expect any intrusions from editing settings.
  • peterdedecker agreed on all points.

    One alternative would be to allow devs some limited level of scripting/layout using Javascript, CSS and HTML, but I also don't see this happening.

    Everything really needs to be built into the settings.xml and I can understand why none of that stuff may be changing any time soon; it will probably also never allow near the amount of customization/flexibility that I'm looking for here.

    Which is why I'm working on a version of one of my apps that just moves all the settings to an external web site anyway, to save app memory and to simplify settings in a way that isn't possible with GC. I guess I'll see how the (small) userbase reacts. I guess I just wish there was a seamless way to transfer settings, but oh well.