Widget <=> App

Hi guys,

as far as I have understood the main differences between Apps and Widgets are:

- Apps can access more APIs
- Apps can stay enabled all the time, so watch is not taking you back to watch face after 1 minute of inactivity
- Widgets can be added to the main carrousel

The main issue with Widgets seems to be the 1-minute-timeout. At least for those, that are handling a use case that requires the widget to stay open (in my case a stop watch). I have tried to compile my widget as an app and this worked without any problem. But it is not that nice to have 2 apps doing exactly the same thing :). So my questions are:

- is there a plan to remove the 1-minute-timeout from widgets? At least in a case where the widget started a timer that is still running? I know that this could be abused, but maybe Garmin finds a solution for this, like taking care of this in the app review.
- what about a mixed package that allows to use an app as WatchApp or WatchWidget? That way a user can decide how he wants to use it. This of course can only be done if no APIs are used that are restricted to one of the app types.
- is there currently any other way to publish a project as app and widget as simply compile it separately?

Thanks!

Bye

  • Widgets, by design have a timeout - they are meant to be for "quick views" of something. (the 1min isn't the same on all watches, BTW - the vivoactive started as 10 seconds, and some run as long as 2 minutes.). For something you want to run until you stop it, make it a watch-app and forget about trying to do it as a widget.

    You need to have the widget and watch-app as separate items in the app store, including having different manifest IDs (the manifest.xml is also where you define widget or watch-app.).
  • Widgets, by design have a timeout - they are meant to be for "quick views" of something. (the 1min isn't the same on all watches, BTW - the vivoactive started as 10 seconds, and some run as long as 2 minutes.). For something you want to run until you stop it, make it a watch-app and forget about trying to do it as a widget.

    You need to have the widget and watch-app as separate items in the app store, including having different manifest IDs (the manifest.xml is also where you define widget or watch-app.).


    Ok, thanks.

    What happens if I simply recompile the widget as app and put it on the store? In that case the manifest file would not change and the app IDs would be the same. Does that mean that if somebody installed the widget and the installs the app, that it would simply overwrite it? Or are there other errors to be expected?

    Thanks!

    Bye
  • Ok, thanks.

    What happens if I simply recompile the widget as app and put it on the store? In that case the manifest file would not change and the app IDs would be the same. Does that mean that if somebody installed the widget and the installs the app, that it would simply overwrite it? Or are there other errors to be expected?

    Thanks!

    Bye


    Last I checked, the store will reject the upload if the app changes from a widget to a watch-app. You need to remove the widget from the store if you want to use the same UUID in the manifest, and then, it's a different app and current users won't be switched from the widget to the app version.
  • Last I checked, the store will reject the upload if the app changes from a widget to a watch-app. You need to remove the widget from the store if you want to use the same UUID in the manifest, and then, it's a different app and current users won't be switched from the widget to the app version.


    Ok, thanks for pointing this out!

    In that case the only solution is to put the app next to the widget into the store. Not a nice solution though...

    Bye
  • If the store allowed the same app to change from a widget to a watch-app or back, I think that would actually confuse users, as suddenly they wouldn't get to your app in the same way.
  • If the store allowed the same app to change from a widget to a watch-app or back, I think that would actually confuse users, as suddenly they wouldn't get to your app in the same way.


    Yes, that is right. The best solution would be to create a universal app, that could also be used as widget, but not possible at the moment.

    Thanks!

    Bye
  • Hi all!

    Can someone tell me whether the situation with the widget’s operation has changed regarding the 1-minute timeout? I'm writing a small application based on checking heart rate, and as far as I understand, I should choose an application instead of a widget if I want the data to continue to be collected in the background?

  • A background services is a whole different thing.  Be it in a widget or app, it's got limits, like it can run at most every 5 minutes and for a max of 30 seconds each time.

    But a background service does work with a widget and not just a device app.  They also work with watch faces and data fields.

  • These limit parameters are good for me, the main thing is that it really works in the background.

    My task is to constantly have a connection with the heart rate or at least constantly update it in 

    function onUpdate()

    What would be the best choice in my case? App or Widget?

  • If you need "constant" your only option is a device-app that's always running in the foreground.