Google's (Anti)Trust Issues

Google is coming under increasing fire from governments on antitrust and related anti-competition issues. Google has increasingly had “trust issues” with developers due to their poorly-implemented ban policies with respect to the Play Store. These two trends may merge, given Google’s most recent moves.

According to multiple first-hand reports, Google is banning apps… for showing an Android-supplied system dialog:

Ignore Battery Optimization Dialog

Actually, they appear to be being banned for requesting the REQUEST_IGNORE_BATTERY_OPTIMIZATIONS permission in the manifest, not even for showing the dialog. However, there is no reason to request this permission unless you planned to show the dialog at some point, or in some circumstances.

This system dialog allows the app to ask the user to add them to the battery optimization whitelist, so that they are somewhat less affected by Doze mode:

if (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1) {
  String pkg=getPackageName();
  PowerManager pm=getSystemService(PowerManager.class);

  if (!pm.isIgnoringBatteryOptimizations(pkg)) {
    Intent i=
      new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
        .setData(Uri.parse("package:"+pkg));

    startActivity(i);
  }
}

This banning is backed by a snippet in the Android SDK documentation:

Note: Google Play policies prohibit apps from requesting direct exemption from Power Management features in Android 6.0+ (Doze and App Standby) unless the core function of the app is adversely affected.

However, it is Google’s opinion of what “the core function of the app” is that matters. Not the user. Not the developer. Google. The user and developer might be in perfect harmony over what adding the app to the whitelist means, but if Google thinks that it is not warranted, Google sets themselves up as being more important than the user and bans the app.

If this is true — and the documentation would suggest that the reports are accurate — this is deeply stupid.

Tactically, developers can pop their own dialog, and if the user agrees to add the app to the whitelist, the developer can start the ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS activity, plus use a Toast or something to help guide the user how to navigate this awkward activity.

Strategically, all Google is doing by this behavior is inviting more class action lawsuits and providing more ammunition to those pursuing antitrust claims.

Personally, my concern is far more with the trendline of how Google wields their ban-hammer:

  • Originally, they banned nothing
  • Then, they banned malware, based on signatures
  • Then, they banned based on content that they do not like (e.g., pornography)
  • Then, they banned based on names that they do not like (ostensibly to avoid user confusion)
  • Now, they are banning based on Android APIs that they do not like

And there are probably some other categories of ban-hammering that I am forgetting as I write this post.

Where does it stop?

All app distribution channels, the Play Store among them, need a high degree of transparency with respect to what gets banned, both in terms of stated rules and in terms of how those rules get applied in practice. Based on all published reports, Google is about as transparent with respect to these bans as is your average battleship deck plate. Without transparency, trust is eroded. Other channels have similar transparency and trust problems — this is not unique to Google. However, given Android’s global market dominance, the Play Store is “first among equals” with respect for the need for transparency.

I have been encouraging app developers for years to not depend solely upon the Play Store for their Android app distribution. With each passing year, that need becomes stronger, as app developers find that Google is decreasingly trustworthy as a distribution partner.

If you have been banned based on the Play Store policy described in the Android SDK documentation — or from any similar future policies — make sure that you document the banning, via your blog, Reddit, other social media, media outlets, etc. Lacking transparency from Google, all we can do is ensure that everybody knows what is going on.