Old balance on app start-up


(Iestyn Lloyd) #1

Noticed a few times when opening the app, after the splash screen, the app briefly displays the last known balance for a split second before updating to the actual current balance.
For example, I launch the app, see the splash screen, see £500(last known balance), a millisecond later it drops to £300(actual balance).
The split second is enough to put a downer on my day, thinking I had more money than I thought. I’d prefer it that the app made sure that it had received the actual balance before showing me anything.
Thanks
Keep up the great work


(Danny) #2

The app ‘shuts down’ so does not connect back to the servers to get info, to do this the app would have to remain ‘open’ all the time or background refresh and that would kill your battery.

This may or may not be true, just a guess, probably read it somewhere about other apps.


(Iestyn Lloyd) #3

But if the app has already sent me push notifications about the transactions, can’t it update the balance at this time in the background?
If not, just keep the splash screen up long enough until the balance has been updated?


(Allie) #4

Just speculation, but I imagine those notifications are coming through APNS (Apple Push Notification Service), not the app running in the background.

But then everyone here would complain it was too slow to load :rofl:


(Brandon Billingham) #5

Agreed. Notifications are a valid trigger point for a background refresh of an app, so when you open the app, its updated already. Be good to see this implemented.


(Andre Borie) #6

Not sure if this is possible… I guess if this isn’t then the balance should be temporarily blurred out until updated to avoid misleading users with an outdated balance.


(Brandon Billingham) #7

What makes you think it wouldn’t be?


(Andre Borie) #8

I know iOS has a lot of (sometimes) crazy restrictions about what apps can and can’t do in the background so I wouldn’t be surprised if it wasn’t possible.


(Brandon Billingham) #9

I’ve got some limited experience in this area from an app I made for my final year project a while back.

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

I think Monzo could use Remote Notifications. (See table 3-1 in the link)

Using Push Notifications to Initiate a Download
If your server sends push notifications to a user’s device when new content is available for your app, you can ask the system to run your app in the background so that it can begin downloading the new content right away. The intent of this background mode is to minimize the amount of time that elapses between when a user sees a push notification and when your app is able to able to display the associated content. Apps are typically woken up at roughly the same time that the user sees the notification but that still gives you more time than you might have otherwise.
To support this background mode, enable the Remote notifications option from the Background modes section of the Capabilities tab in your Xcode project. (You can also enable this support by including the UIBackgroundModes key with the remote-notification value in your app’s Info.plist file.)
For a push notification to trigger a download operation, the notification’s payload must include the content-available key with its value set to 1. When that key is present, the system wakes the app in the background (or launches it into the background) and calls the app delegate’s application:didReceiveRemoteNotification:fetchCompletionHandler: method. Your implementation of that method should download the relevant content and integrate it into your app.
When downloading any content, it is recommended that you use the NSURLSession class to initiate and manage your downloads. For information about how to use this class to manage upload and download tasks, see URL Session Programming Guide.

Interestingly, Monzo is listed in the Background App Refresh list, so I wonder how they’re using it at the moment.


(Andre Borie) #10

Background app refresh seems to apply to all apps, no matter whether they actually use it or not. Given the amount of times I’ve opened Monzo and it briefly showed an outdated balance I don’t think they’re using it (yet).


(Brandon Billingham) #11

It does seem that a lot of apps are in that list, makes you wonder what component they’re using to trigger the presence in the list, or whether it’s simpler than that. I have a few apps that aren’t in that list though. Freeview TV guide and Next Episode are both absent for example.


(Andre Borie) #12

I don’t think it’s a permission like Location which the app has to request and will then appear in the list, I think it’s granted by default so all apps get it whether they use it or not.


(Brandon Billingham) #13

I meant that they’d have to implement a framework or library in code for it to appear in that list, they may for example import said framework but make no use of its functionality. Hence why Freeview and Next Episode don’t appear in that list.


(Andre Borie) #14

Thanks, good to know - I always thought all apps are in there as all of mine are (even the ones with absolutely no online functionality so nothing to refresh). It could be that the app itself doesn’t use it but one of the third-party libraries do (like analytics, ad tracking and other user-hostile nastyness) so it causes pretty much every single app to be in there.


(Brandon Billingham) #15

Good theory, you’re likely right. The Waitrose app is in there for example (which is now reminding me to delete it as I never use it), and it’s such a basic app it can barely refresh in the foreground.