Thursday, June 17, 2021

How the Service Victoria QR code check-in system can miss out on check-ins

Update #1

I can't replicate the issue today (18/6/21); here's hoping they have fixed it since I recorded the problem on the 17/6/21. Interestingly the last update to the app was on the 9/6/21.


Victoria's QR code contact-tracing check-in system, while addressing an important goal, appears to have a relatively big usability flaw (specifically on the Android App), that can result in check-ins being missed. The problem occurs when using a QR code reader app (e.g. Google Lens) that is not the Service Vic app, but having the Service Vic app installed on the phone. I've been able to semi-regularly reproduce this on my own phone, but haven't tried any others, so I've only got a small sample size.

What's the problem?

The Services Vic app will sometimes ignore the current location, and instead check-in to your previous location a second time. This occurs if you have the Services Vic app installed on your phone, but scan the QR code with a separate QR reader app such as Google Lens.

Steps to reproduce

  1. Ensure that the Service Vic app, and a QR code reader are installed. I have only tested with the Google Lens app, but by my understanding of Android, this should be the same with any QR code reader app.
  2. Check in to a location (initially, it doesn't matter whether through the Services Vic app, or the QR code reader) - let's call this Location 1.
  3. When the "Check-in successful" page in the Services Vic app appears, do not press the "Done" button - leave it there (possibly as proof to the shop you're entering that you've checked in).
  4. Press the Home button on your phone, to put the Services Vic app into the background.
  5. Go to another check-in location (Location 2)
  6. Open Google Lens, point at the QR code for Location 2
  7. Google Lens should now open the Services Vic app, however, the app will still be showing the "Check-in successful" page of Location 1, and not any option to check in to Location 2.
  8. Pressing the "Done" button will take you back to the main page of the Services Vic app. 
  9. Reviewing where you are currently checked in to will show you are checked into Location 1, while Location 2 has not been logged at all.


Why is it a problem?

Because check-in locations might be skipped, and a chain of transmission could be lost.


Why not just use the Services Vic app to read the QR code?

You could, and this would solve the problem. But people use phone in different ways, and might want to use a single QR code reader for all of their QR code reading purposes (e.g. if they travel interstate, and have to use different state check-in systems, or they are used to the one app that they used before there was a unified Services Vic QR code system). And given that the functionality exists within the Services Vic app to accept a QR code (actually, a URL) from another app, this is a valid use case that has already been considered, but implemented incorrectly.


But shouldn't people check their app to make sure they're checked into the right place?

Yes, they should. But some (perhaps many) won't. When you're going shopping and are checking into a new place every couple of minutes, you're probably not going to read the details, you'll just be looking to the "Check-in successful" page, and you're done. Some people are busy, some people don't notice details, some people aren't good with this technology that's been forced on them, some people can't read well. 


What are the technical details?

I haven't delved too deep into this, but from what I know about Android apps (and it's been a couple of years since I've done any development there), here's what I think is going on:
  • When you check in to a location in Services Victoria, it shows the "Check in successful" page; I think this is implemented as an Android Activity.
  • When you go Home, or to another app, the Services Victoria app remains running in the background, with the "Check in successful" activity at the front.
  • When a QR code reader app finds a valid QR code (in this case, for a URL), it fires an Intent  to the rest of the Android system to ask which app is best equipped to handle this particular address.
  • The Services Vic app has previously registered that it's the one for these types of Intents/URLs, so it gets sent the Intent/URL.
  • But the Services Vic app is on the "Check-in successful" activity, which either doesn't know how to deal with the new Intent/URL, or ignores it, and stays on it's current page, and doesn't register the new Check-in location.

Can I see this in action?

Sure, here's a video of me trying to check in to Roti Road, but after scanning the QR code, it goes to "Check-in successful" for the previous location: