Let's say I have a free app with 1000 users. What happens to them when I decide to switch the app to Garmin Pay?
Or from another point of view: what will be the experience of a user who downloaded the app while it was still free?
Let's say I have a free app with 1000 users. What happens to them when I decide to switch the app to Garmin Pay?
Or from another point of view: what will be the experience of a user who downloaded the app while it was still free?
I don't have any personal experience with this, but according to Garmin:
[https://developer.garmin.com/connect-iq/monetization/app-sales/#appsales]
If you are setting a price for an app that has already been approved, the app is temporarily removed from the store so it can be reviewed again. After the app is approved, users receive a message explaining that they must purchase the app before they can use it again.
My interpretation of the intent behind these words is that existing users can no longer use the app unless they buy it. (Ofc it's not really specified how Garmin would prevent users from using the app - it seems Garmin would have to forcibly uninstall/disable the app, which might make some users pretty unhappy.)
Someone else's interpretation of what would happen:
They won't force anyone to upgrade, but if you release a new version that now is gated with monetization Garmin said they would prompt users to update and then the user would have to purchase if they want the new version.
While this seems a lot more sensible, I don't think it really matches what Garmin said.
I would love to know what actually happens. Maybe renschler has some insight on this?
I uploaded a new version of my app that was gated by monetization, afaik everyone who has the prior free version has been allowed to keep using it (my stats sill show a majority of users on version 0.04 - the last version before monetization).
This was in August '24, the flow was messy. Both my father and brother in law tried to update the app and for whatever reason it wouldn't let them; it was buggy. Not sure if that's fixed now.
OK, then it's not me being crazy, it's as usual, Garmin bugs all over.
I am a user of a datafield developed by someone else. Now there's a new version. I see the app is in the update queue, or when I open the app description then there's an Update button, however when I click on it, the button disappears for a second, and then it appears again. This is the 1st Garmin bug. There's nothing that hints about payment. Everything* looks the same as before. However in the What's new section I saw something about price, so I started to look around. So it turns out that Garmin doesn't tell us in any way that it's now a pay app (Maybe 2nd bug). The only way I can see it when I search for the app, then in the search results I do see the $2.49.
Unfortunately I can no longer use the old version of the app, but I'm uncertain why is that. The user experience is this: Last time I used the DF was last summer, however I do upgrade to the latest version of my apps every couple of days, and there were updates to the DF during the year. Yesterday I tried to use it, but it crashed immediately after I started the activity. Later I wanted to report it, and then I saw there's a new version (the one I am not able to upgrade to).
According to the developer there are new new errors in ERA, which of course can be for various reasons, like: 1. it's not sent from my watch to Garmin (we all saw discussions about this possibility in the forum) or 2. it's display was delayed and by the time they uploaded the newer version ERA didn't show it yet, or 3. it's not at Garmin, but ERA doesn't show it because it's not from the current (latest) version.
It looks like the crash is another Garmin bug somehow maybe related to the change to pay app (this is what's most likely), and this is supposed to be some popup or some gentle way to tell the user about it but Garmin fails to do it on fr965 as they want to.
According to the developer there are new new errors in ERA,
The ERA is for issues within the app itself.
It's possible that the crashing is happening when loading the app before any ERA logging occurs.
The old version shouldn't be crashing (that should not have changed and it worked before).
Again: as I start the activity the DataField crashes. The reason they don't see the report IMHO is that there's a newer version already.
The version I have currently installed was updated from the version I last used 10 months ago to the last free (and buggy) version probably during last month.
You listed three possible reasons. Now, you think it could only be the third. Confusing.
==================
What I got...
If this is what is happening (it's not clear), then what might be crashing might not be in the app.
It doesn't make too much sense that code that worked recently (it looks like?) no longer works. Presumably, something's different (but not the code/file).
That is, it could be code related to loading the app before the actual app code is being executed.
TL;DR I agree with both of you (dpawlyk and flocsy) that the bug may be related to something in the app loading process (specifically something to do with the app being newly flagged as "requires payment") and I also think that CIQ_LOG.YML should be investigated, in case there's something which can be sent to Garmin. I'm surprised CIQ_LOG.YML hasn't even been mentioned, as there's a few possibilities here:
- there's nothing related to this crash in CIQ_LOG.YML (but then ofc we wouldn't expect an ERA report under any circumstances)
- CIQ_LOG.YML has a log for that kind of crash that occurs outside of a specific app (which only Garmin can decode, but in this case, why not send it to Garmin and let the app dev know about it?)
- CIQ_LOG.YML has a regular app-specific crash log with a stack trace but no symbols (in which case flocsy could just send the log to the dev himself - if the dev keeps source code or build artifacts from previous versions, they could decode the stack trace and figure out where the crash is occuring)
- CIQ_LOG.YML has a regular app-specific crash log with no stack trace
I might be missing some other possibilities, but whatever the case may be, it seems that CIQ_LOG.YML might be relevant here.
After all, what is an ERA report but an automatic way to send the relevant contents of CIQ_LOG.YML to app developers?
You listed three possible reasons. Now, you think it could only be the third. Confusing.
I agree this was not the clearest writing [*], but all the same, it's well known that ERA reports are *not* available for older versions of an app. Unless this has changed at some point, then I can conclude:
- even if the crash actually happens before the app runs, the lack of an ERA report is not evidence for this
- even if the crash is actually in the app, the lack of an ERA report would still be expected
[*] On the face of it, given that a new version of the app is available, it could only have ever been the 3rd reason, *except* we can imagine there was some tiny window of time where the app may have crashed but an update was not yet available. This is kind of unlikely though (given that flocsy said he discovered there was an update within a day or so after it crashed, given that it crashed "yesterday"). flocsy could confirm or deny this by checking whether the paid update actually happened yesterday. (I'm assuming it was some point earlier than that, though.)
Another thing to note is that flocsy said the app crashed when he used it yesterday, but the last time he had used it prior to that was last summer (and he's updated it a few times since then). So it's not like he uses the app every day without problems. It's possible (but maybe unlikely [**]) that whatever issue is causing the crash for flocsy has existed in the app for a long time, without his knowledge.
[**] Maybe unlikely because the longer the hypothetical bug has existed in the app, the more likely for it to be discovered and fixed by the app dev, unless it's a bug that freakishly only applies to a small subset of users.
What I got...
- You are running an old version where the file/code hasn't changed.
- It used to not crash.
- Now it does.
What I got:
> Last time I used the DF was last summer...Yesterday I tried to use it, but it crashed immediately after I started the activity
- flocsy ran the app last summer, and until "yesterday", did not run it again
> however I do upgrade to the latest version of my apps every couple of days, and there were updates to the DF during the year
- flocsy has updated the app more than once since last summer
> Yesterday I tried to use it, but it crashed immediately after I started the activity. Later I wanted to report it, and then I saw there's a new version (the one I am not able to upgrade to).
- "yesterday", the app crashed, which caused flocsy to open the app page in the CIQ store (in order to report the problem), at which point he discovered it's now a paid app (and he is unable to update to the latest version)
I don't see any evidence that the old version (currently installed on his watch) has ever worked for him (i.e. not crashed)
The old version shouldn't be crashing (that should not have changed and it worked before).
But again, looking closely at what he said, flocsy has no idea whether the old version worked before. The last time he used it prior to yesterday's crash was last summer, and he's been updating the app regularly without using it.
It also seems to me the theory that the crash is happening outside of the app could be potentially confirmed if flocsy looks at CIQ_LOG_YML on his watch. If the crash occurs, and the corresponding log has an entry that lacks a reference to the app, this might confirm the theory. Then again, if the log entry refers to the app, it doesn't necessarily refute the theory, as we could imagine that the crash log might still refer to the app even if the crash really occurred in some sort of app loading process.
I actually think that *both* of you have raised this possibility, in slightly different ways:
It looks like the crash is another Garmin bug somehow maybe related to the change to pay app (this is what's most likely), and this is supposed to be some popup or some gentle way to tell the user about it but Garmin fails to do it on fr965 as they want to.
That is, it could be code related to loading the app before the actual app code is being executed.
If Garmin has really flagged this app on the device as "requires upgrade to paid version" (or whatever), and the crash is related to Garmin's attempt to prevent the user from running the older, unpaid version, then you would think the crash is indeed happening outside of the app code. If this is the case, the only question is whether this code technically runs as part of the app "process" or not.
I think it sounds very plausible that it would be job of an app loader to determine whether the app is allowed to run.
Again, it seems that looking at CIQ_LOG_YML might help. Maybe it contains one of those non-app related crash logs (which are normally assumed to be associated with a serious firmware issue), and maybe sending this crash log to Garmin would help them diagnose the problem.
Even if Garmin fully intends to prevent users like flocsy from using an app that has been converted to a paid version, obviously it isn't a good user experience for it to simply crash like this. (The other stuff with the Connect IQ store app is pretty bad, too.)
Another way to potentially investigate this problem would be to release a free dummy app to the store (put something like "DO NOT DOWNLOAD" in title). Install this app, change the app to monetized, then see if the app starts to crash. I assume the other stuff with the CIQ store would also happen.
To be clear, I think the stuff with the CIQ store is clearly related to converting a free app to monetized, but it's not 100% clear whether the crash is related.
I agree this was not the clearest writing [*], but all the same, it's well known that ERA reports are *not* available for older versions of an app.
AFAIK, you only get ERA logs for current apps.
- even if the crash is actually in the app, the lack of an ERA report would still be expected
Yes.
- even if the crash actually happens before the app runs, the lack of an ERA report is not evidence for this
No, it's not evidence for it (didn't say it was). My point is that, since the old app file/code hasn't changed and didn't crash earlier (AFAIK), there some possibility that the crash did not happen in the app.
[*] On the face of it, given that a new version of the app is available, it could only have ever been the 3rd reason,
No, not necessarily. This is assuming crashes only happen within the app.
Another thing to note is that flocsy said the app crashed when he used it yesterday, but the last time he had used it prior to that was last summer (and he's updated it a few times since then).
As far as I understood, the same file/code did not start crashing until recently. That's some suggestion the app isn't itself crashing (because it hasn't changed).
It doesn't seem the mere presence of an update would have caused it to crash (we should have been seen lots of complaints about that).
The only seemingly relevant change was the change to being paid. I'm thinking that existing code is now being run that wasn't being run before related to that change. And that code is before the ERA logging starts.
Checked now: there's no CIQ_LOG, even though I used the datafield a couple of times during the last 2 days, and each and every time I only saw the IQ! icon.
I'l open a bug report