Data Persistence between Google Play updates - google-play

I want to keep some user preferences locally so not to needlessly call a server with that information. I want this data to persist between Google Play updates. It has been shown here that SharedPreferences doesn't not keep between updates. Someone in the comments of that question suggested using Android Jetpack's DataStore.
Does anyone know if DataStore values do keep between updates?
Thanks in advance

Related

Is there a way to access Google My Business Data in BigQuery?

We are working on a project where we want to access all the information from our numerous Google My Business locations. We would like to access that GMB information with our Google Analytics data and have it automatically refresh for a dashboard. We have looked into using Super Metrics and loading the data in that way, but we want to avoid upgrading our Super Metrics account.
Has anyone encountered a similar issue, and if so, what solution did/would you implement?
I think you have two solutions here :
Pay supermetrics or any self managed data loader (stitch, fivetran etc)
Code your own ETL
For the moment paying supermetrics, but some alternatives we are looking at are Keboola, Dataddo or building into airbyte, may it will come soon.

AWS AppSync how can I tell if there are outstanding mutations when I'm offline?

I'm using AWS AppSync, Apollo and React Native. One of the great advantages of using these together is that I get good offline behaviour. In my app, I can make changes while offline and they all get queued up and executed when I get back on line.
However, I'd like to be able to show the user if there are mutations which haven't been sent to the server yet. Just some little icon or something which goes away when everything is up-to-date.
Can anyone point me in the right direction? I've looked at the offline configuration for AWSAppSyncClient, and can see there's a callback I can hook into, but it doesn't give me enough information as far as I can tell.
Thanks!
Have you looked into using the amplify library - https://aws-amplify.github.io/docs/android/start?
When you make a mutation while the device is offline - it gets added to a local queue (persisted by sqlite). It is from this queue that they are read and sent to server serially once back online.
Now while offline - your appcode would be able to query the local datastore to determine the mutations still 'offline'
Read more here:
https://aws-amplify.github.io/docs/android/api#client-architecture
https://aws-amplify.github.io/docs/android/api#offline-mutations

Logging user interactions with a program

We have an app and we want to log how the user is interacting with it. For example are they using the pages we expect them to. I dont want to log this via the app as it will be very hard for me to then get this information from the device. Each page interacts with webservices so I was planning to log that interaction.
I have had some thoughts on this
* as the webservice is being called add a logging table to the database - problem here could be performance impact
* use log4j async mode to log these details.
Does anyone have any other suggestion on how to do this? Im reading the Lean Startup at the moment (very good so far) and this sort of thing seems fundamental to it so Im wondering if there are any other tips to this.
Thanks
Since no one answered this for a couple months, I thought a couple pointers might help you...
Use mobile analytics tools
Fabric.io
Google Analytics for Mobile Apps
Flurry
Amazon Mobile Analytics
appsee
Have the server record what users access (that's the approach you're considering). To offload the overhead, there are a couple tactics you could employ (mix 'n match as you will):
Use async mechanisms (async operations in the server, such as Futures; log4j async mode; async databases; etc).
Use a separate database.
Use a NoSQL database only to write accesses. Later on you process that information in a separate analytics application.
Have the client (mobile app) record the actions and send them in bulk to the server once in a while (as frequently as you need / want / can afford).
Cheers

Migrating from parse.com

Say I have 10K users for my app and I want to switch to my own custom server for backend. I have seen the Parse export functionality but I don't get how it can help me in this situation.
I mean even if I export all data and make updates to app so that it makes calls to my new custom server, still, it will take months for all my users to use updated version of app(many users don't update immediately, my last update on fb was year ago).
Also, during this transition half of my users would be having their
data on my custom server and other half(those who haven't updated)
would be using parse server, so for queries that require all data in one place this becomes an issue (I could solve this via replication but imagine how slow it would be in realtime to push the data to both - my server and parse.com).
Has anyone thought about this ?
What you could do is when you release a new version of your app, when a user logs in and they are on parse, migrate their data at that point to the new server and from that point on that user uses the custom server. That way users move to the new server as they upgrade, I always have a flag that is fetched from my server to force the user to upgrade if is needed. Hope that helps.
Copying data over to your new backend periodically until you have finalize your mobile client code and then allow the user to update their app on the App Store or Google Play Store would provide the switch over. Doing that elegantly would be dependent on the type of app and user base you have for the app. I wrote up a part 1 of a blog on these considerations for migrating over from Parse to Couchbase Mobile stack and the reasons why to consider the stack.
If you can already attach a new system in place to have new data in two places (Parse and customer backend) then the copy and merge in the future might be easier to handle but this is case by case. Then when on mobile app update, you can depreciate the server. Or push data to have local store for those users who will be on older versions since Parse will eventually stop working. Any new experiences will require update to the new App version.

Backing up Isolated storage

Some of my users have asked to have their data backed up (off the phone). I'm using Isolated storage to store their data. I'm wondering if there is a way that I can somehow get that information package it up and send it to a off phone location.
Is there a way to do this? What is the best way to accomplish this?
I don't know if skydrive will handle backing up the type of data you have but there is an API now.
http://msdn.microsoft.com/en-us/windowslive/default.aspx
Examples on GitHub:
https://github.com/liveservices/LiveSDK
Someone posted a question on how to backup a SQLCE database to skydrive and there didn't seem to be an API to backup random things only specific things like Pictures or Music. I'm sure something for that could be figured out by storing some data from a browser and watching the traffic in Fiddler.
edit: side note, theres an AWS beta API for WP7 now.
If you don't know what the data is, you can search for it like this:
Find Existing Files and Directories in Isolated Storage
Then you can use SkyDrive to save users data onto it.
You can use the Live SDK.

Resources