모바일 안드로이드11 SDK30 보안정책에 따른 앱 조치사항 안내

모바일 안드로이드11 SDK30 보안정책에 따른 앱 조치사항 안내

모바일 안드로이드11 SDK30 보안정책에 따른 앱 조치사항 안내

 


Android11(API 30) 패키지 가시성 제한 관련

 

1. 이슈사항
Android11(API 30) 버전의 패키지 가시성 정책이 아래와 같이 변경되며,
Android11(API 30)버전부터는 오류가 발생할 수 있습니다.
가맹점에서 외부앱에 대한 패키지정보를 활용하는 형태에 따라 다음과 같이 조치가 필요할 수 있습니다.

   1) Android11 이전버전OS에서는 앱이 PackageManager에서 제공하는 메소드(queryIntentActivities(), 
      getInstalledApplications(), getInstalledApplications(), resolveActivity() 등)를사용하여
      시스템에 설치된 앱을 확인합니다.
   2) Android11(API 30)부터는 패키지 가시성 제한으로 조회할 수 없게 되어 결제창 등에서 사용하는
      외부앱(앱카  드, 백신, 삼성페이, 페이코등) 호출시 패키지 정보로 앱설치 여부를 확인하고 있을 경우
      설치가 되어 있어도 마켓으로 이동하는 문제가 발생할 수 있습니다.

2. 참고링크
– https://support.google.com/googleplay/android-developer/answer/10446026?hl=ko
– https://developer.android.com/about/versions/11/privacy/package-visibility?hl=ko
– https://developer.android.com/training/basics/intents/package-visibility?hl=ko#package-name
– https://developer.android.com/training/package-visibility/use-cases?hl=ko

3. 조치방안
쇼핑몰 앱의 요소에 패키지를 정의하거나, 재 정의한 shouldOverrideUrlLoading() 메소드에서
startActivity() 호출시 앱 미설치로 발생하는 ActivityNotFoundException(No Activity found to handle Intent)에
예외처리 로직을 추가합니다.

   1. 적용 OS : Android
   2. 적용대상 : Android App을 targetSdkVersion 30 이상으로 변경 및 개발 예정인 가맹점
   3. 적용일정 : 2021년 11월 1일
   4. 방안 : 1안과 2안중 선택

1안) 요소에 패키지 정의
   –  AndroidManifest.xml 파일수정
   –  매니페스트 파일의 요소에 패키지를 정의하면 패키지의 가시성이 확보됩니다

   ▶ 장점: 소스수정 없이 매니페스트파일만 수정
       (https://www.inicis.com/2021/1025/inipay_mobile.pdf 참조)
   ▶ 단점: 패키지목록 관리 필요(카드사에 신규앱 추가 시 앱에 패키지 추가등록 필요)
       예) 쇼핑몰 APP에서 호출할 수 있는 모든 APP의 패키지 정의

<queries>
<package android:name=”com.shcard.smartpay” /> <!–신한카드–>
<package android:name=”com.kbcard.cxh.appcard” /> <!–국민카드–>
<package android:name=”kr.co.samsungcard.mpocket” /> <!–삼성카드–>
<!—기타등등… 패키지를추가하세요…. –>
</queries>

 
2안) 앱의 WebViewClient shouldOverrideUrlLoading() 예외처리 로직 추가
  – 재정의한 shouldOverrideUrlLoading() 메소드 로직 수정 필요
  – 앱의 설치여부 확인을 위해 startActivity() 호출 전에 패키지 정보를 조회하는 경우,
    설치여부 확인 로직을 제거하고 바로 startActivity()을 호출
  – startActivity() 호출시 ActivityNotFoundException(Message : No Activity found to handle Intent)이
    발생한 경우 앱이 설치되지 않은 것으로 간주하고 앱 설치를 위해 마켓으로 이동하도록 처리

  ▶ 장점: 패키지 목록 관리 필요 없음
  ▶ 단점: 민감한 Webview 처리로직 수정필요

 
주의
SDK30 Version의 App 배포 전에 반드시 카드사 또는 간편결제 App 인증이 이루어지는 결제를 테스트하여
반드시 이상유무를 확인 후 특이사항이 있다면 반드시 가맹점 담당자 또는 기술지원으로 연락 부탁 드립니다.

기술지원 : ts@kggroup.co.kr