티스토리 뷰

Firebase Storage 사용하기

 

Firebase용 Cloud Storage를 사용하면 이미지 및 동영상 등의 사용자 제작 콘텐츠를

업로드 및 공유하여 앱에 리치 미디어 콘텐츠를 도입할 수 있습니다.

 

데이터는 고가용성과 글로벌 중복성을 갖춘 엑사바이트급 객체 저장소 솔루션인

Google Cloud Storage 버킷에

저장됩니다.

 

Cloud Storage를 이용하면 이러한 파일을 휴대기기 및 웹브라우저에서 직접 안전하게 업로드할 수 있으며,

네트워크가 불안정해도 문제가 없습니다.

 

라고 구글 문서에서 설명하고 있습니다.

 

중요한건, 사용하는 방법이겠죠.

 

지금부터 Firebase Storage를 Glide와 함께 사용하여 ImageView에 저장 된 이미지를 불러와보도록 하겠습니다.

 

 1. Firebase Storage with Glide 를 이용하여 ImageView에 이미지 띄우기

 

build.gradle 파일에 아래 항목을 추가합니다.

 

implementation 'com.google.firebase:firebase-storage:16.0.2'
implementation 'com.github.bumptech.glide.glid:4.7.1'
implementation 'com.github.bumptech.glide.annotations:4.7.1'
annotationProcessor 'com.github.bumptech.glide.complier:4.7.1'


MyAppGlideModule.java 파일을 추가합니다.

가끔 다른 글을 보면 MyAppGlideModule.java 파일만 추가하면 된다는 글이 있는데

저같은 경우, 정상적으로 동작하지 않고

"firebase Failed to find any ModelLoaders for model" 에러가 발생하였습니다.

 

아래처럼 registerComponents() 함수를 작성하니

정상적으로 동작하였습니다.

 

@GlideModule
public final class MyAppGlideModule extends AppGlideModule {
	@Override
	public void registerComponents(Context context, Glide glide, Registray registray) {
	registray.append(StorageReference.class, InputStream.class,
	new FirebaseImageLoader.Factory());
	}
}

[ MyAppGlideModule.java ]

 

다음으로 제 프로젝트는,

RecyclerView에 이미지를 다운로드하여 사용하고 있어서 RecyclerAdapter 쪽에서 GlideApp을 호출하였습니다.

 

@Override
public void onBindViewHolder(RecyclerAdapter.IteamViewHolder holder, int position) {
	GlideApp.with(holder.itemView)
	.load(mItems.get(position).getImageView())
	.into(holder.teamImage);
}

public static class IteamViewHolder extends RecyclerView.ViewHolder {
	protected ImageView teamImage;
}

public ItemViewHolder(View v) {
	super(v);
	this.teamImage= (ImageView) v.findViewById(R.id.teamImage);
}

[ RecyclerAdapter.java ]

 

GlideApp에 빨간 줄이 생긴다면,

build.gradle 파일과 MyAppGlideModule.java 파일이 잘 추가 되었는지 확인합니다.

그리고 나서 Build 탭 > Rebuild Project를 누르면 빨간 줄이 사라질 것입니다.

댓글