Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Private side-loaded apps stopped retrieving internet content from iphone companion

I have several personal, private apps that are side-loaded on my Versa3 that query from public apis.  These apps have stopped working in the last few weeks.  I have done a new Build and Install to the Versa3, and they worked briefly.  However, they only worked for a short time (no longer worked the next day).

Here is the part of the code that awaits the server response.

console.log(theUrl);
...

async function doRequest() {     //AWAITS ALL FETCH CALLS
  const [response12, response27] = await Promise.all([
    fetch(theUrl),
    fetch(theUrl27)
  ]);
  const data12 = await response12.json();
  const data27 = await response27.json();
  return [data12, data27];
}

However, according to the log in the Fitbit app on the iphone, the app terminates even before the console.log.

Have there been any changes in the SDK that would prevent my app from waiting for the fetch, or that  would make the code only work for a day?  These apps have worked smoothly for several years.  All of my other side-loaded apps that don't have a companion component are still working fine.

Thanks

Best Answer
0 Votes
8 REPLIES 8

I'm wondering whether the problem could be related to an update of the iPhone Fitbit app. Companion code runs within a context provided by the Fitbit app, and there have been past instances where bugs in the Fitbit app have broken companion code.

Is it feasible that your code stopped working at the time of such an update?

Google doesn't monitor this section of the forum, but you may be able to attract attention in the iPhone app section.

Peter McLennan
Gondwana Software
Best Answer

Hi @RustyKeyboard - it does sound a local issue and may be something simple like a syncing problem, related to the Fitbit App or even phone Bluetooth persistence or background state.

So it may be totally unrelated to your app code.

Did you logout of the Fitbit App and reboot both devices to see if it helps cure the problem?

Author | ch, passion for improvement.

Best Answer
0 Votes

Is that code snippet the very start of the file? If not, it would be interesting to put some console.log(...) above it, to see if it starts running at all and, if so, where it gets to.

If it doesn't start at all, you could try commenting out bits until it does. Obviously it won't work properly in that case, but it might help to isolate what code is causing the problem.

Peter McLennan
Gondwana Software
Best Answer
0 Votes

Thanks for the responses @Gondwana  and @Guy_ 

I had been delaying updating to ios26.  I usually wait for a while before updating ios versions.  I did finally update to ios26 but the same behavior occurred (apps receive internet data for a few hours only).

I tried adding console.log statements to the beginning of the index.js of the companion.  After the change, the apps worked for a few hours, but then stopped.  Nothing sent to the watch or the log.  I also stopped fitbit app, and restarted phone and versa3.

I noticed that my watch face was successfully receiving internet data from Openweathermap.org with no difficulty (been working for 2 years).  I realized that this app (watch face) had been installed via GAM (private app).  I uploaded one of my barely working apps to the GAM (exact same build file from side-loading attempts), and it seems to be working; ie doesn't stop communicating with the watch after a few hours.

I'll give it a few more days, then try using GAM for my other apps.  It is not ideal, as I find side-loading easier.  And since I don't make any apps public, GAM seems overkill.

However, I have seen the posts from you both and others about lack of support for GAM.  I suppose that you are writing public apps.  So not sure if problems will start occurring for private apps, as well.

Thanks, again.

 

Best Answer

I also will look into posting in iphone app section

Best Answer
0 Votes

I'd be surprised if GAM vs. side-loading was the issue. After installation, I think the images would be the same.

It almost sounds like a power-saving or memory-saving issue: the Fitbit app or OS is ceasing to process some code after a while. I hope not: that would be very hard to diagnose and even harder to get fixed.

Peter McLennan
Gondwana Software
Best Answer
0 Votes

@RustyKeyboard - I agree that the sideload vs GAM seems unlikely to be the issue, though anything is possible.

The issue is more likely environmental or Fitbit App related. If the companion gets unloaded or syncing stops it will cease to work properly regardless of loaded origin.

If the issue occurs on several apps where it was working before it is quite possible to be the Fitbit App version is the cause if you allow it to update and got a new version.

You can use the SimpleCheckUp app to verify if the watch is syncing and when it last synced but that starts a companion and may create a connection, if it can.

In general loading from a private link is actually better, because it can be done any time whereas sideloading requires developer mode and requires a minimum battery level as it is quite stressful on the watch.

Sideloading is useful for tracing operations with console messages though. It is possible to pop up some progress conditions on the watch face instead.

Private links should remain operational though it is true GAM approvals are not being done anymore, obviously no one is being assigned this role.

Having an unsupported service is not good at all, for the company, developer or the users.

 

Author | ch, passion for improvement.

Best Answer
0 Votes

@RustyKeyboard   You won't get any better answers in the iOS app forum.  That's not the forum's focus.

Laurie | Maryland
Sense 2, Luxe, Aria 2 | iOS | Mac OS

Take a look at the Fitbit help site for further assistance and information.

Best Answer
0 Votes