I recently submitted a simple app to Google Play, hoping to get a taste of the app submission process. I was expecting the process to be a bit painful, and I ended up getting suspended.
Update (Mar 6, 2020): Added a section at the end to talk about a recent CNBC article that discussed Apple and Google are removing coronavirus apps from their app store.
- Background Tasks & Notifications
- Submission to Google Play
- Coronavirus wiped from Google Play
- Some Clarity At Last
I look at the dashboard often to check the latest numbers and thought it would be convenient to have an app that notifies me of updates. This also sounds like the perfect candidate to be my first submission to different app stores. So away I went.
This is the set of features that I want to implement in my app:
- periodic checks for changes in data
- display notifications
- display widgets
- allow the user to filter by country
JHU initially released all their data on a Google Sheet and has since migrated to a Github repo.
With the CSVs from Github, getting the app to load the data was straightforward.
A trickier aspect of this app is it needs to be able to periodically pull Github for data even if the app is closed and to send a notification to inform the user of any changes. I found two packages, flutter_local_notifications, which help send notifications, and workmanager, which help implement background tasks. These packages significantly reduced my development time as Flutter doesn’t support these functions on its own and requires the user to write native code through Flutter’s platform channels.
I prefer a UI that is simple and to the point. It should have:
- a dropdown for the user to select the country/region (can also add a city selection at a later stage as they are also provided by the CSV)
- prominent display of the numbers (confirmed, deaths, recovered)
- a switch for the user to turn the notifications on, which will also enable periodic background refresh.
I have also added an “About Dialog” that tells the users the information is from JHU CSSE and a way for them to give me feedback.
It turns out that Flutter supports neither Android Widgets nor iOS Today View Widgets. As this needs to be implemented natively through the platform channels, I’ll implement it in a later version update.
As my main development machine is on Windows, so naturally I will submit to Google Play first. This involves setting up my developer account and paying a USD25 registration fee. After putting in more information about my app entry, I submitted my app for the Internal Test, the first of the four tests before the actual public release.
After 3 days of waiting, I was shocked upon seeing the app got suspended:
My app got suspended because it:
“lack reasonable sensitivity towards or capitalize on a natural disaster, atrocity, conflict, death, or other tragic event”
All my app does is it shows the latest infected numbers from a widely accepted source and give the option to the user for receiving notifications when these numbers change. It does not misrepresent or interpret the numbers in any way. Nor does it contain any ads and I’m not “taking advantage” of the situation. I simply want to receive notifications on the latest numbers.
It seems that while this simple app violates their policy, a news app (e.g. CNN, BBC) that reports the same numbers, while giving their interpretation and getting ad money is NOT a violation of the policy.
While I was feeling a bit frustrated, something interesting popped up. Before developing the app, I did a bit of research on existing apps that were also centred on the coronavirus.
I found 5 of them. They all provide a similar function of displaying the latest numbers from the virus with a different UI applied. Some apps also provided the latest news and charts. One of them even allow the user to enable notifications but it didn’t have the simple UI that I wanted.
All 5 apps have now all but disappeared from the Play Store. All that shows up are games, with an exception of an app on the “History of Coronavirus” that talks about the scientific discovery of the virus in English and 9 other languages, without any mention of infected numbers or news.
So at least it wasn’t only my app that got rejected. I appealed the suspension with the reasons I mentioned above (through Google Play Console so I don’t have the email) and 2 days later I got a reply that said the same thing as the first email.
To be honest, this was within expectation as it seems to be in line with what others have said.
I appealed again because I still don’t agree with the suspension as my app was never released to the public. Apparently, having suspensions will scar my account status permanently where it will eventually be terminated and everything in the account will become inaccessible (inc. the account’s Gmail).
Google’s reply to my second appeal only took them less than half a day. They didn’t give me any more information than their first email and nothing was changed on my end.
A few days past, CNBC published an article that talks about how Apple is removing all apps related to coronavirus.
Some of the developers whose coronavirus app was taken down got a response from Apple that said:
“apps with information about current medical information need to be submitted by a recognized institution,”…Apple has been specifically evaluating coronavirus apps to prevent the spread of misinformation. It looks at both where the health data comes from and whether the developers represent organizations that users can trust to publish accurate data, like governments or health-focused organizations, according to a person familiar with the matter.
While Google didn’t comment on the issue, they did release a list of apps that are from well-recognized sources or government, such as the CDC of US Government, American Red Cross and Twitter (obviously no misinformation here 🙃).
I think this measure is fair and helpful in preventing the spread of misinformation. But Google should’ve been more transparent and tell developers the reasons for the app takedown. However, I’m still highly skeptical that suspension is needed as the data my app presented was purely factual, from a recognized source, and without misrepresentation.
Good thing that I didn’t spend too much time on this. And since I coded it in Flutter, perhaps I should try and submit to the Apple App Store and see how it goes. However, I couldn’t find any apps that report numbers of infected on the Apple App Store either. I guess I better move on to the next app idea.
This experience has taught me firsthand how helpless developers can be when it comes to relying on the App Store for distributions. I couldn’t have imagined how stressful this will be if I relied on the app for revenue and income.
While I understand these checks and balances are in place to prevent malicious apps from abusing the system, they are also far from perfect as they also create unnecessary barriers for app developers with good intentions.