문제 발생
구글 플레이 스토어에 앱을 업데이트하는 과정에서, 아래와 같은 리젝(reject) 메일을 받았습니다.
게시 상태: 거부됨
앱이 정책 위반으로 거부되어 게시되지 않았습니다. 기존 앱의 업데이트를 제출하신 것이라면 이전에 게시된 버전은 Google Play에서 사용자에게 계속 제공됩니다.
문제: 기기 및 네트워크 악용 정책 위반
사용자의 기기, 기타 기기 또는 컴퓨터, 서버, 네트워크, 애플리케이션 프로그래밍 인터페이스(API), 서비스(기기에 설치된 기타 앱, Google 서비스, 승인된 이동통신사 네트워크를 포함하나 이에 국한되지 않음)를 방해하거나, 작동에 지장을 주거나, 손상시키거나, 무단으로 액세스하는 앱은 허용되지 않습니다.
앱이 서비스 약관을 위반하는 방식으로 서비스 또는 API에 액세스하거나 이를 사용해서는 안 됩니다. 예를 들어 앱에서 YouTube 서비스 약관을 위반하는 방법으로 YouTube 동영상을 다운로드, 수익화 또는 액세스하지 않아야 합니다.
원인은, 앱 내에 웹뷰에서 유튜브 영상을 재생하는 페이지가 있는데, 해당 유튜브 영상이 백그라운드에서 재생되면 안 된다는 것이었습니다.
즉, 앱이 백그라운드(대기모드/잠금모드) 상태일 경우, WebView를 onPause 시켜서 해당 웹뷰에서 영상이 재생되지 않도록 해야 하는데, onPause 처리를 하지 않았기 때문에 백그라운드 상태에서 영상이 재생될 수 있는 게 원인이었습니다.
그래서, 유튜브 서비스 위반과 네트워크 남용 정책에 위반이 되었던 것입니다.
자신들의 유료화 서비스인 "유튜브 프리미엄"의 백그라운드 재생 기능과 유튜브 영상 재생을 통한 광고료 발생 등 구글의 수익모델과 연관되어 다양하게 악용될 수 있기 때문에, 구글에서 엄격하게 검수를 한 것 같습니다...
그러므로 결론은, 유튜브 영상이 백그라운드에서 재생되면 안 된다는 것!
문제 해결
메니페스트 권한 명시
네트워크 상태를 알 수 있도록 권한을 열어두기 위해, 메니페스트에 "ACCESS_NETWORK_STATE" 권한을 명시합니다.
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE” />
onPause 처리
유튜브 영상이 재생되는 웹뷰 액티비티의 onPause 메소드에서, webView.onPause(); 를 호출하여 백그라운드에서 영상이 재생되지 않도록 처리합니다.
protected void onPause() {
super.onPause();
webView.onPause();
}
위의 두 가지를 추가하여 앱을 수정하신 후, 다시 앱을 게시하시면 문제없이 정상적으로 앱이 게시되는 것을 확인할 수 있습니다. ^^