Firebase 원격 구성을 사용할 때 기능을 유출하지 않는 방법

1817 단어 android


기능을 원격으로 켜고 끄는 것은 훌륭한 개념입니다. 앱의 새 버전을 출시할 때 또 다른 자신감을 더해줍니다.

새 버전을 먼저 릴리스하고 회귀가 없는지 확인한 다음 새 기능을 한 번에 하나씩 켭니다. 반짝이는 새 기능에 심각한 문제가 있었습니까? 패닉, 롤백, 새 릴리스가 없습니다. 원격으로 끄기만 하면 됩니다.

앱의 동작을 원격으로 제어하는 ​​가장 인기 있는 솔루션 중 하나는 Firebase Remote Config 입니다. 그리고 그것은 전달합니다. 안정적이고 통합하기 쉬우며 기능을 켜고 끌 수 있는 친숙한 UI를 제공합니다.

작동 방식은 원격 플래그가 활성화되지 않은 경우 새 기능의 코드를 실행하지 않는 것입니다. 예를 들어, 기능 플래그는 shiny_feature 라고 할 수 있습니다. Firebase가 활성화된 기능을 가져옵니다usually during startup. shiny_feature 플래그가 활성화된 목록에 있으면 사용자가 이 기능을 사용할 수 있게 됩니다.

개발 중에 플래그 뒤에 새 기능을 보호하면 어떻게 됩니까? 테스트 버전을 동료 및 QA에게 보내기 시작하면 테스트 기간 동안 기능을 켜고 새 버전이 공개되기 직전에 끄는 것이 좋다고 생각할 수 있습니다.

그러나 클라이언트가 해당 테스트 기간 동안 활성화된 플래그 목록을 가져오기 때문에 문제가 될 수 있습니다. 활성화된 플래그를 가져오는 것은 최선의 프로세스입니다. 어떤 이유로 가져올 수 없는 경우 앱은 기기에 이미 있는 활성화된 플래그 목록의 마지막 버전을 사용합니다. 기능을 끈 직후에 앱을 릴리스하면 기능이 꺼져 있더라도 보호된 기능이 사용되는 것을 거의 확실하게 목격하게 될 것입니다.

그래서 이 문제에 대한 해결책은 무엇입니까? 기능을 릴리스하기 전과 후에 다른 기능 이름을 사용하십시오. 프로덕션 릴리스 전에 플래그 이름을 수동으로 변경하는 대신 이를 수행하는 쉬운 방법은 개발 버전과 프로덕션 버전을 구분하기 위해 기능 이름에 자동으로 사후 수정 사항을 추가하는 것입니다.

간단한 샘플 코드는 다음과 같습니다.

fun featureName(name: String) = 
    "$name${if (BuildConfig.DEBUG) "_dev" else "_prod"}"


앱 모듈의 올바른 모듈BuildConfig을 가져와야 합니다. 또는 prod와 non-prod 버전을 구분하기 위해 some을 사용합니다.

시계에서 실수로 기능이 활성화되는 것을 방지하는 방법을 배웠기를 바랍니다. :)

즐거운 코딩하세요!

좋은 웹페이지 즐겨찾기