Has something changed in a recent CIQ regarding passing custom complications to watch faces?

The following code in my app

	var comp = {
		:value => value,
		:shortLabel => "TESLA",
		:longLabel => "TESLA-LINK",
		:units => "%",
	};
	try {
		Complications.updateComplication(0, comp);
	}
	catch (e) {
		/*DEBUG*/ logMessage("Error sending Complication!");
	}

Used to sent a custom complication to my watch face and received by this following watch face code snippet

    function onComplicationUpdated(complicationId) {
		var complication = Complications.getComplication(complicationId);
		var complicationType = complication.getType();
		var complicationShortLabel = complication.shortLabel;
		var complicationValue = complication.value;

		/*DEBUG*/ var complicationLongLabel = complication.longLabel; logMessage("Type: " + complicationType + " short label: " + complicationShortLabel + " long label: " + complicationLongLabel + " Value:" + complicationValue);

		if (gTeslaComplication == true && complicationType == Complications.COMPLICATION_TYPE_INVALID && complicationShortLabel != null && complicationShortLabel.equals("TESLA")) {
			$.doTeslaComplication(complicationValue);
		}

Debug code shows that the complications are being sent (ie, doesn't assert) but they're not received by the watch face. The watch face is receiving the built-in Complications, just not my custom one. It was working before I compiled with CIQ 7.x. I think it was 4.2.4 (yeah, old, I know).

  • Which device?  It's been working fine for me, and I'm using the 7.2.1 SDK for both the publisher and watch face  When do you publish?  I have a background service that runs, gets data, and publishes it, with a default of every 15 minutes.  Does the publisher need to be open for you?

  • On a Fenix 7S Pro running V17.28. The app is using CIQ 7.2.1 and the watch face is also using CIQ 7.2.1. The Monkey C compiler I'm using is 1.0.9 (later one has issue detecting changed file for some reason). I publish every 5 minutes when running as a background task and every 10 seconds as a foreground job. In both cases, I see the app pushing the complication but the watch face never receives it.

  • So you aren't seeing any value or you just aren't seeing updates?

    How are you publishing - public, protected, or private?

    With the faceit 2 watchfaces, you can see things published by a CIQ app but only if they are public or protected.  Private means only the developer of the publisher can see it

  • Not seeing any update (beside the built-in ones). Publishing as Public. In the code snippet above, I log this while the watch face is running:

    11:44:27 : Type: 2 short label: PAS long label: Pas Value:9102
    11:44:27 : Type: 23 short label: BODY long label: Body Battery Value:null
    11:44:27 : Type: 18 short label: FC long label: Fréquence cardiaque Value:null
    11:44:27 : Type: 21 short label: null long label: Temps de récupération Value:5148
    11:44:27 : Type: 8 short label: null long label: Météo actuelle Value:2
    11:44:27 : Type: 1 short label: BATTERIE long label: Batterie Value:81
    11:44:28 : Type: 2 short label: PAS long label: Pas Value:9102
    11:44:28 : Type: 23 short label: BODY long label: Body Battery Value:null
    11:44:28 : Type: 18 short label: FC long label: Fréquence cardiaque Value:null
    11:44:28 : Type: 21 short label: null long label: Temps de récupération Value:5148
    11:44:28 : Type: 8 short label: null long label: Météo actuelle Value:2
    11:44:28 : Type: 1 short label: BATTERIE long label: Batterie Value:81
    11:44:29 : Type: 2 short label: PAS long label: Pas Value:9102
    11:44:29 : Type: 23 short label: BODY long label: Body Battery Value:null
    11:44:29 : Type: 18 short label: FC long label: Fréquence cardiaque Value:null
    11:44:29 : Type: 21 short label: null long label: Temps de récupération Value:5148
    11:44:29 : Type: 8 short label: null long label: Météo actuelle Value:2
    11:44:29 : Type: 1 short label: BATTERIE long label: Batterie Value:81
    11:44:30 : Type: 2 short label: PAS long label: Pas Value:9102
    11:44:30 : Type: 23 short label: BODY long label: Body Battery Value:null
    11:44:30 : Type: 18 short label: FC long label: Fréquence cardiaque Value:null
    11:44:30 : Type: 21 short label: null long label: Temps de récupération Value:5148
    11:44:30 : Type: 8 short label: null long label: Météo actuelle Value:2
    11:44:30 : Type: 1 short label: BATTERIE long label: Batterie Value:81

    and none are for my published complication. If I filter out complication type other than 0, it logs nothing.

    This is what I log in the app when it sends complication through the background service. The value sent is a string.

    11:39:16 : BG-onReceiveVehicleData: 200
    11:39:16 : Sending Complication: 200|70|Complete|26|false|false|offline
    11:44:27 : BG-onReceiveVehicleData: 200
    11:44:27 : BG-Sending background complication
    11:44:27 : Sending Complication: 200|70|Complete|26|false|false|offline

    This is what the complications.xml includes

    <complications>
        <complication id="0" access="public"
                      longLabel="@Strings.longComplicationLabel"
                      shortLabel="@Strings.shortComplicationLabel"
                      icon="@Drawables.ComplicationIcon"
                      glancePreview="false">
            <faceIt defaultText="@Strings.AppName" />
        </complication>
    </complications>

    Thanks for your time.

  • With faceit in the CIQ Mobile app you are able to see what you publish.  Can you?

  • Never tried that. CIQ Mobile app? You mean on the phone?

  • Yes, on the bottom row.  You can create your own watch face, and include both native and CIQ complications.

    See https://forums.garmin.com/developer/connect-iq/f/discussion/352175/face-it-and-ciq-complications/1736859#1736859

  • Got it. I don't see my Complication in the lists of complications that it shows, just the default ones.

  • As part of the process, you get a watch face installed that can look for CIQ complications.  Did you see that?  Is your connect IQ Mobile app up to date?  The FW on your watch?

  • On my phone, it said wait as we update the face it app to add functionality or something like that when I selected 'Face it' on the bottom of the ConnectIQ app. It's at version 2.29.1 (Android) and my watch is running 17.28. I'm still at selecting Complications from the ConnectIQ app on my phone.