Error: Symbol Not Found Error when installing WF

I'm getting an IQ! error every time when I installing my watchface. Only once. The watchface can be selected and it works fine without this error.

When I uninstall WF and install it I'm getting IQ! again.

There is only one CIQ_LOG.BAK file in the folder with logs on Fenix 7X:

---
Error: Symbol Not Found Error
Details: 'Failed invoking <symbol>'
Time: 2022-06-06T12:21:44Z
Part-Number: 006-B3907-00
Firmware-Version: '8.35'
Language-Code: eng
ConnectIQ-Version: 4.1.3

How to find the error?

  • OK. thanx

    I'll try this

        function getInitialView() as Array<Views or InputDelegates>? {
    		if (System has :ServiceDelegate && Background has :registerForTemporalEvent) {
    			Background.registerForTemporalEvent(new Time.Duration(600));
    		}
           	return [new QuatroView()];
        }

    and this

    	function onTemporalEvent() as Void {
    		if (Properties.getValue("WeatherProvider") != 0) {
    			Background.exit({});
    			return;
    		}
    		var weatherUpdated = Storage.getValue("weatherUpdated");
    		if (weatherUpdated != null || weatherUpdated >= Time.now().value() - 3600) {
    			Background.exit({});
    			return;
    		}

  • Not sure why you need the "if" starting at line 6 in onTemporalEvent.  You can get the time stamp from the OWM data JSON Data.  "dt" is the unix time

  • Every time I receive data from the server I save a timestamp in weatherUpdated.

    	function onBackgroundData(data) {
    		// if (Properties.getValue("WeatherProvider") != 0) { return; }
    		if ((data != null) && data.hasKey("cod") && (data["cod"] == 200)) {
    			Storage.setValue("weatherUpdated", Time.now().value());
    ......

    If everything has been updated, I need to call the server next time only in an hour.
    Otherwise there will be too many requests for a free account

  • I use a free OWM account and have no issue with exceeding my limit for requests (free account)  By default I request data every 15 minutes.

    I think you are making things far more complex than needed.

  • When you do a makeRebRequest, if the responseCode isn't 200, you won't get data which means you don't need the check in onBackgroundData.  And if you return null in Background.exit(), onBackgroundData also won't be called.

    What I do, is in the event of an error, I return a Number indicating that error, or I return the JSON data.

    Then in onBackgroundData, I have

    if(data instanceof Number) {

    //got an error

    } else {

    //got data

    }

    If I get an error, I can then display a message with the specific error

  • I'm doing almost exactly as you wrote.

    	function onReceive(responseCode, data) as Void {
    		if (responseCode == 200) {
    			Background.exit(data);
    		} else {
    			Background.exit({"cod" => responseCode});
    		}
    	}

    but if the limit is exceeded, the OWM returns responseCode = 200, but cod = 429

    I encountered the problem of exceeding the limit in the Quattro watchface.
    first I set the default value of weather to OWM. and it turned out to be a mistake.
    after the correction, the limit was still exceeded due to more than 2k installations per day.

  • Have users get their own OWM key, as the free one will get exceeded if you only have a small number of users.  If it's popular, you'll get a bunch of complaints from users. 

    A key per user is what I do with any app that uses OWM.

  • Do you still experience the crash on installation? Because I had the same problem!

    Also, when I start the simulator, sometimes it says "app crashed", but the watchface is still running fine in the sim, but there are no logs written. Starting the simulator a second time works without issues. Do you have something similar? 

  • No. Although I like the solution better, it didn't help.
    The new version of the application has been tested. I updated it. There are no errors.
    But when I deleted it and put it back on, I saw IQ!
    The CIQ_LOG.YML file has appeared in the LOGS directory:

    ---
    Error: File Not Found Error
    Details: 'Failed invoking <symbol>'
    Time: 2022-06-06T19:56:31Z
    Part-Number: 006-B3907-00
    Firmware-Version: '8.35'
    Language-Code: eng
    ConnectIQ-Version: 4.1.3

    Now it contains up-to-date data, but they don't even have the name of the application that caused the error.

    And the error has changed

  • Yes. I also did this when I received a bunch of complaints from users and a blocked OWM account