Watch face with settings does not show settings.

I have programmed a watch face with settings options for my Garmin Instinct Solar 2. It works, but I cannot find any way to access the settings. I also tried an example project. When I select the watch face, I only see the option "Apply." I downloaded a project from the internet that is supposed to work perfectly according to forum posts. But even with this project, I only see the option "Apply." When I use a pre-installed watch face, I can also see the "Settings" option under "Apply." I must be making a mistake somewhere. How can I make my own watch face customizable? I program in the Monkey C language and use the Code development tool in version 1.97.2.
I tried 2 ways to download watch face to garmin watch, both worked, but without settings.
- connecting the Garmin watch to a computer and inserting the compiled program with the .prg extension into the Garmin watch's file system,
- putting it to Connect IQ and installing it to the watch.

  • Try this one from the store.

    https://apps.garmin.com/apps/c051f37a-8fad-4907-b124-0112fe010c91

    You can customize it.  With a WF visible, long press the middle left button, and you see "watch face".  Press start, move to that watch face, press start, and you see customize and apply in the lower part of the screen

  • I have programmed a watch face with settings

    Do you mean you specified <settings> and <properties> in XML files? As in: https://developer.garmin.com/connect-iq/core-topics/properties-and-app-settings/

    In that case:

    - you must upload the app to the Connect IQ store (as you already have)

    - to access settings, you have to use the Connect IQ phone app or Garmin Express on PC/Mac


    If you want settings to be available on the watch itself, that is a completely different concept called "on-device settings". With on-device settings, you have to implement the settings UI and logic yourself (including code for persisting/reading settings), and return its top-level view in AppBase.getSettingsView():

    [https://developer.garmin.com/connect-iq/core-topics/properties-and-app-settings/#ondevicewatchfaceanddatafieldsettings] (scroll to the bottom of the page)


    Also, for Fenix 8 and newer watches, CIQ watchfaces can use the native watch face editor. In this case, you wouldn't have to implement the settings UI yourself, just declare XML which tells the UI what settings are available, and implement code which interfaces with the native editor.

    [https://developer.garmin.com/connect-iq/core-topics/editing-watch-faces-on-device/]

  • Thank you. The watch face is working as expected. However, I found something interesting. Your watch face allows me to configure it directly on the watch (by long-pressing the menu button). The watch face I tested does not show any settings on the watch, but I found an option in the Connect IQ app to configure it. I hadn't looked for the configuration option there until now, but it turns out it works.

    For comparison, your watch face does not allow me to configure it using the Connect IQ app. It seems to me that there is a difference between settings and configuration.

    Summary:

    • My watch face only allows configuration through the Connect IQ app.
    • Your watch face allows configuration directly on the watch by long-pressing the menu button.

    I hope I understand this correctly now.

    I am looking for a solution that allows me to configure the watch face directly on the watch, just like yours does.

    Without your response, I wouldn't have realized that there are probably two different types of configuration. I also wouldn’t have known that I actually need the other type. I really appreciate your answer!

  • There's on device settings as well as app-setting where you configure using the mobile app or Garmin Express.

    In this thread, is one that does both, but for different things.  On-device allows turning on/off a leading zero, while app-settings, the colors.

    https://forums.garmin.com/developer/connect-iq/f/discussion/349473/simple-example-wf-that-shows-a-bunch-of-things

  • It seems to me that there is a difference between settings and configuration.

    It's not really anything to do with a difference between those two words, it's just that there's different kinds of CIQ settings:

    - settings defined in <settings> resource XML, accessible from the Connect IQ app (and Garmin Express). Available for all versions of CIQ and all app types

    - custom settings UI in device app or widget. Since you have complete control over the UI for these app types, and they can accept full user input, nothing prevents you from building your own settings UI, in any version of CIQ. e.g. you can open your own settings menu when the user holds the UP button.

    - on-device settings (watchfaces and data fields): Available for CIQ 3.0 and later. Here you provide your own settings UI via a view you return from getSettingsView() in your app class (which extends AppBase). The user triggers your settings via a system menu: for watchfaces, hold UP and select Customize; for data fields, hold UP and select Connect IQ Fields > [your field name]

    - Fenix 8 and newer: native watch face editor

    I am looking for a solution that allows me to configure the watch face directly on the watch, just like yours does.

    As I said in my previous reply (not sure if you were able to see it), the solution is on-device settings: you have to implement the settings UI and logic in your own view, which you need to return in AppBase.getSettingsView(). You are also responsible for persisting settings data yourself.

    You can see an example of on-device settings in the SDK's Analog sample. Build it for Fenix 7, and select Settings > Trigger App Settings from the simulator.

    For Fenix 8 and newer watches, you can use the new native watch face editor, where you define settings in xml:

    [https://developer.garmin.com/connect-iq/core-topics/editing-watch-faces-on-device/]

  • Thank you very much for your explanation. It really helped me understand the issue. Yes, I saw your previous reply; I was just slow to respond. Thanks again!

  • Does the “hold UP” for on-device settings work in the simulator?  I keep trying your teach-all face (thanks again!) but simply keep activating the complications. I dropped to SDK 6.4.2 and am running it for Venu 2.  Help me Obi-Wan :D

    For some reason…after playing with the Edit Persistent Storage stuff, the Trigger App Settings under settings showed as selectable.

  • Does the “hold UP” for on-device settings work in the simulator?

    No. In the simulator menu, select Settings > Trigger App Settings (as you mentioned).

    On a real device, holding UP at the watchface or an activity data page brings up a system menu which is not emulated in the simulator, which is apparently why the simulator has a different way of triggering on-device settings.