20210427

react native asyncstorage



어싱크스토리지는 개발을 할 때 변수값을 저장해두는 공간이라고 생각하면 편할 것 같습니다!

근데 어싱크스토리지 말고도 변수값은 저장은 해둘 수 있는 곳이 많죠 ex) 컴포넌트의 state나 redux등으로 저장이

가능합니다.

그러면 어싱크스토리지는 왜 쓰는가?

어싱크스토리지는 로컬 데이터베이스 저장소라고 생각하시면 다가가기 쉬울 것 같습니다. 앱이 꺼져도 데이터베이스는 남아있듯이 똑같이 어싱크스토리지에 값을 저장하고 앱을 꺼도 데이터가 저장되어있는 개념입니다.


reactnative.dev/docs/asyncstorage
 

🚧 AsyncStorage · React Native

Deprecated. Use one of the community packages instead.

reactnative.dev

www.npmjs.com/package/@react-native-community/async-storage
 

@react-native-community/async-storage

Asynchronous, persistent, key-value storage system for React Native.

www.npmjs.com

https://github.com/andpor/react-native-sqlite-storage
 

andpor/react-native-sqlite-storage

Full featured SQLite3 Native Plugin for React Native (Android and iOS) - andpor/react-native-sqlite-storage

github.com


일단 사용법은 npm을 설치 해줍니다. npm 고르는 것은 개발자 선택이니 일단 예시 3개를 올려놨습니다.

AsyncStorage.setItem('id','userId0', () => {
  console.log("저장되었습니다!");
});   // 저장하는 법

// 유저 닉네임 불러오기
AsyncStorage.getItem('id', getId => {
  console.log(getId); 
}); // 이렇게 불러오면 userId0을 불러와서 사용할 수 있습니다.


대표적으로 setItem, getItem 만 알고 있어도 유용하게 사용할 수 있습니다 :)

JSON.stringify 를 통해서 저장 데이터가 Json형태일경우 문자열로 바꾸어 주어야합니다.


데이터 바꾸기
AsyncStorage.mergeItem(key값, 바꿀데이터)



키값을 통해서 저장되는 데이터를 바꿀 수 있습니다.


데이터 전체 지우기
AsyncStorage.clear() // 복구 불가

react native 생체인식

http://www.npmjs.com/package/react-native-touch-id


Install

npm i --save react-native-touch-id
npm i --save react-native-touch-id

or
yarn add react-native-touch-idyarn add react-native-touch-id

Android

react-native version < 0.60 이면
react-native link react-native-touch-id
react-native link react-native-touch-id

으로 link 해준다.

AndroidManifest.xml


AndroidManifest.xml에
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
추가 -> 핸드폰 지문인식 권한 추가
<uses-permission android:name="android.permission.USE_FINGERPRINT" />

코드

import TouchID from 'react-native-touch-id'; 


const optionalConfigObject = 
{   title'Authentication Required'// 타이틀   
    imageColor: '#e00606'// 지문인식 기본 컬러   
    imageErrorColor: '#ff0000'// 지문인식 실패 컬러   
    sensorDescription: 'Touch sensor'// 터치센서 
    description Text 변경   sensorErrorDescription: 'Failed'// 터치센서 Fail Text 변경   
    cancelText: 'Cancel'// Android // 취소버튼 Text 변경   
    fallbackLabel: 'Show Passcode'// ios ( 비어있으면 레이블이 숨겨짐 )   
    unifiedErrors: false// 통합 오류 메시지 사용 ( 기본값 false)   
    passcodeFallback: false  // ios-faceId / touch 사용할 수 없는 경우 기기비밀번호 사용여부 
    } 
    
    TouchID.authenticate('description', optionalConfigObject)
    .then(success => {     
    console.log("지문인식 성공"); // 지문인식 성공했을 때 코드를 넣으면 됨   
    })   	
    .catch(error => {     	
    console.log("지문인식 실패"); // 실패했을 때 코드를 넣으면 됨.   
    });

isSupported ()

import TouchID from 'react-native-touch-id'; 

const optionalConfigObject = {  
	unifiedErrorsfalse  // 통합 오류 메시지 사용 ( 기본값 false )
	passcodeFallback: false // true가 전달되면 기기가 touch id / face id 등에 등록되지 않은
    경우 isSupported에서 오류를 반환하도록 허용합니다. 
    그렇지 않으면 사용자가 등록되지 않은 경우에도 지원되는 방법 만 알려줍니다.(기본값 false) 
    } 
    
    
TouchID.isSupported(optionalConfigObject).then(biometryType => {
    // Success code 
    if (biometryType === 'FaceID'){         
    	console.log('faceId 지원')     
    } 
    else {     
    	console.log('TouchID 지원.');     
    }  
    })
    .catch(error => {
    	// Failure code
    	console.log(error); // 실패했을 때 에러 로그 찍어보기  
    });

Articles