github.com/react-native-svg/react-native-svg

 

react-native-svg/react-native-svg

SVG library for React Native, React Native Web, and plain React web projects. - react-native-svg/react-native-svg

github.com

매번 assets 폴더에서 import 해오다가 svg 라이브러리를 사용해봤습니다.

 

일단 위에 설명이 있지만 다시한번 사용법을 적어봅니다. 

 

yarn add react-native-svg

expo install react-native-svg

npm install react-native-svg

를 통해 라이브러리를 설치합니다.

 

react-native 0.60 이상을 오토링크가 되므로 환경세팅을 할 필요가 없어서 바로 import 시켜서 사용하면 됩니다.

만약 이하 버전을 사용하면 위 링크에 들어가 세팅을 해줍니다.

 

import Svg, {
  Circle,
  Ellipse,
  G,
  Text,
  TSpan,
  TextPath,
  Path,
  Polygon,
  Polyline,
  Line,
  Rect,
  Use,
  Image,
  Symbol,
  Defs,
  LinearGradient,
  RadialGradient,
  Stop,
  ClipPath,
  Pattern,
  Mask,
} from 'react-native-svg';

/* Use this if you are using Expo
import * as Svg from 'react-native-svg';
const { Circle, Rect } = Svg;
*/

import React from 'react';
import { View, StyleSheet } from 'react-native';

export default class SvgExample extends React.Component {
  render() {
    return (
      <View
        style={[
          StyleSheet.absoluteFill,
          { alignItems: 'center', justifyContent: 'center' },
        ]}
      >
        <Svg height="50%" width="50%" viewBox="0 0 100 100">
          <Circle
            cx="50"
            cy="50"
            r="45"
            stroke="blue"
            strokeWidth="2.5"
            fill="green"
          />
          <Rect
            x="15"
            y="15"
            width="70"
            height="70"
            stroke="red"
            strokeWidth="2"
            fill="yellow"
          />
        </Svg>
      </View>
    );
  }
}

 

이렇게 Circle, Ellipse, G, Text, TSpan, TextPath, Path, Polygon, Polyline, Line, Rect, Use, Image, Symbol, Defs, LinearGradient, RadialGradient, Stop, ClipPath, Pattern, Mask 같은 도형 같은 것들도 사용할 수 있네요 SVG로

 

저는 웹에서 svg를 불러오는 용도로 사용할거라서

import * as React from 'react';
import { SvgCssUri } from 'react-native-svg';

export default () => (
  <SvgCssUri
    width="100%"
    height="100%"
    uri="http://thenewcode.com/assets/svg/accessibility.svg"
  />
);

이 방법으로 사용했습니다.

 

저 같은 경우는 클릭했을 때 브라우저를 띄워주고 싶어서

 <TouchableOpacity onPress={() => Linking.openURL('https://www.naver.com/')}>
       <SvgCssUri width="160" height="60" style={styles.ImgStyle} uri="https://s1.econotimes.com/assets/images/econotimes/mobile/about/imgLogoNaver.svg"/>
 </TouchableOpacity>

이렇게 사용했습니다.

 

그러면 네이버 svg 로고가 나올 것이고 로고를 클릭했을 때 react-native의 내장 함수인 Linking으로 naver가 핸드폰 브라우저에 뜹니다. 

스타일은 width, height를 줄 수 있고 스타일드컴포넌트를 사용할 경우 style= { styles.스타일 이름 }으로 주셔도 됩니다.

 

www.npmjs.com/package/react-native-image-picker

 

react-native-image-picker

A React Native module that allows you to use native UI to select media from the device library or directly from the camera

www.npmjs.com

react-native-image-picker 이라는 라이브러리를 소개 해드립니다!!!!

 

첫 번째로는 

android/app/main/AndroidManifest.ml 에

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

이렇게 두줄을 

넣어주세요!

 

그뒤로 코드입니다!

import ImagePicker from 'react-native-image-picker';
 
const [ img, setImageSource ] = useState("");  // 이미지를 img변수에 할당시킬겁니다!

function pickImg() { 
  const options = {
    title: 'Select Avatar', //이미지 선택할 때 제목입니다 ( 타이틀 ) 
    customButtons: [{ name: 'fb', title: 'Choose Photo from Facebook' }], // 선택 버튼을 커스텀 할 수 있습니다.
    storageOptions: {
      skipBackup: true,	// ios인 경우 icloud 저장 여부 입니다!
      path: 'images',
    },
  };

  /**
   * The first arg is the options object for customization (it can also be null or omitted for default options),
   * The second arg is the callback which sends object: response (more info in the API Reference)
   */
  ImagePicker.showImagePicker(options, (response) => {
    console.log('Response = ', response);

    if (response.didCancel) {
      console.log('User cancelled image picker');
    } else if (response.error) {
      console.log('ImagePicker Error: ', response.error);
    } else if (response.customButton) {
      console.log('User tapped custom button: ', response.customButton);
    } else {
      // You can also display the image using data:
      // const source = { uri: 'data:image/jpeg;base64,' + response.data };
      setImageSource(response.uri); // 저는 여기서 uri 값을 저장 시킵니다 !
    }
  });
}

/* return 코드
{img ?   // 이미지가 있으면 라이브러리에서 받아온 이미지로 출력, 없으면 디폴트 이미지 출력!
	<TouchableOpacity style={styles.imgWrapper} onPress={()=>pickImg()}>
		<Image source={{uri: img}} style={styles.imgStyle}/>
	</TouchableOpacity>  
	:
	<TouchableOpacity style={styles.imgWrapper} onPress={()=>pickImg()}>
		<Image source={defaultImg} style={styles.imgStyle}/>
	</TouchableOpacity>
}

                
*/

 

일단 response 값으로 uri나 data 등등 값이 오는데요 여기서 저는 uri 만 필요하기 때문에 setImageSource에 uri를 

저장하고 img에 넣어서 img로 프로필 사진 받아오는 코드를 작성해봤는데요

const options 에

 

const options = {

        title: '사진',

        takePhotoButtonTitle: '카메라',

        chooseFromLibraryButtonTitle: '이미지 선택',
		
        cancelButtonTitle: '취소'
        
      };

이렇게 설정을 해두시면 자기가 원하는 텍스트로 커스텀이 가능합니다 ! 

 

디폴트 이미지
커스텀 한 이미지

 

이미지를 불러와서 저장

 

이렇게 이미지를 저장하고 카메라를 찍을 수 있는 라이브러리를 사용해봤습니다~!~!

어플 개발을 하다보면 기기 등록을 해야할 때가 있을 것 입니다.

os는 무엇인지, 기종은 무엇인지 version은 뭔지 등등 이러한 부분에 궁금증이 생겨 하나하나 찾아보았습니다 !

 

1. device UniqueId, Brand, DeviceId 등

 

https://www.npmjs.com/package/react-native-device-info

 

react-native-device-info

Get device information using react-native

www.npmjs.com

react-native-device-info 라는 npm 입니다. 이 npm 은 많은 디바이스 정보들을 가져올 수 있는 npm 입니다 !

npm install --save react-native-device-info 로 install을 한 뒤

import DeviceInfo from 'react-native-device-info';

사용할 곳에 import를 해줍니다.

그 다음 예제를 보여드리면

let platform = DeviceInfo.getBrand();

이런식으로 값을 담아서 console.log를 찍어보시면 Brand 값을 알 수 있습니다.

 

2. language

https://www.npmjs.com/package/react-native-localize

 

react-native-localize

A toolbox for your React Native app localization.

www.npmjs.com

language등 앱 현지화를 위한 npm 입니다 !

필자는 여기서 language만 가져오고 싶어서 이 npm을 사용했습니다.

 

npm install --save react-native-localize 또는

yarn add react-native-localize

로 install 을 한 뒤

import * as RNLocalize from "react-native-localize";
 
console.log(RNLocalize.getLocales());
console.log(RNLocalize.getCurrencies());
 
RNLocalize.addEventListener("change", () => {
  // do localization related stuff…
});

이런 식으로 example 코드를 사용할 수 있고

  let lang = RNLocalize.getLocales()[0].languageTag;

오브젝트 안에 원하는 값을 찾아서 값을 넣어주었습니다 !

 

3. react-native Platform

react-native 에서도 제공을 하는데요 저는 os, version 등을 알기위해서 사용했습니다.

 

import Platform from 'react-native';

 

 

  let os = Platform.OS;
  let version = Platform.Version;

이런식으로 사용했습니다.

 

이로써 디바이스 정보에 대해서 알아봤습니다 ~~ 

React Native  Facebook, Inc.에서 만든 오픈 소스 모바일 애플리케이션 프레임 워크 입니다 . [3] 개발자가 React 와 함께 사용할 수 있도록하여 Android [4] , iOS , Web [5]  UWP [6]  애플리케이션을 개발하는 데 사용 됩니다. 네이티브 플랫폼 기능 ! - wikipedia에 적혀있는 React Native 정의입니다.

말그대로 모바일 애플리케이션 프레임 워크로 어플을 만들때 많이 사용됩니다. 

 

일단 윈도우에 설치를 해보겠습니다.

 

1. Node.js 설치

https://nodejs.org/en/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

node.js 를 설치해줍니다. 설치를 한 뒤 cmd에 node -v npm -v 라는 명령어로 설치가 잘 되었는지 확인해봅니다.

2. Python 설치

 

https://www.python.org/downloads/windows/

 

Python Releases for Windows

The official home of the Python Programming Language

www.python.org

react-native 빌드 시스템은 파이썬을 사용합니다. mac은 파이썬이 기본적으로 설치되어 있는데 윈도우는 따로 설치를 해야합니다 ! 

다운을 받은 뒤 cmd 에 잘 다운받았는지 Python 버전을 확인해봅니다.

저는 2.7.18 버전을 다운로드 받았습니다.

 

3. React Native CLI 설치

npm명령어를 통해 React Native CLI를 설치합니다.

설치가 잘 되었다면 react-native --version

명령어로 확인해봅니다.

 

4. JDK 설치

react-native로 안드로이드 앱을 개발하기 위해 JDK를 설치 해줍니다.

 

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

64bit, 32bit 잘 선택해서 다운로드 받으시면 됩니다.

그리고 cmd를 다시 킨 뒤 

java -version을 통해 잘 다운받았는지 확인해봅니다.

추가로 JAVA 컴파일러도 잘 설치 되어있는지 확인해봅니다.

5. 안드로이드 스튜디오 설치

 

https://developer.android.com/studio

 

Download Android Studio and SDK tools  |  Android 스튜디오

developer.android.com

안드로이드 스튜디오를 설치합니다.

다른 것은 건들지말고 next 만 눌러서

 

이 화면이 나올 때 까지 넘겨줍니다. 중간중간에 경로를 설정하거나, 테마를 설정하는 건 본인이 하면됩니다!

여기서 중요한 것은 sdk 설정입니다.

 

6. 안드로이드 스튜디오 SDK 설정

Configure > SDK Manger에 들어가서

  • Android SDK Platform 28
  • Intel x86 Atom System Image
  • Google APIs Intel x86 Atom System Image
  • Google APIs Intel x86 Atom_64 System Image 를 다운로드 받아줍니다.

오른쪽 하단의 Show Package Details를 눌러줘야 세부사항이 뜹니다!!

 

7. 환경 변수 설정

환경변수를 내 PC 에서 해줘야합니다.

 

내PC의 마우스 오른쪽 클릭을 한 뒤 속성에 들어가서 ( 제어판 > 시스템 및 보안 > 시스템) 입니다.  왼쪽의 고급 시스템 설정에 들어갑니다.

고급 속성에서 환경변수 설정을 클릭합니다.

User에 대한 사용자 변수에 새로만들기를 한 뒤 자신의 안드로이드 스튜디오 SDK 위치를 입력하고 확인버튼을 누릅니다.

그리고 Path를 누르고 편집 버튼을 눌러 위에 자신의 안드로이드 스튜디오 SDK위치\platform-tools 을 입력해줍니다.

 

이렇게 여기까지 완료가 다 되었다면 cmd 창에 adb 라는 명령어를 입력해줍니다.

이렇게 뜨면 성공입니다 !

 

이제 react-native 프로젝트를 생성 한 뒤 안드로이드에서 확인하면 초기설정 끝입니다 !

 

 

 

여기서 기종에 맞게 추가해주면 끝입니다~~~

+ Recent posts