Choosing the right application type for my new app

Hi,

Hope this is the right forum channel. I'm working on a new project and would like to understand the best approach in choosing the app types for it.

My app has, lets say, two steps.

  • STEP 1. SETTING UP THE ACTIVITY

- First runner CREATEs a team, and the app gives the user a team id (ex.12345)

- Other runners JOIN the team typing that 12345 as team Id.

(ok, users linked)

  • STEP 2. RUNNING THE ACTIVITY.

I want the runner to choose the activity of his choice in his device, so I'm thinking on creating a 'Data Field' that will show this simple information. (say this is a data field with 5 labels)

----------------------------

- Runner a (-2:30)

- Runner b (-1:20)

YOU

- Runner c (+2:45)

- Runner d (+4:00)

----------------------------

That is the time/distance that other runners have compared with your position. 

Your first question may be "how are you going to calculate this"??

Yes, every x seconds all runners will send a POST request to a BackEnd with his position.  That same BackEnd will make all the magic and return the 5 closest runners of that team. Easy to explain, but not that easy to implement. But that is a backend problem, out of the scope of this topic.

I would like to ask you.

a. What kind of app do you suggest for the team setup. I'ts an app or a DataField can add some settings to the Activity that is currently running?

b. Can I share information between that first app and the DataField app?

c. Can I make a single bundle with both apps in it?

Thank you so much in advance.

  • It is a nice idea, when running in some big events. Imagine running the Boston Marathon and keep track on your friends or even on Kipchoge while running :)

    Garmin kind of offers such a feature called Garmin Connect App LiveTrack Feature

    There they tell you, that one big requirement is that your watch is paired to a phone that has access to the web.

    The reason for this is, that nearly all watches are not directly connected to the web, making web requested are channeled via bluetooth to the phone which does it.

    Here are my 2cents to your questions:

    a) Doing such a team setup within a DataField is, as far as I know, not really possible. Hence an app would be the way to go.

    b) The only way to share informations is via the quite new feature of Complications. But there you only can share information from apps <-> watchfaces. DataFields do not have access to the Complication API. Not sure if this will change in the future. Short answer. You cannot share informations directly. Using a paired phone and some web backend would be one way to share informations.

    c) No, you would need to publish two seperate apps in the store. One DataField and one TeamSetup App.

    Here are some more thoughts:

    If you really want to implement it, I would do it the following way:

    I would code a companion app for the phone which implements everything. Team Setup, handling the Data, keeping Track of GPS position etc. So people without a Garmin device could use all features. Displaying the data to a user while he is running is hard. Hence I would use some audio alerts after every km like the run apps do.

    Having all the features implemented in the app, I would make a DataField to retrieve the data from the Phone App.

    DataFields cannot communicate directly using the Communication API. But they can use the Background API, which then can use the Communication API. When I think about it, the next problem is that you can only trigger a Background process every 5 minutes. Hence the data on the DataField can only be updated every 5 minutes. If that is a problem, instead of creating a DataField, you would need to create an own "run app" that shows the data and records the activity.

  • Ok, what I'd probably do is make the "registration" part invisible on the Garmin.  What I might do is have that part web-based with a browser, or use uniqueIdentifier if the runner is unknown.  Having it web based might be best as that way it's easier to have something like a "friendly name" for the runner and could be consistent if the runner changes watches between races, etc.  With web based, the user could get a "runner number" which they then set with app settings.

    When it comes to device app or data field, that depends on a few things.  A device app is the most flexible, but you also have to do everything yourself, be it auto lap, auto pause, or even display the basic data on the watch (speed/pace/distance/time).You can't use native data fields in a CIQ device app.

    With a DF, you only need to worry about it's own data, but you got other things, like possible memory issues, and if you are sending and getting data with a server, you can only do that in a background service, which can run at most every 5 minutes.

    In either case, the user's phone must be available to do the comm.

  • Thank you so much for your ideas.

     

    Yes, kind of a LiveTrack by proxying web requests via the phone. That’s the idea. The project’s (long term) idea would be to have a backend layer that is device agnostic.

     

    The Front End would be any sport watch (that allows app development), iOS app or Android.  I want this to also be used for tracking team mates in a Enduro race of desert (with 4g coverage) Trip. I’m not only thinking on runners.

     

    Reading your answer, I’m pretty convinced that Field Data is not the way to go. I will start making a POC with a Watch App. If Garmin could grant access to the Communications API in the Data Fields, that would be a very good news, but I guess Garmin native activities are very optimized to be able make the battery last as long as possible. Making API requests is not cheap (from a performance POV).

     

    In point “b” you talk about creating complications and share info between them and the app. I will also make some R&D on that.

     

    Now, I see that you talk about a companion App for the phone.  That is something new to me. Do you mean I can create some sort of plugin for the admin iOS App and share info with a DataField?. Because that would be sure the solution I’m looking for. Updating that info each 5 minutes would be enough by now.

     

    If I really want people to use my app, I have to let them use their preferred activity app and offer them a DataField that they can add there.

     

    Thank you again!

  • Yes, I will try to make an App (or Phone App) to setup the team, runners, etcc. I would try to avoid creating an alternative running activity app. I prefer the Background service approach with a 5 minutes update.

     

    Thank you.