cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
blue_lotus
Helper III
Helper III

cached data, offline capabilities

Hi,

 

I have built an app to mostly work offline during the data, and then in the evening when I am connected, send the data to my Sharepoint list.

 

However i have noticed that when ii save the data in the cache, the problem is that if the app is closed and does not work in the background anymore, then the cache is emptied.

 

This makes working offline very dangerous and almost imppossible.

 

Has anyone come up with a solution to avoid this problem?

 

Thanks for your help

1 ACCEPTED SOLUTION

Accepted Solutions

I know this is an old post, but I just ran into this issue and I haven't found anybody who has provided a resolution yet.

 

This can be fixed on Android devices by navigating to your device's permissions and enabling "Storage" permissions to Power Apps. It seems that IOS automatically grants access, but it did not on my Android. Enabling this resolved the issue on my device.

View solution in original post

13 REPLIES 13
wyotim
Resident Rockstar
Resident Rockstar

Could you describe what you are doing to cache the data? Are you using the SaveData function to do this?

 

I have been doing offline PowerApps development for a bit now and have a decently successful method that I would be happy to share. If you wouldn't mind describing a bit of what you are doing I think we can get you where you want to be!

yes I am using the savedata function.

and then I used loaddata


that would be great if you could help me with that!

wyotim
Resident Rockstar
Resident Rockstar

What are you using for the SaveData and LoadData portions? Could you post some of your code as well as where that code is located (i.e. in the OnStart or OnVisible properties, in the OnSelect of a button, etc.)? That will help me to work with what you have. I could just ramble about what I do but that might not be so helpful to you. Smiley Happy 

 

ok, so I have a form in which I enter my data.

I test if I am online, if not, I Collect (offline records{,..})

then SaveData(offline_records,"offline_records_local_storage");
Navigate(screen_welcome,Transition.None))

then, on the onstart property of the screen_welcome, I have:
LoadData(offline_records,"offline_records_local_storage",false)

wyotim
Resident Rockstar
Resident Rockstar

And when you close and open the app nothing is loading into the offline_records collection, yes? 

 

Your method seems like it should be working. Is there a reason you are using the false variable in your LoadData function? This will give errors if you don't have anything in the "offline_records_local_storage" cache (like when a new user opens the app for the first time). Setting this to true will ignore if there is no such cache.

 

This may not be the issue, but I noticed in your Collect example you had offline records (no underscore) and in the SaveData you have offline_records (with an underscore). You might double check to make sure those names match. If you go to View -> Collections you can view the first 5 items of your collection as well as see what collections you have.

 

A good test could be to mimic being offline, maybe by just by having a temporary button that does the Collect/SaveData part of your code. Then check the View -> Collections area to make sure the record was collected properly. Then, with another temporary button, mimic closing and loading your data by using the Clear function on your collection and then LoadData to get it back. Checking View -> Collections after this should tell you if it is working.

 

So in code form:

 

// Offline mimic button, in the OnSelect property
Collect(offline_records, {...});
SaveData(offline_records, "offline_records_local_storage")

// OnStart mimic button, again in the OnSelect property
// Note: here the false in the LoadData will help to see if something is going wrong somewhere
Clear(offline_records);
LoadData(offline_records, "offline_records_local_storage", false)

Also, it should be noted that the SaveData and LoadData functions don't work in a web browser or in the web studio, so you will need to test this on a device running the PowerApps app (Win10, iOS, Android).

 

Maybe try this and let me know what result you get? Like I said, your method seems solid so there is probably some small issue like a name being off or something like that.

my method works but the app always has to be running in the background,

if power apps is completely closed then the cache is emptied and all my offline records are gone.

 

that's the problem

wyotim
Resident Rockstar
Resident Rockstar

Yes, that is the reason for the testing I described. The SaveData function takes data and makes a locally stored version that persists after the app closes. Collections don't persist and are lost when the app is closed. If your data is being lost when the app is closed, it means it is still in a collection and not being saved or that what has been saved is not being loaded. Both of these scenarios are easier to sort out when each step is examined along the way.

 

One other thing you can do is to put a temporary data table in your app that is tied to the offline_collection, which is easier than viewing the collection with the View -> Collections method and allows you to see more than 5 entries, which is nice. But at any rate, if you aren't checking to see what is happening with each step in the process you will be hard-pressed to find the cause of the issue you are experiencing. I would recommend you start there and see what you find. Best of luck to you with figuring this out!

Hi,

 

I created the buttons and I wrote the code, but I end up having the same problem.

 

It is working well. The data is collected and saved, it appears in the collection gallery.

 

BUT when I close Power Apps or if I turn off my phone and re-start it, then the data sitting in the cache is lost.

 

 

I realised that also get an error message on my phone that says:
"there was insufficient memoryto dave your data; please reduce the amouht of data you are attempting to save"

It is really weird because I am only trying to save 6 fields, which are 1 date, 2 words, 3 numbers.

i don't know this can be too much?

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (2,121)