inflearn logo
강의

講義

知識共有

ハンズオンリアクトネイティブ

9.8 :: 写真のリストを取得する

이미지 목록을 받아오는 부분에서 IOS 에서 문제가 발생합니다.

解決済みの質問

129

dvdve

投稿した質問数 21

0

안드로이드의 경우 정상적으로 사진이 받아와 지는데

 

IOS에서는 아래와 같은 경고와 함께 오류가 발생합니다.

 

오류.png.webp

 

https://github.com/expo/expo/issues/28772

이러한 동일한 오류가 많이 발생하는거 같은데 해결 방법을 모르겠어서 질문드립니다ㅠ

 

깃허브 주소는

https://github.com/dvrakry/rn-photo

입니다 감사합니다!

 

react-native

回答 2

1

beomjun

안녕하세요,

 

iOS에서 이미지를 처리할 때는, getAssetInfoAsync 함수를 이용해서 localUri를 받아와서 사용해야 합니다.

https://docs.expo.dev/versions/latest/sdk/media-library/#medialibrarygetassetinfoasyncasset-options

 

48 라인 코드를 다음과 같이 수정하세요.

https://github.com/dvrakry/rn-photo/blob/master/src/screens/ImagePickerScreen.js#L48

 

      const processedAssets = await Promise.all(
        assets.map(async (asset) => {
          if (asset.uri.startsWith('ph://')) {
            const assetInfo = await MediaLibrary.getAssetInfoAsync(asset);
            return {
              ...asset,
              uri: assetInfo.localUri || asset.uri,
            };
          }
          return asset;
        })
      );

      setPhotos(processedAssets);

 

당연히 위쪽에 import도 추가해주셔야 합니다.

 

관련된 내용은 "9.14 file 경로 받아오기"에서 확인할 수 있습니다.

감사합니다.

0

dvdve

해결됐습니다 감사합니다 선생님!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

dvdve님께서 경험하신 오류는 iOS에서 발생하는 흔한 문제로 ph://로 시작하는 사진 라이브러리 URI를 처리할 수 없다는 것을 의미합니다. 이 문제는 사진을 가져올 때 iOS의 특별한 파일 접근 방식으로 인해 발생하며, Android에서는 같은 문제가 발생하지 않죠.

해결 방법:

  1. 라이브러리 사용:

    • expo-image-picker 또는 react-native-image-picker와 같은 라이브러리를 사용하시는 것이 좋습니다. 이들 라이브러리는 내부적으로 ph:// URI를 처리할 수 있는 기능을 가지고 있습니다.
  2. expo-media-library:

    • expo-media-library를 사용하여 getAssetInfoAsync를 통해 이미지 정보를 가져오고, localUri를 활용해 대체 경로로 이미지를 처리할 수 있습니다.
  3. iOS 권한 설정:

    • iOS에서는 사진 라이브러리에 접근하기 위한 권한 설정이 필요합니다. Info.plist 파일에서 해당 권한을 명시했는지 확인하세요.

관련된 사례로, 다음의 유사한 질문 답변들이 있습니다:
- “SDK 51 관련 추가 질문입니다.”에서 expo-media-library의 사용을 제안하고 있습니다.
- expo-image-picker에 대한 공식 문서를 통해 더 자세한 설정 방법을 확인하실 수 있습니다.

이미지 접근 문제는 주로 라이브러리 사용과 권한 설정에서 비롯되므로 관련 문서와 위의 링크들을 확인하시면서 설정을 점검해 보시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

expo 가 업데이트 되면서 문제가 발생한거같습니다.

0

342

2

navigation.replace() 작동하지 않습니다.

0

147

2

UpdateProfileScreen 에서 사진 버튼 클릭시 오류발생.

0

132

2

닉네임 수정 후 확인 버튼을 누를시 한글자만 출력됩니다.

0

177

2

모달창에서 버튼이 출력되지 않습니다.

0

104

2

로그인 에러 출력시 default값만 나옵니다.

0

144

2

안드로이드 기기에서 SignUp 화면 관련 질문드립니다.

0

85

2

간단한 질문 하나만 드리겠습니다!

0

76

2

text.trim() 부분에서 오류가 발생합니다.

0

124

2

profile 화면에서 내가 쓴 글이 나타나지 않습니다.

0

140

2

글 저장시 파일 저장위치 관련 질문드립니다!

0

111

2

구글 지도 API 관련 오류로 질문드립니다!

0

142

1

HeaderRight 버튼이 작동하지 않습니다.

0

88

2

사진이 나오지 않는 문제로 질문드립니다.

0

113

2

defaultProps 관련 문의 드립니당

0

244

2

안드로이드 기기에서 헤더 부분이 작동이 안됩니다.

0

87

2

[TypeError: unsubscribe is not a function (it is undefined)] 오류 발생으로 질문드립니다.

0

108

2

7.15 :: 상태 변수와 컴포넌트 언마운트 관련 질문드립니다!

0

98

2

SIgnIn SignUp 화면이 안나옵니다.

0

126

2

마지막 useEffect 부분 질문드립니다.

0

100

2

ImagPickerScreen을 만드는 과정에서 문제가 발생하여 글을 남깁니다.

0

208

2

eslint.config.mjs 파일에 plugin 설정방법

0

747

1

ESLint.json 파일이 생성되지 않습니다.

0

236

2

[환경변수 설정]

0

272

1