Recode Log

  • tech-blog
  • apps
  • device
  • features

Copyright © [WebKBS]. All rights reserved.

·이용 안내
  • tech-blog
  • apps
  • device
  • features
  1. Home
  2. issues
  3. Expo iOS App Store 리젝 해결 - Apple 지도 실행 옵션 추가하기

Expo iOS App Store 리젝 해결 - Apple 지도 실행 옵션 추가하기

카카오맵만 제공하던 Expo iOS 앱이 Guideline 4로 리젝된 원인과, ActionSheetIOS와 Linking을 사용해 Apple 지도 선택지를 추가한 방법을 정리합니다.

  • expo ^57.0.15
  • react-native 0.86.0
2026년 8월 28일

Expo로 만든 iOS 앱을 App Store에 처음 제출한 뒤 Guideline 4 - Design 항목으로 리젝되었습니다.

앱의 축제 상세 화면에는 카카오 지도를 표시하고 길찾기 버튼도 제공하고 있었습니다. 지도 기능 자체는 정상적으로 동작했지만, 버튼을 누르면 카카오맵만 열 수 있다는 점이 문제였습니다.

이번 글에서는 실제 리젝 사유와 함께, 기존 카카오 지도 기능은 유지하면서 iOS 기본 Apple 지도를 선택할 수 있도록 수정한 방법을 정리합니다.

App Store 리젝 내용

App Review에서 전달한 내용은 다음과 같습니다.

The app's location feature is not integrated with the built-in mapping functionality, which limits users to a third-party maps app.

해결 방법도 명확하게 안내되어 있었습니다.

Revise the app to give users the option to launch the native Apple Maps app.

앱에서 서드파티 지도를 사용하는 것 자체가 문제는 아니었습니다. 사용자가 카카오맵만 이용하도록 제한되어 있고, iOS에 기본으로 설치된 Apple 지도를 실행할 선택지가 없다는 점이 리젝 사유였습니다.

`Apple App Review Guidelines - Design`

기존 구현의 문제점

기존에는 축제 장소의 위도와 경도를 카카오맵 URL에 넣은 뒤 Linking.openURL로 실행하고 있었습니다.

KakaoMap.tsx
const openDirections = () => {
  const url = `https://map.kakao.com/link/map/${encodeURIComponent(
    name,
  )},${latitude},${longitude}`;
 
  Linking.openURL(url);
};

축제 상세 화면의 길찾기 버튼을 누르면 항상 이 함수가 실행되기 때문에, iPhone에서도 카카오맵 웹 페이지 또는 카카오맵 앱만 열렸습니다.

처음에는 앱 내부에 카카오 지도가 이미 표시되고 있으니 충분하다고 생각했습니다. 하지만 App Review의 관점에서는 지도 기능이 특정 서드파티 서비스에만 연결된 상태였습니다.

해결 방향

화면에 Apple 지도와 카카오맵 버튼을 각각 추가할 수도 있지만, 기존 지도 위에 버튼이 두 개 생기면 UI가 복잡해집니다.

그래서 기존 길찾기 버튼은 그대로 두고 다음과 같이 동작하도록 변경했습니다.

  • iOS: 기본 액션 시트에서 Apple 지도와 카카오맵 중 하나를 선택
  • Android: 기존처럼 카카오맵을 바로 실행

이 방식이면 기존 디자인을 크게 변경하지 않으면서도, App Review가 요청한 Apple 지도 실행 옵션을 명확하게 제공할 수 있습니다.

Apple 지도 URL 만들기

Apple 지도는 별도의 패키지를 설치하지 않아도 Map Link를 열어 실행할 수 있습니다.

Apple Maps URL
https://maps.apple.com/?daddr=37.5665,126.9780&dirflg=d

사용한 파라미터는 다음과 같습니다.

파라미터설명
daddr목적지의 위도와 경도
dirflg=d자동차 길찾기

출발지인 saddr를 생략하면 Apple 지도에서 현재 위치를 출발지로 사용합니다.

`Apple Map Links 공식 문서`

Apple 지도 실행 함수는 다음과 같이 작성했습니다.

KakaoMap.tsx
const openAppleDirections = () => {
  const url = `https://maps.apple.com/?daddr=${latitude},${longitude}&dirflg=d`;
  void Linking.openURL(url);
};

maps:// 같은 커스텀 스킴 대신 https://maps.apple.com 링크를 사용했습니다. Apple의 Map Link는 일반 HTTP 링크 형식으로 작성할 수 있고, iOS에서는 Apple 지도 앱으로 연결됩니다.

iOS에서 지도 앱 선택창 표시하기

React Native의 ActionSheetIOS와 Platform을 추가합니다.

KakaoMap.tsx
import {
  ActionSheetIOS,
  Linking,
  Platform,
  Pressable,
  StyleSheet,
  View,
} from "react-native";

기존 카카오맵 실행 함수와 Apple 지도 실행 함수를 분리한 뒤, openDirections에서 플랫폼에 따라 동작을 나눴습니다.

KakaoMap.tsx
const openAppleDirections = () => {
  const url = `https://maps.apple.com/?daddr=${latitude},${longitude}&dirflg=d`;
  void Linking.openURL(url);
};
 
const openKakaoMap = () => {
  const url = `https://map.kakao.com/link/map/${encodeURIComponent(
    name,
  )},${latitude},${longitude}`;
  void Linking.openURL(url);
};
 
const openDirections = () => {
  if (Platform.OS !== "ios") {
    openKakaoMap();
    return;
  }
 
  ActionSheetIOS.showActionSheetWithOptions(
    {
      options: ["취소", "Apple 지도에서 길찾기", "카카오맵에서 보기"],
      cancelButtonIndex: 0,
      title: "지도 앱 선택",
    },
    (buttonIndex) => {
      if (buttonIndex === 1) openAppleDirections();
      if (buttonIndex === 2) openKakaoMap();
    },
  );
};

iOS에서 길찾기 버튼을 누르면 ActionSheetIOS가 열리고 다음 옵션이 표시됩니다.

  1. 취소
  2. Apple 지도에서 길찾기
  3. 카카오맵에서 보기

Android에는 ActionSheetIOS가 없으므로 Platform.OS를 먼저 확인하고 기존 카카오맵 함수를 바로 실행합니다.

화면에 Apple 지도 버튼을 항상 노출하지 않더라도, 사용자가 길찾기 버튼을 눌렀을 때 Apple 지도를 명확하게 선택할 수 있으면 됩니다.

버튼 문구도 함께 변경하기

카카오 지도 API 키가 없을 때 표시하는 대체 버튼에는 기존에 카카오맵에서 길찾기라는 문구를 사용하고 있었습니다.

하지만 iOS에서는 버튼을 누른 뒤 Apple 지도도 선택할 수 있으므로, 특정 지도 앱을 가리키지 않는 길찾기로 변경했습니다.

KakaoMap.tsx
<Pressable onPress={openDirections} style={styles.fallback}>
  <Ionicons name="navigate" size={16} color={colors.primary} />
  <AppText style={styles.fallbackText} weight="semibold">
    길찾기
  </AppText>
</Pressable>

지도 위에 표시하는 기존 버튼도 onPress={openDirections}를 그대로 사용하므로 별도의 UI 변경은 필요하지 않았습니다.

`Expo - Linking into other apps`

적용 후 확인할 내용

수정 후에는 실제 iPhone 또는 iOS 빌드에서 다음 항목을 확인합니다.

  • 축제 상세 화면의 위치 영역이 정상적으로 표시되는지
  • 길찾기를 눌렀을 때 지도 앱 선택창이 나타나는지
  • Apple 지도에서 길찾기를 선택하면 목적지가 올바르게 열리는지
  • 카카오맵에서 보기도 기존처럼 동작하는지
  • Android에서는 지도 앱 선택창 없이 카카오맵이 바로 열리는지

특히 App Review에서는 iPhone으로 기능을 확인하므로, Apple 지도 선택지가 실제 빌드에서도 보이는지 확인하는 것이 중요합니다.

정리

  • iOS 앱의 지도 기능을 카카오맵 같은 서드파티 앱으로만 연결하면 Guideline 4로 리젝될 수 있습니다.
  • 기존 서드파티 지도를 제거할 필요는 없고, 사용자가 Apple 지도를 실행할 수 있는 선택지를 추가하면 됩니다.
  • https://maps.apple.com Map Link와 Linking.openURL을 사용하면 별도 지도 패키지 없이 Apple 지도를 열 수 있습니다.
  • ActionSheetIOS를 사용하면 기존 화면 디자인을 유지하면서 지도 앱 선택 기능을 제공할 수 있습니다.
  • Android는 Platform.OS로 분기하여 기존 동작을 그대로 유지할 수 있습니다.

처음에는 카카오 지도와 길찾기가 모두 정상적으로 동작해 리젝 사유가 예상 밖이었습니다. 하지만 Apple이 요구한 것은 지도 구현 전체를 교체하는 것이 아니라, iOS 사용자가 기본 지도 앱을 선택할 수 있도록 하는 것이었습니다.

기존 기능을 유지한 채 선택지만 추가하면 비교적 간단하게 해결할 수 있는 리젝 사례였습니다.


다음글

Expo Prebuild 후 Xcode Localization이 초기화되는 문제 해결


관련 태그

  • expo
  • react-native
  • ios
  • app-store
  • app-review
  • apple-maps