안녕하세요.
앱 추적 요청에 관한 이전 포스팅에 이어서 내용을 이어가겠습니다.
시뮬레이터에서는 되는데, 실제 기기에서는 안되는 이유를 몰라서 4시간동안 삽질했습니다..
커밋 메시지의 빡침이 느껴지시나요;
알고보니, iOS 15.0 이상에서는 앱 상태가 반드시 'acitve'일 때만 팝업이 뜨도록 변경되었습니다 ^^;;;
그럼 바로 알아보도록 하겠습니다.
이전 포스팅에 사용한 라이브러리는 앱 추적 요청에 관한 것만 있었는데요, 이번에 사용할 라이브러리는 거의 모든 권한에 대한 기능이 들어있습니다. (star 수도 더 많네요 ㅎㅎ)
https://github.com/zoontek/react-native-permissions
위 라이브러리를 사용할 예정입니다. 깃헙 설명만 봐도 되긴하지만, 조금 수정이 필요한 부분이 있습니다.
1. 라이브러리를 설치합니다.
npm install --save react-native-permissions
2. Podfile을 수정합니다.
밑에 두 줄을 Podfile에 직접 추가한 후에, pod install을 실행해주세요.
target 'YourProjectName' do
...
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-AppTrackingTransparency', :path => "#{permissions_path}/AppTrackingTransparency"
...
end
3. App.js에서 아래 코드를 추가합니다.
(따로 최상단파일을 설정하셨으면 거기서 추가하면 됩니다.)
설치한 라이브러리 import 합니다.
import {request, PERMISSIONS} from 'react-native-permissions';
'react-native'에서 아래 두개도 import합니다.
import { AppState, Platform } from 'react-native';
아래 코드를 App함수(또는 클래스) 내에 추가합니다.
저는 함수형 코드를 사용합니다. 클래스형 코드를 사용하시는 분들은 아래 코드와 조금 다를 수 있습니다.
useEffect(() => {
const listener = AppState.addEventListener('change', (status) => {
if (Platform.OS === 'ios' && status === 'active') {
request(PERMISSIONS.IOS.APP_TRACKING_TRANSPARENCY)
.then((result) => console.warn(result))
.catch((error) => console.warn(error));
}
});
return () => {listener.remove()}
}, []);
이전 포스팅과 다르게 앱의 상태를 판단하는 코드가 추가되었습니다.
라이브러리의 깃헙에 소개된 코드와는 listener.remove()부분이 조금 다를 거에요. 깃헙에 적힌대로 실행하면 에러가 발생합니다.
result는 5가지 중에 하나로 return됩니다.
- unavailable: 안드로이드 폰이거나 iOS 14 미만 버전임.
- blocked: 추적요청을 거절하였고, 다시 요청할 수 없음.
- denied: 추적 요청으 거절되었지만 다시 요청할 수 있음.
- granted: 추적 요청 허용함.
- limited: 추적 요청을 허용했지만 일부분만 허용함.
Xcode에서 다시 실행해보면...
잘됩니다 ㅠㅠㅠㅠㅠ
앱 키자마자 바로뜨네요 :)
그럼 포스팅 끝!
'React Native > IOS' 카테고리의 다른 글
[React Native] launchScreen에서 image가 안보일 때 (0) | 2022.11.06 |
---|---|
[React Native / iOS] iOS 14이상에서 추적 요청 팝업 띄우기 (일부 앱이 Apple의 SKAdNetwork를 사용하도록 구성되지 않았습니다 해결) (0) | 2022.01.12 |
[React Native] Firebase auth와 애플 로그인 연동하는 방법 (0) | 2022.01.09 |
[iOS] 애플 로그인을 위한 초기 개발환경 세팅 (0) | 2022.01.09 |
[Xcode] iOS 버전 설정하는 방법 (0) | 2022.01.09 |