봄날은 갔다. 이제 그 정신으로 공부하자

Android 13 - 2편 (android 13 이상을 타겟팅하는 앱) 본문

학습

Android 13 - 2편 (android 13 이상을 타겟팅하는 앱)

길재의 그 정신으로 공부하자 2022. 7. 15. 11:11

앱이 Android 13 이상을 타겟팅한다면 이러한 동작을 올바르게 지원하도록 앱을 수정해야 합니다.

 

Privacy

알림 권한이 포그라운드 서비스 모양에 영향을 줌

사용자가 알림 권한을 거부하는 경우 FGS(Foreground Services) 작업 관리자에서는 이러한 포그라운드 서비스와 관련된 알림을 볼 수 있지만 "알림창"에서는 알림을 볼 수 없습니다.

 

근처 WIFI 기기의 새 런타임 권한

Android 13(API 수준 33)에서는 WIFI를 통해 근처 액세스 포인트에 대한 기기의 연결을 관리하는 앱을 위해 NEARBY_DEVICES 권한 그룹의 새로운 런타임 권한이 추가 되었습니다.

NEARBY_DEVICES
Protection level: dangerous
Added: API Level 31
Constant value: "android.permission-group.NEARBY_DEVICES"
설명: 주변 블루투스 장치를 검색하고 연결하는 데 필요합니다.
자세한 내용은 아래 링크 참고
https://developer.android.com/about/versions/13/features/nearby-wifi-devices-permission

 

세분화된 미디어 권한

앱이 android13을 타겟팅하는 경우 READ_EXTERNAL_STORAGE 및 WRITE_EXTERNAL_STORAGE 권한 대신 아래 새 권한을 하나 이상 요청해야 합니다.

WRITE_EXTERNAL_STORAGE 권한은 더이상 선언하지 않아도 됩니다.

이전 버전의 Android와 호환성을 유지하려면 아래 코드와 같이 maxSdkVersion을 32로 설정하면서 READ_EXTERNAL_STORAGE 권한을 선언해야 합니다.

<manifest ...>
    <!-- Required only if your app targets Android 13. -->
    <!-- Declare one or more the following permissions only if your app needs
    to access data thats protected by them. -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

    <!-- Required to maintain app compatibility. -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                     android:maxSdkVersion="32" />
    <application ...>
        ...
    </application>
</manifest>

 

백그라운드에서 생체 신호 센서를 사용하려면 새로운 권한이 필요함.

앱이 Android 13을 타겟팅하며 백그라운드에서 실행되는 동안 생체 신호 센서 정보에 액세스해야 하는 경우, 기존 BODY_SENSORS 권한에 더해 새로운 BODY_SENSORS_BACKGROUND 권한을 선언해야 합니다.

BODY_SENSORS_BACKGROUND
Protection level: dangerous
Added: API Level 33
Constant value: "android.permission.BODY_SENSORS_BACKGROUND"
설명: 애플리케이션이 사용자가 심박수와 같이 신체 내부에서 일어나는 일을 측정하는 데 사용하는 센서의 데이터에 액세스할 수 있도록 합니다. 이 권한을 요청하는 것만으로는 신체 센서에 액세스할 수 없으므로 이 권한을 요청하는 경우 BODY_SENSORS도 같이 요청해야 합니다. 이것은 기록된 설치 프로그램이 권한을 허용 목록에 추가할 때까지 앱에서 보유할 수 없는 엄격하게 제한된 권한입니다.

 

Security

인텐트 필터가 일치하지 않는 인텐트를 차단함.

앱이 Android 13 이상을 타겟팅하는 다른 앱의 내보낸 구성요소로 인텐트를 전송하면 이 인텐트는 수신 앱의 <intent-filter> 요소와 일치하는 경우에만 전달되고 일치하지 않는 인텐트는 모두 차단됩니다.

인텐트 일치가 적용되지 않는 예외는 다음과 같습니다.

  • 인텐트 필터를 선언하지 않는 구성요소에 전달된 인텐트
  • 동일한 앱 내에서 발생한 인텐트
  • 시스템에서 발생한 인텐트. 즉, '시스템 UID'(uid=1000)에서 전송되는 인텐트입니다. 시스템 앱에는 android:sharedUserId를 android.uid.system으로 설정하는 앱과 system_server가 포함됩니다.
  • 루트에서 발생한 인텐트

수신 앱이 Android 13 이상으로 업그레이드되는 경우 외부 앱에서 발생한 모든 인텐트는 발신 앱의 타겟 SDK 버전과 관계없이, 선언된 <intent-filter> 요소와 일치하는 경우에만 내보낸 구성요소로 전달됩니다.

 

Performance and battery

배터리 리소스 사용률

사용자가 Android 13을 타겟팅하는 앱의 백그라운드 배터리 사용량을 "제한"하면 시스템이 브로드캐스트와 관련된 몇가지 제한사항을 적용합니다.  새로운 제한사항에 대해서는 아래 링크 참조

https://developer.android.com/about/versions/13/changes/battery#restricted-background-battery-usage

 

User experience

PlaybackState에서 파생된 미디어 컨트롤

Android 13(API 수준 33) 이상을 타겟팅하는 앱의 경우 시스템은 PlaybackState 작업에서 미디어 컨트롤을 가져옵니다. 이를 통해 시스템은 스마트폰과 태블릿 기기 사이에 기술적으로 일관된 더 풍부한 컨트롤 세트를 표시할 수 있고 Android Auto 및 Android TV와 같은 다른 Android 플랫폼에서 미디어 컨트롤이 렌더링되는 방식과도 일치할 수 있습니다.

아래 그림은 스마트폰과 태블릿 기기에서 각각 어떻게 표시되는지 보여줍니다.

 

Android 13 전에는 시스템이 MediaStyle 알림에서 작업이 추가된 순서대로 최대 5개의 작업을 표시했습니다. 압축 모드(예: 축소된 빠른 설정)에서는 setShowActionInCompactView()로 지정된 작업이 최대 3개까지 표시되었습니다.

Android 13부터 시스템은 다음 표에 설명된 대로 PlaybackState 기반으로 작업 버튼을 최대 5 표시합니다. 압축 모드에서는 처음 3개의 작업 슬롯만 표시됩니다. Android 13 타겟팅하지 않거나 PlaybackState 포함하지 않는 앱의 경우 시스템은 MediaStyle 알림에 추가된 Action 목록에 기반하여 컨트롤을 표시합니다.

Comments