Google Play審査リジェクト「ユーザー作成コンテンツ」に対応する


Google Playで公開済みのAndroidアプリのアップデートをリリースしようしたら、審査でリジェクト(非承認)されてしまいました。なんとか対応できて無事公開に漕ぎつけることができたので、その方法を記事にしておきます。

初めてのリジェクト

すでにGoogle Playで公開済みのAndroidアプリ、いつものようにアップデートを公開しようと製品版をリリースしたら、なぜか審査でリジェクト(非承認)されてしまいました。数年ぐらいアプリ開発やっていて初めての経験だったため、非常に狼狽しました。なんせ過去に強制的に公開停止を喰らったことがある身ですので・・・。

事の始まりは一通のメールから。

件名「ご対応のお願い: Google Play のポリシーをアプリが遵守していません」

一体なによ、「ユーザー作成コンテンツ」って・・・?

そもそもこのアプリはタイ語の辞書アプリでして、ユーザーが作成するコンテンツなんて特にないのになあ・・・と思っていたら、メールにはご丁寧にも添付ファイルがありまして、それを見たら意味が分かりました。

Googleからの添付画像

あー、そういうことですか。コメントですか。・・てかコメントもユーザー作成コンテンツに入るんですね。。。

一応調べてみようと思いヘルプページを読んでみたのですが、自分が確認した限りは、はっきりと投稿コメントのことを言及している箇所は無かったです。ただ、それっぽいことは書いてました。

ユーザー作成コンテンツ – Play Console ヘルプ

違反の例のところに「コメント」とあるので、これに該当するんでしょうね、多分。正直、あまり活発にコメントがやり取りされるタイプのアプリではないので、どうでもいいじゃねーかと思うのですが、リリースできないのは困るので、ハンカチを噛み締めながら対応することにしました。

対応方法

駄目なのはわかったけど、どうすりゃいいのよ?と思っていたんですが、ちゃんと読めば書いてますね。メールにも、ご丁寧に添付画像にも。

Google のガイドラインでは、UGC を含むアプリはそれを主な目的とするかどうかにかかわらず、以下の機能や仕組みを備えていなければならないと規定されています。

・不適切な UGC を報告するための、ユーザー フレンドリーなアプリ内システムを提供し、その UGC に対して以下のような適宜措置を取る

・ユーザーが、違反している可能性のあるコンテンツを報告できる

Google Play Consoleからのメール本文より

App is missing the following features/functionalities:

– Allows users to report/flag potential violating content

メールの添付画像より

つまり、よく見かける「違反報告フォーム」みたいなものを設けなさいよ、ということだと理解しました。ツイッターとかにも付いてるアレです。うん、確かにウチのアプリはそういう機能を提供してない。

とはいえ、いちいち機能として開発するのも面倒だし、なんとか手軽に済ませられないかなと考え、「結局報告できればいいんでしょ?」という論旨のもと、ツイッターのDMを利用することにしてみました。各コメント欄に 🏴ボタンを置いておき、それをタップするとツイッターのDM送信画面に遷移するようにしました。これなら実装も大した手間じゃない。(当該アプリはFlutter製ですので、記事の最後にFlutterでの実装例を載せておきます)

違反報告フォーム

無事、審査に通る

結果、無事審査に通りました!(厳密に言うと、別件のポリシー違反で審査自体はリジェクトされたのですが、そちらについては別の記事で書きます。)

ツイッターのおかげで1,2時間で対応できたので良かったです。今回はツイッターでしたが、報告できれば何でもいいと思うので、おそらく普通のメールで報告とかでも通るじゃないかな?

なお、審査時間は2,3時間だったと思います。自動化されてるんでしょうかね。わりと分かりやすく対応方法を教えてくれるし、再審査は早いし、このあたりはどこぞやの林檎とはえらい違いですね。Google先生、いつもありがとうございます。

同じことで困ってる人の参考になればと思います。

(参考)Flutterでの実装例

ツイッターのDM送信画面へ遷移する実装例です。端末にツイッターアプリがインストールされていれば自動的にアプリで開き、そうでなければブラウザで送信画面へ遷移します。

import 'package:url_launcher/url_launcher.dart';

const _userID = ツイッターのユーザーID;

Future<void> goToReport(int id) async {
  final Map<String, dynamic> params = {
    "recipient_id": _userID.toString(),
    "text": "違反報告・削除依頼[id=$id]",
  };

  var uri = Uri(
      scheme: "twitter",
      host: "messages",
      path: "compose",
      queryParameters: params);
  if (await canLaunch(uri.toString())) {
    await launch(uri.toString());
    return;
  }

  uri = Uri.https("twitter.com", "/messages/compose", params);
  await launch(uri.toString());
}

かなり手抜きなので、必要に応じ補ってください。なお、url_launcherというライブラリを使用していますので、pubspec.yamlに追加するのをお忘れなく。

また、「ツイッターのユーザーID」というのは @hogehoge というアレではありません。数字いっぱいのやつです。下記のサイトで確認できます。

TweeterID

iOS版は(動作未確認ですが)、info.plistにキーの追加が必要そうです。

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>twitter</string>
   <string>https</string>
</array>

以上、ご参考まで。

関連する記事


コメントする

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください