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
expo-app
├── app
│ ├── generateQRScreen.tsx // QR 코드 화면
│ └── ... // 다른 화면들
├── components
│ ├── MyQRCode.tsx // QR 코드 컴포넌트
│ └── ... // 다른 컴포넌트들
react-native-qrcode-svg
라이브러리에서 QRCode
컴포넌트를 가져와서 사용합니다.
가장 중요한 속성은 value
로, 여기에 QR 코드로 변환할 문자열(URL, 텍스트 등)을 전달합니다.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;
QRCode
컴포넌트를 import 합니다.value
속성에 QR 코드로 만들고 싶은 문자열(예: URL)을 전달합니다.size
속성으로 QR 코드의 크기를 조절할 수 있습니다. 기본값은 128입니다.MyQRCode
컴포넌트를 사용하여 딥링크 주소를 QR 코드로 표시해 보겠습니다.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,
},
});
deepLinkUrl
변수에 생성하고 싶은 딥링크 주소를 넣습니다. (반드시 앱의 scheme
과 Expo Router 경로에 맞게 작성해야 합니다.)MyQRCode
컴포넌트를 사용하고 value
속성에 deepLinkUrl
을, size
속성에 원하는 크기(예: 200)를 전달합니다.react-native-qrcode-svg
는 더 많은 꾸미기 옵션을 제공합니다.color
: QR 코드의 색상을 지정합니다. (예: color="blue"
)backgroundColor
: QR 코드의 배경색을 지정합니다. (예: backgroundColor="#f0f0f0"
)logo
: QR 코드 중앙에 로고 이미지를 삽입할 수 있습니다. (require
함수로 로컬 이미지 경로 지정)logoSize
, logoBackgroundColor
, logoMargin
, logoBorderRadius
: 로고 관련 세부 스타일 옵션입니다.ecl
: 오류 복원 수준(Error Correction Level)을 설정합니다. ('L', 'M', 'Q', 'H' 중 선택, 높을수록 QR 코드가 일부 손상되어도 인식될 확률이 높아지지만 패턴이 복잡해집니다. 로고 사용 시 'H' 수준을 권장하기도 합니다.)// 로고를 포함한 예시
import logoImage from '../assets/my_app_logo.png'; // 로고 이미지 import
// ... 컴포넌트 내부 ...
<QRCode
value={deepLinkUrl}
size={250}
logo={logoImage} // 로고 이미지 전달
logoSize={40}
logoBackgroundColor="transparent"
ecl="H" // 오류 복원 수준 높게 설정
/>
// ...
react-native-qrcode-svg
라이브러리를 사용하여 특정 주소, 특히 딥링크 URL을 QR 코드로 생성하고 표시하는 방법을 알아보았습니다. QR 코드는 온라인과 오프라인을 연결하고 사용자 편의성을 높이는 강력한 도구입니다.