제목 : 모바일 안드로이드11 SDK30 보안정책에 따른 앱 조치사항 안내 Android11 (API 30) 패키지 가시성 제한 관련

내용 : 1)이슈사항 
    Android11(API 30) 버전의 가시성 정책이 아래와 같이 변경되며, Android11(API 30)버전부터는 오류가 발생할 수 있습니다. 가맹점에서 외부앱에 대한 패키지정보를 활용하는 형태에 따라 다음과 같이 조치가 필요할 수 있습니다.
    1) Android11 이전버전 OS에서는 앱이 PackageManager에서 제공하는 
    메소드(querylntentActivites(), getlnstalledApplications(), getlnstalledApplications(),
    resolveActivity() 등)를 사용하여 시스템에 설치된 앱을 확인합니다.
    2) Android11(API 30)부터는 패키지 가시성 제한으로 조회할 수 없게 되어 결제창 등에서
    사용하는 외부앱 (앱카드, 백신, 삼성페이, 페이코 등) 호출 시 패키지 정보로 앱 설치 여부를 
    확인하고 있을 경우 설치가 되어 있어도 마켓으로 이동하는 문제가 발생할 수 있습니다. 
    2)참고링크 
    - http://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을 targetSdkVersion30 이상으로 변경 및 개발 예정인 가맹점
 3) 적용일정 : 2021년 11월 1일
 4) 방안 : 1안과 2안 중 선택

 1안) 요소에 패키지 정의 
 - AndroidManifest.xml 파일 수정
 - 매니페스트 파일의 요소에 패키지를 정의하면 패키지의 가시성이 확보됩니다.
 ▶장점 : 소스수정 없이 매니페스트파일만 수정
                  (INIpayMobile 제휴사 안드로이드 패키지명. pdf 참조)
 ▶단점 : 패키지목록 관리 필요(카드사에 신규 앱 추가 시 앱에 패키지 추가 등록 필요)
                  예) 쇼핑몰 APP에서 호출할 수 있는 모든 APP의 패키지 정의
<queries>
<package android:name=”com.shcard.smartpay” />  <!--신한카드-->
<package android:name=”com.kcard.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 인증이 이루어지는 결제를 
테스트하여 반드시 이상유무를 확인 후 특이사항이 있다면 반드시 가맹점 담당자 또는 기술지원으로
연락 부탁드립니다.
항상 저희 주식회사 케이지이니시스 서비스를 이용해 주셔서 감사합니다.
본 메일은 회사의 주요 정책 변경, 약관변경, 결제내역 알림 등 메일 수신동의 여부와 관계없이 발송되는 발신전용 메일입니다.
자세한 문의사항은 고객센터 1588-4954로 문의하시기 바랍니다.
KG이니시스

04517 서울특별시 중구 통일로 92 KG타워 14, 15층 (주)케이지이니시스
코스닥 상장법인 035600 | 사업자등록번호 220-81-55597 | 대표전화 1588-4954
Copyright (c) KG INICIS. All Rights Reserved.

http://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 INIpayMobile 제휴사 안드로이드 패키지명.pdf참조