Open Parfyonator opened 2 years ago
Here is an example app that shows the problem: https://github.com/Parfyonator/FlutterHealthTest
The only way to get new portion of data is to collapse the running application and bring it back again.
Additional note: I'm using Apple Watch 7 as a heart beat sensor.
Hey @Parfyonator
I've tested this but I'm unable recreate the issue. Using your example app i seem to get the sliding window correctly with new values I add concurrently. As I didn't have an Apple Watch available, I can't conclude if there is an issue with that, but for now I suggest you test with Health 4.0.0 and check if the issue persists.
Regards, Mads
Hello @MadsVSChristensen . I've updated Health package to version 4.0.0. Nothing have changed. I'll try to make a video to show what is happening.
Also I want to share an update: sometimes it gives a new potion of data but the time interval is not consistent (sometimes it is under a minute, sometimes it 2-5 minutes). Maybe that's because Health app on iPhone doesn't get updates from Apple Watch very often. On the other hand, it gives new data after collapsing the app and bringing it back again.
I also tried another package, but faced the same issue. I'm not sure if this task with real-time heart rate reading may be accomplished without a companion app on Apple Watch, so I ended up writing one in Swift that streams heartbeat data from apple watch to my flutter app.
Hey @Parfyonator
Thanks for the update. It does seem like the issue might be related to the time interval between updates from the Apple Watch to the Health app. When I tested it, I added data manually (on a button press) which worked as intended. This suggests the issues lies in the update interval.
I was unable to locate any information in the HealthKit documentation about the update interval, but did find an old post about it here. It seems to require starting a "Workout", which you might want to look into.
Hope this helps.
Regards, Mads
Hi @MadsVSChristensen
I've already seen that link on apple developer forum. I also found it while was researching the problem. Yes, I was unable to get any HBPM untill starting a workout session. But after starting it manually on my Apple Watch I had the exact behaviour I've described earlier. In the companion app I wrote for my Apple Watch I also had to start workout session in the background in order to get HBPM in real-time, though it works differently than a regular workout session that you start manually: you have to start/pause/stop from your companion app and manage all this controls yourself (this background workout is not available in the standard Apple application).
In the dart package I've mentioned earlier (health_kit_reporter
) there is a functionality to start workout session but I didn't manage to start it using it. It doesn't seem to work properly at the moment. But I still will try to make it work. I'm hoping to be able to start background workout session from my flutter app without corresponding companion app on the Apple Watch. If it works out I can share the progress (if you'd like, of course).
Best regards, Oleksandr
Hello @Parfyonator, I am dealing with the same issue. I have created an app using health package, the app fetches the heart rate for the first time when the app is opened but after fetching the heart rate from inside an interval function, I don't get the latest heart rate.
When I try to open the Apple Health app (in real physical phone and watch) then my app gets updated heart rate.
Have you found any solution to that?
Hi @imskm. My solution was to implement an Apple Watch companion app and stream heartbeat data to iphone via method channel. The downside is that it requires additional actions from user: he/she has to open this companion app and press "play" (to start a workout). But it gives realtime data (every few seconds).
If you are interested in how it can be done. Here is a repo with sample Apple Watch companion app which you can extend: https://github.com/theamorn/flutter-apple-watch
It will require some Swift coding but not that much. I've uploaded a repo to GitHub a while ago with a very messy implementation based on the mentioned repository. I'm using the health_kit_reported plugin there which actually is not needed. But you can use it as a reference https://github.com/Parfyonator/FlutterAppleWatchPulsemeter
Hope it helps
Remember to specify the plugin name in the title!
Device / Emulator and OS
Please complete the following information for each phone and/or emulator you're experiencing this bug on:
Describe the bug
The fresh and up-to-date data is returned only on the very first query. The subsequent queries return the subset of the very first query: as the time window moves forward the less and less data is left in the returned list.
To Reproduce
Eventually the list becomes empty.
Expected behavior
Get up-to-date data on every query (as it happens on the very first query).
Actual behavior
Subsequent queries eventually result in empty returned list.
Screenshots
If applicable, add screenshots to help explain your problem.
Flutter doctor
Additional information
Add any other info about the problem here.