ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [IOS] Firebase Remote Config 를 알아보자 (3)
    IOS 2021. 12. 1. 16:26

    이전 프로젝트에 이어서  실제 firebase 콘솔에서 팝업을 제어하도록 해보겠습니다 

     

     

    viewcontroller 로 넘어와 사진과 같이 설정 해줍니다 .

    • import FirebaseRemoteConfig
    • var remoteConfig : RemoteConfig? //remoteConfig 객체를 추가합니다
    • remoteConfig = RemoteConfig.remoteConfig() //remoteConfig 선언을 해줍니다 .
    •  let setting = RemoteConfigSettings() //셋팅을 선언합니다.
    • setting.minimumFetchInterval = 0 //새로운 값을 되도록 자주 불러오도록 인터벌을 줍니다.
    • remoteConfig?.configSettings = setting  //remoteConfig 셋팅값을 넣어줍니다

    이제 각 키의 기본값을 설정해줍니다. 

    Comand+N 을 눌러 Property List 파일을 생성 해줍니다. 

    생성된 Property 파일에 저는 이렇게 설정했습니다 isHidden은 공지를 띄울지 말지를 컨트롤 할수있게 넣어놨습니다 Bool 으로 설정해 true / false로 정해줬습니다. Value에는 true를 입력해도 1로 나오게 됩니다 즉 1 = true 2 = false 로 볼수있습니다 .

    아래 test1 ,test2 는 전 포스팅에서 noticeviewcontroller에 설정해둔 Label을 통일성있게 넣어 줬습니다. 기본값을 설정하는거기에 

    각자 알아보기 편하게 설정해두시면 됩니다. 

     

    다시 프로젝트로 넘어와서 firebase가 인식할수있도록 setDefaults 를 해줍니다 

    • remoteConfig?.setDefaults(fromPlist: "TestDefaultValue") //방금 생성한 Property File의 이름을 넣어줍니다.

    이제 firebase 콘솔로 넘어가겠습니다. 

    firebase 왼쪽 리스트에 하단으로 내려가다 보면 '참여' 탭이 있습니다 여기서 'Remote Config'를 눌러줍니다

     

    '구성 만들기' 를 눌러줍니다.

    프로젝트 Property List에 설정해둔것과 같이 key-value로 설정 되어있습니다. 

    저는 3가지 isHidden , test1 ,test2 총3개를 만들어놨으니 똑같이 등록해주겠습니다.

    설정을 완료 하였다면 변경사항 게시를 눌러준뒤 다시 프로젝트로 넘어오겠습니다.

     

    아래와 같이 함수를 만들어 주겠습니다. 

     func getNotice(){

            guard let remoteConfig = remoteConfig else {return} //옵셔널 처리

            remoteConfig.fetch {[weak self] status, _ in //remoteconfig fetching 을 해준다.

                if status == .success {

                    remoteConfig.activate(completion: nil)

                }else {

                    print("error")

                }

                guard let self = self else {return}

                if !self.isNoticeHidden(remoteConfig){ //isHidden 이 아니라면 숨기는게 아니라면

                    let noticeVC = NoticeViewController(nibName: "NoticeViewController", bundle: nil)

                    noticeVC.modalPresentationStyle = .custom

                    noticeVC.modalTransitionStyle = .crossDissolve //notice view의 속성을 정해준다

                    

                    

                    /*아래의 replacingOccurrences(of: "\\n", with: "\n") 이부분은 firebase 콘솔에서 줄바꿈을 써서 입력하면 \\n 찍혀 인식하지 못하기에 설정 해주는것입니다.

                     */

                    let test1 = (remoteConfig["test1"].stringValue ?? "").replacingOccurrences(of: "\\n", with: "\n")

                    let test2 = (remoteConfig["test2"].stringValue ?? "").replacingOccurrences(of: "\\n", with: "\n")

                    noticeVC.content = (test1 : test1,test2 : test2) //설정해둔 content에 값을 넣어줍니다.

                    self.present(noticeVC, animated: true, completion:  nil)

                }

            }

        }

        //공지사항을 보일지 말지 설정

        func isNoticeHidden(_ remoteConfig: RemoteConfig) -> Bool{

            return remoteConfig["isHidden"].boolValue //만들어논 isHidden 이라는 값을 가져오게 됩니다.

        }

    이제 getNotice 함수를 viewdidload에 넣고 빌드 해보면 아무것도 나오지 않을겁니다 firebase에서 값을 설정해줄겁니다. 

    isHidden의 값을 false로 바꾸고 test1 ,test2 의 대한 내용도 변경해보도록 하겠습니다.

    적용 완료를 하고 빌드를 해보도록 하겠습니다. 

    방금 변경한것이 그대로 반영되었습니다. 이렇게 원하는 값을 앱 심사 없이 바꿀수 있는 firebase의 Remote Config 를 알아보았습니다. 

     

    추가로 새로추가 탭으로 조건부 값으로 기기 언어가 영어로 설정되었을때 영어로 공지내용이 나오게 한다던지 능동적으로 설정할수도 있습니다. 

    이상으로 Firebase Remote Config 포스팅을 마치겠습니다.

     

     

Designed by Tistory.