Coronavirus Suspended My First Google Play App
Tags: mobile, flutter, cornavirus
Published: 2020-08-13 09:24:25

---
title: Coronavirus Suspended My First Google Play App
published: true
date: 2020-03-02 19:00:00 UTC
tags: mobile, flutter, cornavirus
canonical_url: https://flyingnobita.com/mobile/flutter/2020/03/02/coronavirus_suspended_my_first_google_play_app.html
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/ih51t6n1we7zc62e9snt.jpg
---

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](#some-clarity-at-last) at the end to talk about a recent CNBC article that discussed Apple and Google are removing coronavirus apps from their app store.

## Table of Contents 

1. [Data](#data)
2. [Background Tasks & Notifications](#background-tasks--notifications)
3. [UI](#ui)
4. [Widgets](#widgets)
5. [Submission to Google Play](#submission-to-google-play)
6. [Coronavirus wiped from Google Play](#coronavirus-wiped-from-google-play)
7. [Appeals](#appeals)
8. [Some Clarity At Last](#some-clarity-at-last)
9. [Lessons](#lessons)

I have been following the recent [coronavirus outbreak](https://www.who.int/emergencies/diseases/novel-coronavirus-2019) and find the [dashboard](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6) created by [Johns Hopkins University CSEE](https://systems.jhu.edu/research/public-health/ncov/) to be very helpful.

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

## Data

JHU initially released all their data on a Google Sheet and has since migrated to a [Github repo](https://github.com/CSSEGISandData/COVID-19).

![JHU CSSE Github CSVs](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__csse_github.webp)<figcaption><p>The CSVs themselves are grouped by day</p>
</figcaption>

![JHU CSSE CSVs format](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__csse_github_csv.webp)<figcaption><p>In each CSV, there are 6 columns clearly labelled making the parsing of this CSV a breeze.</p>
</figcaption>

With the CSVs from Github, getting the app to load the data was straightforward.

## Background Tasks & Notifications

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](https://pub.dev/packages/flutter_local_notifications), which help send notifications, and [workmanager](https://pub.dev/packages/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](https://flutter.dev/docs/development/platform-integration/platform-channels).

![Notifications showing the global infected numbers upon update](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__notifications.webp)<figcaption><p>Notifications showing the global infected numbers upon update</p>
</figcaption>

## UI

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.

![App UI](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__ui.webp)<figcaption><p>App UI</p>
</figcaption>

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.

![About Dialog with a User Feedback Form](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__about_dialog.webp)<figcaption><p>About Dialog with a User Feedback Form</p>
</figcaption>

## Widgets

It turns out that Flutter supports neither [Android Widgets](https://developer.android.com/guide/topics/appwidgets) nor [iOS Today View Widgets](https://support.apple.com/en-us/HT207122). As this needs to be implemented natively through the platform channels, I’ll implement it in a later version update.

## Submission to Google Play

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:

![Google's email saying my app was suspended by Google Play](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__google_play_suspension.webp)<figcaption><p>Google’s email saying my app was suspended by Google Play</p>
</figcaption>

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.

I went online and saw horror [story](https://news.ycombinator.com/item?id=8838050) after [story](https://andrewrezk.com/how-i-restored-my-app-on-google-play-after-suspension/) on unjust suspension.

## Coronavirus wiped from Google Play

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.

![Existing coronavirus related apps](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__existing_apps.webp)<figcaption><p>Existing coronavirus related apps</p>
</figcaption>

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 previously existed coronavirus apps disappeared from the Play Store](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__play_store_all_gone.webp)<figcaption><p>All previously existed coronavirus apps disappeared from the Play Store</p>
</figcaption>

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.

## Appeals

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.

![Google's reply to 1st appeal](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__1st_appeal_reply.webp)<figcaption><p>Google’s reply to 1st appeal</p>
</figcaption>

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](https://www.reddit.com/r/androiddev/comments/6wz6wr/some_questions_about_developer_account_suspension/?utm_source=share&utm_medium=web2x) 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).

![My second appeal](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__2nd_appeal.webp)<figcaption><p>My second appeal</p>
</figcaption>

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.

![Google's reply to 2nd appeal](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__2nd_appeal_reply.webp)<figcaption><p>Google’s reply to 2nd appeal</p>
</figcaption>

## Some Clarity At Last

A few days past, CNBC published an [article](https://www.cnbc.com/2020/03/05/apple-rejects-coronavirus-apps-that-arent-from-health-organizations.html) that talks about how Apple is removing all apps related to coronavirus.

![CNBC news article on coronavirus app removal](https://res.cloudinary.com/flyingnobita/image/fetch/c_limit,f_auto,q_auto,w_768/https://flyingnobita.com/assets/images/posts/first_google_play__cnbc_news.webp)

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](https://play.google.com/store/apps/topic?id=campaign_editorial_3003109_crisis_medical_outbreak_apps_cep) 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.

## Lessons

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.