PromleeBlog
sitemap
aboutMe

posting thumbnail
Expo(RN) 앱에서 딥링크를 QR 코드로 만들기 (react-native-qrcode-svg)
Generating QR Code for Deep Links in Expo(RN) Apps (react-native-qrcode-svg)

📅

🚀

들어가기 전에 🔗

오늘은 Expo 앱에서 특정 정보를
QR 코드
형태로 보여주는 방법에 대해 알아보겠습니다.
특히, 이전 글에서 다루었던
딥링크
URL을 QR 코드로 만들어서 사용자들이 쉽게 스캔하여 앱의 특정 화면으로 바로 이동하게 하는 방법을 살펴보겠습니다.
이번 글에서는 Expo 프로젝트에서 QR 코드를 생성하는 데 널리 사용되는
react-native-qrcode-svg
라이브러리를 사용하여, 우리가 만든 딥링크 주소를 어떻게 QR 코드로 변환하고 화면에 표시하는지 쉽고 자세하게 알아보겠습니다.

🚀

라이브러리 설치하기 🔗

QR 코드를 생성하려면 react-native-qrcode-svg와 이 라이브러리가 의존하는 react-native-svg를 함께 설치해야 합니다.
Expo 프로젝트에서는 다음 명령어를 사용하여 설치합니다.
npx expo install react-native-qrcode-svg react-native-svg
expo install 명령어는 Expo 프로젝트 환경에 맞는 최적의 라이브러리 버전을 설치해 줍니다.
npm 또는 yarn 환경은 다음 명령어를 사용합니다.
npm i -S react-native-svg react-native-qrcode-svg
yarn add react-native-svg react-native-qrcode-svg

🚀

QR 코드 생성 및 표시하기 🔗

라이브러리 설치가 완료되었다면, 이제 QR 코드를 화면에 표시하는 컴포넌트를 만들어 보겠습니다.
폴더 구조는 다음과 같이 설정합니다.
expo-app
├── app
│   ├── generateQRScreen.tsx // QR 코드 화면
│   └── ... // 다른 화면들
├── components
│   ├── MyQRCode.tsx // QR 코드 컴포넌트
│   └── ... // 다른 컴포넌트들

1. 기본 사용법 🔗

react-native-qrcode-svg 라이브러리에서 QRCode 컴포넌트를 가져와서 사용합니다.
가장 중요한 속성은 value로, 여기에 QR 코드로 변환할 문자열(URL, 텍스트 등)을 전달합니다.
/components/MyQRCode.tsx
import React from 'react';
import { View, StyleSheet, Text } from 'react-native';
import QRCode from 'react-native-qrcode-svg'; // 라이브러리에서 QRCode 컴포넌트 가져오기
 
interface MyQRCodeProps {
  value: string; // QR 코드로 만들 값 (URL 등)
  size?: number;  // QR 코드 크기 (선택적)
}
 
const MyQRCode: React.FC<MyQRCodeProps> = ({ value, size = 128 }) => {
  if (!value) {
    // value 값이 없을 경우 에러 처리 또는 대체 UI 표시
    return (
      <View style={styles.container}>
        <Text>QR 코드를 생성할 값이 없습니다.</Text>
      </View>
    );
  }
 
  return (
    <View style={styles.container}>
      <QRCode
        value={value} // QR 코드로 변환할 문자열 전달
        size={size}   // QR 코드의 가로, 세로 크기 (기본값 128)
        // --- 추가 옵션들 ---
        // color="black" // QR 코드 색상 (기본값 black)
        // backgroundColor="white" // 배경색 (기본값 white)
        // quietZone={10} // QR 코드 주변의 여백 크기
      />
      <Text style={styles.valueText}>데이터: {value}</Text>
    </View>
  );
};
 
const styles = StyleSheet.create({
  container: {
    alignItems: 'center',
    justifyContent: 'center',
    padding: 20,
  },
  valueText: {
    marginTop: 10,
    fontSize: 12,
    color: '#666',
  },
});
 
export default MyQRCode;

2. 딥링크 URL로 QR 코드 만들기 예시 🔗

이제 이 MyQRCode 컴포넌트를 사용하여 딥링크 주소를 QR 코드로 표시해 보겠습니다.
/app/generateQRScreen.tsx
import React from 'react';
import { View, Text, StyleSheet, SafeAreaView } from 'react-native';
import MyQRCode from '../components/MyQRCode'; // 위에서 만든 QR 코드 컴포넌트
 
export default function GenerateQRScreen() {
  // 예시 딥링크 URL (실제 앱 스킴과 경로에 맞게 수정 필요)
  const deepLinkUrl = 'myawesomeapp://products/detail?productId=777&source=qrcode';
 
  return (
    <SafeAreaView style={styles.safeArea}>
      <View style={styles.container}>
        <Text style={styles.title}>상품 상세 페이지 딥링크 QR 코드</Text>
        <Text style={styles.description}>
          아래 QR 코드를 스캔하면 앱의 상품 상세 페이지(ID: 777)로 이동합니다.
        </Text>
 
        {/* MyQRCode 컴포넌트에 딥링크 URL 전달 */}
        <MyQRCode value={deepLinkUrl} size={200} />
 
      </View>
    </SafeAreaView>
  );
}
 
const styles = StyleSheet.create({
  safeArea: {
    flex: 1,
    backgroundColor: '#fff',
  },
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    padding: 20,
  },
  title: {
    fontSize: 22,
    fontWeight: 'bold',
    marginBottom: 15,
    textAlign: 'center',
  },
  description: {
    fontSize: 14,
    color: '#555',
    textAlign: 'center',
    marginBottom: 30,
  },
});
image
이제 이 화면을 앱에서 열면 해당 딥링크 주소를 가리키는 QR 코드가 생성되어 표시됩니다. 사용자는 다른 기기의 카메라나 QR 코드 스캔 앱으로 이 코드를 스캔하여 딥링크를 열 수 있습니다.

🚀

커스터마이징 옵션 🔗

react-native-qrcode-svg는 더 많은 꾸미기 옵션을 제공합니다.
// 로고를 포함한 예시
import logoImage from '../assets/my_app_logo.png'; // 로고 이미지 import
 
// ... 컴포넌트 내부 ...
<QRCode
  value={deepLinkUrl}
  size={250}
  logo={logoImage} // 로고 이미지 전달
  logoSize={40}
  logoBackgroundColor="transparent"
  ecl="H" // 오류 복원 수준 높게 설정
/>
// ...
로고 커스텀
로고 커스텀

🚀

결론 🔗

오늘은 Expo 앱에서 react-native-qrcode-svg 라이브러리를 사용하여 특정 주소, 특히 딥링크 URL을 QR 코드로 생성하고 표시하는 방법을 알아보았습니다. QR 코드는 온라인과 오프라인을 연결하고 사용자 편의성을 높이는 강력한 도구입니다.

참고 🔗