1)서버가 제공하는 도메인 사용 www.sparta.com/getdata ←- 데이터 조회 API www.sparta.com/setData ←- 데이터 저장 API
2)서버가 만들어놓은 함수 사용 db.ref('/like/').on('value') ←- 데이터 조회 API db.ref('/like/').set(new_like); <-- 데이터 저장 API
useEffect(()=>{ //서버 API 사용 //이 화면에서 사용 할 데이터 준비 },[])
expo 에서 제공하는 도구 사용
- expo install expo-location
try { await Location.requestPermissionsAsync(); const locationData= await Location.getCurrentPositionAsync(); console.log(locationData) } catch (error) { //혹시나 위치를 못가져올 경우를 대비해서, 안내를 준비합니다 Alert.alert("위치를 찾을 수가 없습니다.", "앱을 껐다 켜볼까요?"); }
const func = async function(){ await func01() await func02() }
const func = async () => { await func01() await func02() }
async function func(){ await func01() await func02() }
외부도구 설치 yarn add axios
const temp = result.data.main.temp; const condition = result.data.weather[0].main
API를 사용할때는 API제공 업체측에 회원가입 후 부여받은 API키값을 같이 줘야하는 경우도 있다고 함.
const [weather, setWeather] = useState({ temp : 0, condition : '' }) 컨포넌트에서 날씨 데이터를 다루게 되었으니 데이터 변경 시점에 따라 화면을 다시 그리기 위해서 날씨데이터를 상태 관리 할수있게 적용!```
- 서버리스?(serverless)
서버를 직접 구현, 구성 할 필요없이
필요한 서버 기능을 제공하는 곳에서 서비스를 사용
-파이어베이스 프로젝트 생성
1)가입하기구글에 가입되어 있고 로그인 되어 있다면
파이어베이스 홈페이지 화면에 시작하기가 바로 뜸
2) 프로젝트 생성
생성 할 프로젝트 이름을 정하여 기입
현재 작업중인 앱 이름 그대로 가는것이 편리하다고함
3)사용 할 파이어베이스 서비스 활성화
-앱 연동 및 파일 스토리지 사용
1)파이어베이스 프로젝트 내에서 앱 생성하기안드로이드, iOS 앱 전용 개발을 Expo에서 따로 하고 있지 않고 자바스크립트로만 개발을 하고 있기 때문에 웹 SDK를 이용하면 쉽게 파이어베이스 사용 가능
호스팅 설정은 체크 X 저장위치 asia
2)파일 저장소 스토리지(storage)
파일 저장소 생성 -> 파이어베이스 사이트 왼쪽 콘솔창에서 storage클릭 후 시작하기
새로운 파일 생성해서 이미지를 업로드만 해줘도 바로 주소가 제공됨
끝
vscod에서 외부에 저장 된 이미지를 주소로 불러올때 사용할수있음
이미지 저장 → 파일 저장소 스토리지
JSON 데이터 → 리얼 타임 데이터베이스
//방안에 들어 있는 전체 데이타 조회 함수
//ref('/tip') 이 부분에서 /tip 영역에 가지고 오고 싶은 데이터의 주소를 넣어주면 됨
//firebaseConfig.js에서 이미 파이어베이스 계정을 세팅했기 때문에,기본 주소와 정보들은 앱 내에서 사용하는 파이어베이스 함수들이 알고 있음으로 기본주소는 생략되어있다
firebase_db.ref('/tip').once('value').then((snapshot) => {
let tip = snapshot.val();
})
```!)
firebase_db.ref('/tip').once('value').then((snapshot) => {})
const { idx } = route.params;
firebase_db.ref('/tip/'+idx).once('value').then((snapshot) => {
let tip = snapshot.val();
setTip(tip)
expo install expo-application
import * as Application from 'expo-application'; const isIOS = Platform.OS === 'ios'; let uniqueId; if(isIOS){ let iosId = await Application.getIosIdForVendorAsync(); uniqueId = iosId }else{ uniqueId = Application.androidId } console.log(uniqueId)
const [tip, setTip] = useState({
"idx":9,
"category":"재테크",
"title":"렌탈 서비스 금액 비교해보기",
"image": "https://storage.googleapis.com/sparta-image.appspot.com/lecture/money1.png",
"desc":"요즘은 정수기, 공기 청정기, 자동차나 장난감 등 다양한 대여서비스가 활발합니다. 사는 것보다 경제적이라고 생각해 렌탈 서비스를 이용하는 분들이 늘어나고 있는데요. 다만, 이런 렌탈 서비스 이용이 하나둘 늘어나다 보면 그 금액은 겉잡을 수 없이 불어나게 됩니다. 특히, 렌탈 서비스는 빌려주는 물건의 관리비용까지 포함된 것이기에 생각만큼 저렴하지 않습니다. 직접 관리하며 사용할 수 있는 물건이 있는지 살펴보고, 렌탈 서비스 항목에서 제외해보세요. 렌탈 비용과 구매 비용, 관리 비용을 여러모로 비교해보고 고민해보는 것이 좋습니다. ",
"date":"2020.09.09"
})
//넘어온 데이터는 route.params에 들어 있습니다.
const { idx } = route.params;
firebase_db.ref('/tip/'+idx).once('value').then((snapshot) => {
let tip = snapshot.val();
setTip(tip)
});
import * as Application from 'expo-application';
const isIOS = Platform.OS === 'ios';
const like = async () => {
// like 방 안에
// 특정 사용자 방안에
// 특정 찜 데이터 아이디 방안에
// 특정 찜 데이터 몽땅 저장!
// 찜 데이터 방 > 사용자 방 > 어떤 찜인지 아이디
let userUniqueId;
if(isIOS){
let iosId = await Application.getIosIdForVendorAsync();
userUniqueId = iosId
}else{
userUniqueId = await Application.androidId
}
console.log(userUniqueId)
firebase_db.ref('/like/'+userUniqueId+'/'+ tip.idx).set(tip,function(error){
console.log(error)
Alert.alert("찜 완료!")
});
}
4주차 쉬운듯 쉽지않음 역시.
숙제도 장난아님.
나도 장난아님.
때려칠까.
숙제해설 보고 숙제를 어영부영... 완성한 이후
파이어베이스에서 데이터 가져왔습니다 !!
빠릿빠릿 하구만.. 귀여워 (헥헥) 달려있음 더 좋겠네
헥헥