네이버 오픈 API를 사용하여 사용을 허가하는 아이디와 비밀번호를 부여받는다.

interface BookAPI {
    @GET("/v1/search/book.json")
    fun getBooksByName(
        @Header("X-Naver-Client-Id") id: String,
        @Header("X-Naver-Client-Secret") secretKey: String,
        @Query("query") keyword: String
    ): Call<SearchBooksDto>
}

안드로이드 스튜디오 내에서 Retrofit2를 활용한 인터페이스를 구현해준다. 

Retrofit은 OkHttp 라이브러리 상위 구현체이다. REST 통신, 자원 전달을 해주는 객체이다.

인터페이스 안에 getBooksByName 함수는 아이디와 키 값을 받고, 쿼리로 찾고 싶은 책을 적어주면

DTO를 반환해준다. 이는 JSON 타입 변환에 사용된다.

data class SearchBooksDto(
    @SerializedName("items") val books: List<Book>
)

데이터 클래스 books에 해당 키워드로 받아온 "items" 정보들이 books에 리스트 형태로 저장된다.

 

FirebaseStorage.getInstance()
    .reference.child("userImages").child("$userIdSt/photo"

Firebase Realtime database와 유사하다.

폴더가 생성된 걸 확인할 수 있다.

 

그리고 유저 uid로 된 폴더 안에

.putFile(imageUri!!).addOnSuccessListener {

photo라는 사진이 저장된 걸 확인

.child("$userIdSt/photo").downloadUrl
.addOnSuccessListener {

로 이미지 다운로드를 한다.

참조: https://stack07142.tistory.com/282

 

Firebase Database 데이터 읽기, 3가지 방법

Firebase Database 데이터 읽기, 3가지 방법 Firebase Database에서 데이터를 읽는 방법으로는 아래와 같이 3가지가 있습니다. 1. addValueEventListener() 메소드를 이용하여 DatabaseReference에 ValueEventListener를 추가

stack07142.tistory.com

FirebaseDatabase.getInstance().getReference("User").child("users")
                            .child(userId.toString()).setValue(User(name, userIdSt, email))

나같은 경우 users라는 자식에 내가 만든 회원의 userId를 넣어주었고,값으로 사용자 정보를 저장하는 객체인 User 클래스를 사용하여 넣어주었다.

3개로 구성된 Fragment Activity


1) 앱 시작시 홈 fragment로 시작되고

 

2023-02-24 17:01:35.893 21537-21537 TEST                    com.example.usedbookmarket           D  OnAttach
2023-02-24 17:01:35.894 21537-21537 TEST                    com.example.usedbookmarket           D  OnCreateView
2023-02-24 17:01:36.033 21537-21537 TEST                    com.example.usedbookmarket           D  OnResume


2) 채팅 뷰로 변환했을 때


2023-02-24 17:01:42.363 21537-21537 TEST                    com.example.usedbookmarket           D  OnDestroyView


3) 다시 홈 fragment 뷰로 돌아왔을 때


2023-02-24 17:01:46.624 21537-21537 TEST                    com.example.usedbookmarket           D  OnAttach
2023-02-24 17:01:46.624 21537-21537 TEST                    com.example.usedbookmarket           D  OnCreateView
2023-02-24 17:01:46.644 21537-21537 TEST                    com.example.usedbookmarket           D  OnResume

 


활용) 검색하여 따로 선택한 아이템 리스트 뷰를 다시 기존에 있던 초기 리스트 뷰 형태로

바꾸려 하고 있다.

 

mainActivity.supportFragmentManager.beginTransaction()
    .apply{
        replace(R.id.fragmentContainer, newInstance())
        commit()
    }

이렇게 해결 완료!

implementation "androidx.room:room-runtime:2.2.6"
kapt "androidx.room:room-compiler:2.2.6"

우선 app단위의 build.gradle 파일을 추가 시켜준다.

크게 AppDatabase, Dto, Dao가 필요하다.

내가 해석한 내용은 

1) AppDatabase는 추상클래스로 클래스내에 사용할 추상함수 dao를 선언해준다.

2) Dto는 연결해줄 것으로 데이터 클래스 형식으로 돼있다.

3) Dao는 가장 데이터베이스 내에서 쓸 법한 용어들이 나오는 것으로,

여기서 SELECT, FROM 이런식으로 선언 해준다.

 

 

프로필을 Firebase에 업데이트 해주기 위해선 storage를 사용하여야하고

이를 위해선 앱 권한이 필요했다. Manifest.permissions. 하고 외부 저장 권한이 나와야 하는데 뜨질 않았다.

물론 AndroidManifest에 유저 권한을 입력해주었었다. 해결법은

import android.Manifest

를 해주었다는 것이다.

이 후 정상 작동했다.

+ Recent posts