투케이2K 에러관리

313. (TWOK/ERROR) [Android] 정책 - 발견된 문제: 포그라운드 서비스 사용자가 기능을 시작하지 않거나 기능을 인지할 수 없음

투케이2K 2025. 6. 2. 19:01
728x90

[환경 설정 및 설명]

프로그램 : AndroidStudio

설 명 : [Android] 정책 - 발견된 문제: 포그라운드 서비스 사용자가 기능을 시작하지 않거나 기능을 인지할 수 없음

 

[설 명]

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [Android] 정책 - 발견된 문제: 포그라운드 서비스 사용자가 기능을 시작하지 않거나 기능을 인지할 수 없음

- 테스트 환경 : 삼성 갤럭시 스마트폰 / 안드로이드 / Android

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------

1. 안드로이드 포그라운드 서비스 사용 시 노티피케이션 알림 미제공 (사용자 인지 못함) 및 세부 권한 사용 설명, 제출 동영상 기능 설명 부족으로 인한 정책 리젝


2. 정책 위반 내용 전문 : 

발견된 문제: 사용자가 기능을 시작하지 않거나 기능을 인지할 수 없음
선언된 사용 사례 중 하나 이상이 포그라운드 서비스 권한의 사용 방식을 준수하지 않는 것으로 확인되었습니다. 
특히 사용자가 활성 상태일 때 권한이 필요한 기능을 알 수 없습니다. 

문제 세부정보

다음 영역에서 문제가 발견되었습니다.

앱이 정책을 준수하도록 하려면 다음 단계를 따르세요.

사용자가 관련 FGS 기능을 시작하거나 인지할 수 있도록 인앱 환경을 업데이트하고 이를 보여주는 명확하고 관련성 있는 동영상과 함께 업데이트된 선언을 제출합니다.
필요한 경우 영향을 받는 사용 사례에서 포그라운드 서비스 사용을 삭제하고 필요한 경우 제출한 모든 버전 코드에서 관련 포그라운드 서비스 유형 권한도 삭제해야 합니다.
APK/App Bundle 수준을 업데이트하려면 다음 단계를 따르세요.
App Bundle 탐색기로 이동하여 정책을 준수하지 않는 버전 코드를 검색합니다. 세부정보 페이지를 클릭하여 정책 문제(비공개/공개 테스트/프로덕션)가 있는 트랙으로 이동합니다. 트랙 관리 > 새 버전 만들기를 클릭합니다.
정책을 위반하는 App Bundle/APK가 포함된 버전이 임시보관 상태인 경우 해당 버전을 삭제합니다.
아니면 정책을 준수하는 App Bundle/APK 버전을 추가하세요.
정책을 준수하지 않는 버전이 출시 버전의 '포함되지 않음' 섹션 아래에 있는지 확인합니다.
버전 이름을 입력하고 저장을 클릭합니다. 저장되면 버전 검토를 클릭한 다음 100%의 사용자를 대상으로 버전을 출시하고 규정을 준수하지 않는 APK를 완전히 비활성화합니다.
정책을 준수하지 않는 버전이 여러 트랙에 출시되어 있는 경우 각 트랙에서 1단계를 반복합니다.
App Bundle 탐색기 페이지를 다시 확인할 수 있으며 정책을 준수하지 않는 버전 코드가 '비활성'으로 표시되고 세부정보 페이지에 '버전 0개'라고 표시되어야 합니다.
선언된 모든 사용 사례가 영향을 받는 경우 FOREGROUND_SERVICE 권한도 삭제해야 합니다.

포그라운드 서비스 권한 정보
포그라운드 서비스 권한은 사용자 대상 포그라운드 서비스가 적절히 작동하는 데 필요합니다. Android 14 이상을 타겟팅하는 앱의 경우 앱에 사용되는 포그라운드 서비스마다 유효한 포그라운드 서비스 유형을 지정하고 해당 유형에 적합한 포그라운드 서비스 권한을 선언해야 합니다. 예를 들어 앱의 사용 사례에서 지도 위치정보가 필요한 경우 앱의 매니페스트에서 FOREGROUND_SERVICE_LOCATION 권한을 선언해야 합니다.

systemExempted 및 shortService 포그라운드 서비스 유형을 제외하고, 포그라운드 서비스가 다음과 같이 사용되는 경우에만 앱에서 포그라운 서비스 권한을 선언할 수 있습니다.
사용자에게 유용하며 앱의 핵심 기능과 관련이 있는 기능을 제공합니다.
사용자가 포그라운드 서비스 사용을 시작하거나 인식할 수 있습니다(예: 노래 재생 소리, 다른 기기에 미디어 전송, 정확하고 명확한 사용자 알림, 사진을 클라우드에 업로드하기 위한 사용자 요청).
사용자가 포그라운드 서비스 사용을 종료하거나 중단할 수 있습니다.
부정적인 사용자 경험 또는 사용자가 예상한 기능의 오작동을 초래하는 경우를 제외하고 시스템에 의해 중단 또는 지연되어서는 안 됩니다(예: 전화 통화는 즉시 시작되어야 하고 시스템에 의해 지연되어서는 안 됨).
작업을 완료하기 위해 필요한 만큼만 실행됩니다.
포그라운드 서비스 사용에 관한 자세한 내용은 이 Play Console 고객센터 페이지를 참고하세요.

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------

1. 포그라운드 서비스 호출 시 사용자가 서비스 동작을 인지 할 수 있도록 노티피케이션 알림 표시 추가

  private void createNotificationChannel(){

      Intent notificationIntent = new Intent(this, LoginActivity.class);
      notificationIntent.setAction(Intent.ACTION_MAIN);
      notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
      notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

      PendingIntent pendingIntent = null;
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ // [API 레벨 31 이상 : 안드로이드 12]
          pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, notificationIntent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
      }else {
          pendingIntent = PendingIntent.getActivity(getBaseContext(), 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
      }

      String notificationChannelId = "com.twok.javaproject";
      String channelName = "location Service";

      NotificationChannel channel = new NotificationChannel(notificationChannelId, channelName, NotificationManager.IMPORTANCE_HIGH); // [IMPORTANCE_HIGH 중요도 높음 설정]
      channel.setLightColor(Color.BLUE);

      channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);

      NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      manager.createNotificationChannel(channel); // [채널 생성]

      Notification.Builder notificationBuilder = new Notification.Builder(this, notificationChannelId);
      notificationBuilder.setContentIntent(pendingIntent);
      Notification notification = notificationBuilder
              .setOngoing(true)
              .setSmallIcon(R.mipmap.noti)
              .setContentTitle(getString(R.string.app_title))
              .setContentText(getString(R.string.location_service))
              .setCategory(Notification.CATEGORY_SERVICE)
              .build();

      // [분기 처리 포그라운드 서비스 호출]
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
          startForeground(1, notification, FOREGROUND_SERVICE_TYPE_LOCATION);
      }
      else{
          startForeground(1, notification);
      }

  }


2. 포그라운드 서비스 사용 전) 위치 권한 항상 허용 필요 알림 및 사용자가 해당 기능이 어디에 사용 되는지 알림 팝업창 표시

  >> 해당 기능을 사용하기 위해서는 앱 설정 위치 권한을 항상으로 변경 및 배터리 절전 예외 허용을 해주세요.

  >> 해당 기능은 앱 사용 시 안전 위치 서비스 활용에 사용됩니다.

  >> [확인] 클릭 시 배터리 절전 예외 요청 및 앱 설정 화면 이동 수행

  >> 참고 : 배터리 예외 설정은 포그라운드 서비스 시 앱 화이트 리스트 등록 위함


3. 구글 개발자 콘솔에 포그라운드 서비스 동작 동영상 파일 수정 제출

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

[안드로이드 디벨로퍼]

https://developer.android.com/about/versions/14/changes/fgs-types-required?sjid=16763442678436777799-AP&hl=ko


[안드로이드 14 이상 포그라운드 사용 예시 코드]

https://blog.naver.com/kkh0977/223870880221?trackingCode=blog_bloghome_searchlist


[안드로이드 포그라운드 정책 리젝 관련]

https://rocketnoning.tistory.com/57

--------------------------------------------------------------------------
 
728x90
반응형