본문 바로가기

개발/React & React Native

[React Native/iOS] 리액트 네이티브 환경에서 iOS Privacy Manifest 정책 대응하기

728x90

 

iOS Privacy Manifest

애플이 WWDC23에서 개인정보 보호를 위해 API 오용을 방지하기 위해 사용하는 이유를 개발자가 명시하도록 발표했다. 앱이 앱 사용자의 개인정보를 보호하도록 하는 조치이다.

2023년 가을부터 사유를 명시해야 하는 API(타사 SDK 포함)를 사용하는 새로운 앱 또는 앱 업데이트를 App Store Connect에 업로드하는 경우, 앱의 개인정보 보호 목록에 승인된 사유를 제공하지 않으면 알림을 받게 된다.

2024년 봄부터 App Store Connect에 새로운 앱 또는 앱 업데이트를 업로드하려면 앱의 개인정보 보호 목록에 앱이 API를 사용하는 방식을 정확하게 반영하는 승인된 사유를 포함하고 있어야 한다.

 

 

 

현재 iOS 앱을 업데이트하는 경우, PrivacyInfo가 없다면 발송되는 메일에는 다음과 같은 내용이 있다.

 

현재로서는 별도의 조치가 필요하지 않지만 2024년 5월 1일부터 새 앱이나 앱 업데이트를 업로드할 때 앱의 개인 정보 보호 매니페스트에 NSPrivacyAccessedAPITypes 배열을 포함하여 앱 코드에서 사용되는 이러한 API에 대해 승인된 이유를 제공해야 합니다.
While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code.

 

 

 

참고 링크들

App Store의 개인정보 보호에 대한 새로운 기능

https://developer.apple.com/kr/news/?id=av1nevon

 

App Store의 개인정보 보호에 대한 새로운 기능 - 최신 뉴스 - Apple Developer

Apple은 개인정보 보호가 모든 사람이 누릴 수 있는 기본 권리라고 믿습니다. 그렇기 때문에 Apple은 사용자가 개발자의 개인정보 보호 및 데이터 수집과 공유 절차를 이해하고, 정보 공유에 대한

developer.apple.com

이제 허용된 사유를 명시해야 하는 API 목록을 사용할 수 있습니다

https://developer.apple.com/kr/news/?id=z6fu1dcu

 

이제 허용된 사유를 명시해야 하는 API 목록을 사용할 수 있습니다 - 최신 뉴스 - Apple Developer

Apple은 Apple 플랫폼에서 사용자의 개인 정보를 보호하기 위해 최선을 다하고 있습니다. Apple은 지문 채취를 통해 사용자의 기기에 대한 데이터를 수집하는 데 오용될 수 있는 일부 API 세트가 있음

developer.apple.com

WWDC23 - Get started with privacy manifests

https://developer.apple.com/videos/play/wwdc2023/10060/?time=88

 

Get started with privacy manifests - WWDC23 - Videos - Apple Developer

Meet privacy manifests: a new tool that helps you accurately identify the privacy practices of your app's dependencies. Find out how...

developer.apple.com

 

 

 

 

 

API 목록

Privacy Manifest를 정의해야 하는 API 목록은 다음 링크에 정리되어 있다.

https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api

 

Describing use of required reason API | Apple Developer Documentation

Ensure your use of covered API is consistent with policy.

developer.apple.com

 

 

 

728x90

 

 

React Native 라이브러리 처리

보통 React Native 환경에서는 해당 APIs를 직접 호출할 일은 없다.

하지만 Xcode에서 검색해보면 라이브러리에서 사용하는 API가 있으며 특히 User defaults APIs의 경우 많은 라이브러리에서 API를 호출하는 걸 확인할 수 있다.

 

외부 SDK는 해당 SDK의 개발자가 직접 생성 및 서명해야 하기 때문에 자체적인 처리는 불가능하고, 라이브러리가 대응될 때까지 대기 필요하다.

 

 

많이 사용하는 라이브러리 중 하나인 @react-native-firebase 의 경우에도, User defaults APIs에 포함된 UserDefaults를 사용하고 있다.

이를 위해 @react-native-firebase는 코어 라이브러리 19.0.0 버전에 다음과 같은 업데이트를 진행했다.

 

해당 내용에서 Privacy Manifest와 관련된 항목은 다음과 같다.

  • app, sdks: firebase-ios-sdk 10.21.0 requires cocoapods 1.12+ in order to support the new Apple-mandated privacy manifests. Please ensure you are using verson 1.12 or greater of cocoapods

 

이렇게 라이브러리에서 PrivacyInfo 파일을 작성 및 업데이트해주어야 앱 내에서도 해결이 가능하다.

 

혹은, react-native-device-info처럼 앱 내에서 이용하지 않는 라이브러리 기능에서 사용 중인 API를 제거하는 방법을 안내하기도 한다.

https://github.com/artsy/eigen/pull/9988/commits/d0bdd18b0d58ff9d4cf4b095fa61d7b723a9e464

 

chore: add patch to avoid required apis usage in device info by brainbicycle · Pull Request #9988 · artsy/eigen

This PR resolves PHIRE-726 Description Adds a patch to remove calls to apis that require privacy manifest while this discussion is underway: react-native-device-info/react-native-device-info#1622...

github.com

 

react-native-device-info 같은 케이스는 라이브러리 코드에서 제거 후 patch-package를 사용해 적용할 수 있다.

 

 

 

[React Native] patch-package를 사용해 라이브러리 커스텀하기

기본적으로 React Native 프로젝트의 .node-modules는 gitignore 에 등록되어 있다. 따라서 라이브러리의 내부 코드를 수정하면 협업 개발자들과 다른 시스템이 동작하게 된다. 이를 방지하기 위해 patch-pac

ramveloper.tistory.com

 

300x250