Google Play 정책위반 알림 – 앱, 타사광고, 기기 기능 방해 정책 위반, 메타데이터 정책 위반
2020년3월18일 업데이트까지 정상적으로 구글플레이(Google play)에 등록되었고, 어제 까지 문제 없이 사용자들이 다운받고 있었다. 한 명의 사용자의 오류 보고에 대한 메일을 받고 오류처리를 진행 후 마켓에 등록하였다.
그러나, 불행히도 업데이트 거부가 되었다는 이메일을 받았다. 마켓에 최신버전 업데이트 할 때 마다 마음 한 구석은 항상 불안하다. 거부 당하면 어쩌나 하는 마음이 있기 때문에….내가 모르는 구글정책이 있을 수 있기에…..
이메일 내용은 다음과 같다.
——————————
개발자님, 안녕하세요.
Google Play에 [앱이름] 앱을 제출해 주셔서 감사합니다. 검토 결과 귀하의 앱은 정책 위반으로 거부되었습니다. 기존 앱의 업데이트를 제출하신 것이라면 이전에 게시된 버전은 Google Play에서 사용자에게 계속 제공됩니다.
문제: 앱, 타사 광고, 기기 기능 방해 정책 위반
앱과 관련된 광고가 다른 앱, 광고 또는 시스템이나 기기 버튼/포트를 포함한 기기 작동을 방해하지 않아야 합니다. 여기에는 오버레이, 컴패니언 기능, 위젯화된 광고 단위가 포함됩니다. 광고는 게재되는 앱의 내부에만 표시되어야 합니다.
다음 단계:
- 앱, 타사 광고, 기기 기능 방해 정책을 검토하고 정책을 준수하도록 앱을 변경합니다. 사용자가 앱을 종료한 후 또는 뒤로 버튼을 눌러 앱에서 나온 후에 표시되는 광고를 모두 삭제합니다.
- 앱이 다른 모든 개발자 프로그램 정책을 준수하는지 확인합니다. 이후 또 다른 정책 위반이 발생하면 추가 조치가 취해질 수 있습니다.
- Play Console에 로그인하여 앱 업데이트를 제출합니다.
광고 정책을 검토했으며 잘못된 결정이라고 생각된다면 Google 정책 지원팀에 문의하세요. 영업일 기준 2일 이내에 직원이 연락을 드릴 것입니다.
감사합니다.
Google Play 검토팀
—————————-
위 메일을 받고 나니 좀 황당했다. 이 문제를 여러번 겪었다. 그래서 처리 방법도 알고 있으며, 잘 처리하였음에도 위와 같은 메일을 받았다. 오류 처리만 한 것 뿐인데…위반이라니….. 그래서 오류 처리 이전의 버전으로 마켓에 재등록하였다.
원인을 모를땐 가장 최근에 마켓에 정상적으로 등록된 앱의 버전으로 다시 업데이트 하는 방법이다.하지만 역시나, 결과는 업데이트 거부였다. 하지만 이번엔 정책 위반 내용이 바뀌었다.
메일 내용은 다음과 같다.
—————————
제목 : 조치 필요: 앱이 Google Play 정책을 준수하지 않음
_____ 개발자님, 안녕하세요. |
최근 [앱이름] 앱을 검토한 결과 앱이 하나 이상의 개발자 프로그램 정책을 준수하지 않는 것으로 확인되었습니다. 아래에서 앱 상태와 문제해결 방법을 자세히 알아보시기 바랍니다. |
앱에서 발견된 문제 |
|
메타데이터 정책 관련 정보 |
오해의 소지가 있거나, 잘못된 형식을 사용하거나, 정보를 전달하지 않거나, 관련이 없거나, 과도하거나, 부적절한 메타데이터(앱 설명, 개발자 이름, 제목, 아이콘, 스크린샷, 프로모션 이미지가 포함되나 이에 국한되지 않음)가 포함된 앱은 허용되지 않습니다. 개발자는 명확하고 이해하기 쉬운 설명을 제공하고 반복적이거나 관련 없는 키워드 또는 참조를 사용하지 않아야 합니다. 앱 설명에 작성자 표기가 없거나 익명으로 된 사용 후기를 포함해서도 안 됩니다. |
앱 상태: 거부됨 |
정책 문제로 인해 앱이 거부되었으며 게시되지 않았습니다. 기존 앱의 업데이트를 제출하신 것이라면 이전에 게시된 버전은 Google Play에서 사용자에게 계속 제공됩니다. |
지원팀에 문의 |
정책을 검토하신 후 Google의 결정이 잘못되었다고 생각되시면 Google 정책 지원팀에 문의하시기 바랍니다. 영업일 기준 2일 이내에 연락드리겠습니다. |
Google Play를 사용하는 개발자와 소비자 모두에게 만족스러운 경험을 제공하기 위해 지속적으로 협력해 주셔서 감사합니다. Google Play에 앱의 업데이트된 버전이 게시될 수 있기를 바랍니다. |
——————–
메타데이터 정책 위반이라니… 앱에서 발견된 문제 중에 내가 잘 못하고 있는 부분을 찾고 있다.
이 부분이 문제라면 앱을 다시 업로드 할 필요 없이 구글플레이에 등록된 스토어 등록정보를 변경하면 해결 된다.
앱 내부 코드에서 할일이 아니다.
다시 한번 또 이렇게 삽질이 시작되었다.
구글플레이 콘솔에 가서 확인하면 앱 업데이트가 거부됨 내용과 사유가 노출된다.
앱이름과 스토어 등록정보에 등록된 이름이 달라서 문제가 발생된 것 같다. 그래서 일치 시키는 작업을 진행 중이다.
이 작업이 완료되면 마켓에 정상적으로 등록 될 것 으로 보인다.
메타데이터 정책은 아래 링크를 참고!!
COVID-19로 마켓등록 처리도 늦여지는 모양새이다. 아침에 자고 일어나니 방가운 메일이 하나가 도착하였다.
정상적으로 등록되어서 다행이다. 하지만 안심할 수는 없다. 구글플레이에 등록 후 심사를 거치는 과정이 AI에 의한 자동심사인지, 아니면 사람이 심사하는지는 모르겠다. 정상적으로 마켓등록이 완료되었다고 하더라도 ,정확하게 다음날 아침 7시1분에서 7시 10분 사이에 마켓에서 앱이 삭제되었습니다. 라는 메일을 받을 수 있기 때문에 아직 안심할 수 없는 이유이다. 그렇게 다음날 아침 또 다시 시련이 찾아왔다. 3일간의 원인 분석끝에 원인을 찾아냈다. 원인이 발생한 소스코드부분은 Notification부분이였다.
if (Build.VERSION.SDK_INT > 28) { // 안드로이드 9( 28 파이 버전)
if(!isZenModeState()) { //방해금지모드가 아닐때 추가 2020.04.01
String CHANNEL_ID = "channel-plugin";
final int NOTIFICATION_ID = (int) (System.currentTimeMillis() % 10000);
Intent sIntent = new Intent(context, MainActivity.class);
sIntent.putExtra("action", "start");
sIntent.putExtra("ratio", ratio);
sIntent.putExtra("NOTIFICATION_ID", NOTIFICATION_ID);
sIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); //같은창 여러번 띄우지 않고 기존창 띄운다.
sIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //Activity가 아닌 곳에서 startActivity를 사용하려고 할때 필수
PendingIntent pendingIntent = PendingIntent.getActivity(context, NOTIFICATION_ID, sIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID, context.getResources().getString(R.string.cont_44), NotificationManager.IMPORTANCE_HIGH);
// notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
final Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID)
//.setContentTitle("") //자동표기됨
//.setContentTitle("Um, hi!")
.setContentText(context.getResources().getString(R.string.info_contents_txt_3))
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_REMINDER)
.setSmallIcon(R.drawable.push_icon)
.setFullScreenIntent(pendingIntent, true)
.build();
//notification.flags |= Notification.FLAG_NO_CLEAR; // 지우기 버튼 눌렀을때 지워지지 않게
final NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(notificationChannel);
//notificationManager.notify(NOTIFICATION_ID, notification);
Timer timer = new Timer();
//1초 분뒤
timer.schedule(new TimerTask() {
@Override
public void run() {
notificationManager.notify(NOTIFICATION_ID, notification);
}
}, 1000);
}
}
최근에 오류픽스는 아니지만, 혹시나 이렇게하면 여러 제조사의 휴대폰들 중에 제대로 동작하는 휴대폰이 나오지 않을까 하는 생각에 추가하였다. 그 코드는 바로 잠금화면에 알림 설정 setLockscreenVisibility()메소드의 추가였다.
notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
// 잠금화면 알림 설정 (VISIBILITY)
// VISIBILITY_PRIVATE : 잠금화면 알림은 표시되나, 내용은 표시되지 않음
// VISIBILITY_PUBLIC : 전체 내용을 잠금화면에 표시
// VISIBILITY_SECRET : 잠금화면 알림을 사용하지 않음
주의할점 : setFullScreenIntent()메소드를 사용하여 , 전체화면용 Acitivity클래스를 호출하여 광고를 노출하는 경우 setLockscreenVisibility()메소드를 사용하게되면 “앱, 타사광고, 기기 기능 방해 정책 위반”에 해당된다. 이 정보를 알아내는데 3일간의 삽질을 하였다. 사용에 주의하자.