HJSoft

MAUI [다중 선택] 사진 업로드에서 iOS와 Android의 위치정보(EXIF) 차이 정리

HJSoft 맞춤형솔루션 2026. 2. 4. 10:31

MAUI로 사진 업로드 + 위치정보(GPS) 추출 기능을 구현하다 보면,

플랫폼 간 차이 때문에 예상보다 많은 시간을 소모하게 됩니다.

특히 다중 선택 업로드에서

  • iOS는 잘 되는데
  • Android에서는 개별 선택은 되지만, 다중 선택 시 위치정보가 사라지는 상황을 많이 겪게 됩니다.

이번 글에서는 실제 구현 과정에서 확인한 iOS vs Android의 차이점을 정리해 봅니다.


1. 권한 모델 차이

iOS 권한 구조

iOS는 권한 모델이 엄격하지만 명확합니다.

  • 사진 접근 권한 (Photos)
  • 위치 권한 (Location)

이 둘은 완전히 분리되어 있습니다.

중요한 점은,

📌 사진의 위치 메타데이터(EXIF GPS)는

위치 권한이 없어도 사진 접근 권한만으로 읽히는 경우가 많다는 점입니다.

즉,

  • 사용자가 사진 접근만 허용
  • 사진에 GPS가 포함되어 있다면
  • → EXIF의 위치정보를 비교적 안정적으로 읽을 수 있습니다.

Android 권한 구조

Android는 버전별로 권한 모델이 계속 바뀌었습니다.

* Android 12 이하

- READ_EXTERNAL_STORAGE

*Android 13 이상

- READ_MEDIA_IMAGES

- READ_MEDIA_VIDEO

여기에 더해,

  • 위치 정보
  • 미디어 접근 방식
  • 스토리지 정책

복합적으로 얽혀 있습니다.

📌 결과적으로 Android에서는

“사진은 읽히는데, 위치 메타데이터는 안 읽히는”

상황이 쉽게 발생합니다.


2. 다중 선택 동작 차이 (가장 큰 문제 구간)

iOS – 안정적인 다중 선택

iOS에서는 Photos Picker 기반의 다중 선택이 OS 레벨에서 매우 안정적입니다.

  • 단일 선택 / 다중 선택 모두
  • 선택된 이미지의 메타데이터 접근이 일관됨
  • 스트림 기반 접근에서도 EXIF(GPS) 유지 확률이 높음

👉 실무 체감:

“권한만 제대로 주면, 다중 선택에서도 위치정보가 잘 따라온다”


Android – 기기/버전/제조사 의존

Android는 상황이 다릅니다.

  • 제조사별 갤러리 앱
  • Android 버전
  • 클라우드 사진(Google Photos)
  • ContentResolver 접근 방식

이 조합에 따라 결과가 달라집니다.

특히 문제되는 지점은:

  • 다중 선택 시
  • ContentResolver.OpenInputStream() 방식으로 접근하면
  • EXIF 읽기가 실패하거나 GPS 정보가 null로 나오는 경우

📌 즉,

개별 선택 → 위치 있음

다중 선택 → 위치 없음

이런 현상이 Android에서 매우 흔합니다.


3. 위치 메타데이터(EXIF) 전달 차이

iOS EXIF 특성

  • GPS 메타데이터 전달이 비교적 잘 유지됨
  • 단, 사용자 설정에서 “위치 제거” 옵션이 켜진 경우
  • EXIF 자체에 GPS가 없음

즉, iOS는

  • 있으면 잘 준다
  • 없으면 명확하게 없다

라는 성향입니다.


Android EXIF 특성

Android는 훨씬 복잡합니다.

  • 파일 접근 방식에 따라 EXIF 누락
  • 클라우드 경유 이미지의 경우 GPS 제거 가능
  • 제조사 갤러리 앱이 메타데이터를 재가공하는 경우 존재

특히,

  • URI 기반 접근
  • 스트림 복사 과정
  • 에서 EXIF가 손실되는 사례가 많습니다.

4. 실무에서 느낀 결정적 차이

정리하면 아래 한 줄로 요약됩니다.

✅ iOS

  • 권한만 확보하면
  • 다중 선택 포함
  • 위치 메타데이터가 안정적으로 읽힘

⚠️ Android

  • 권한만으로는 부족
  • 파일 접근 방식 중요
  • 기기/버전/갤러리 앱 영향 큼
  • 다중 선택 시 EXIF 손실 가능성 높음

5. MAUI에서의 현실적인 대응 전략

실무적으로는 다음 접근이 안전합니다.

* iOS

- EXIF 기반 위치정보 신뢰 가능

*Android

- EXIF는 “있으면 쓰고, 없을 수 있음” 전제로 설계

필요하다면: 촬영 시점에 위치를 직접 기록, 업로드 시 별도 위치 권한으로 GPS 재취득

📌 결론적으로

Android에서는 “사진 = 위치”라는 가정을 하면 안 됩니다.


MAUI는 크로스 플랫폼이지만,

사진 / 위치 / 권한 영역은 절대 동일하게 동작하지 않습니다.

특히 다중 선택 업로드 + 위치정보

  • iOS 기준으로 설계하면 Android에서 반드시 문제가 터집니다.

이번 경험처럼,

“개별 등록은 되는데, 다중 선택에서만 위치가 사라진다”

라는 증상은 Android의 구조적 특성에 가깝습니다.

이 글이

MAUI로 사진 업로드 기능을 구현하시는 분들께 도움이 되길 바랍니다.