Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Firebase - Remote Config
Search
Fumihiko Shiroyama
June 10, 2016
Programming
5
1.4k
Firebase - Remote Config
Firebase - Remote Config @ shibuya.apk #8 Google I/O 2016 Report
Fumihiko Shiroyama
June 10, 2016
Tweet
Share
More Decks by Fumihiko Shiroyama
See All by Fumihiko Shiroyama
The world of Android wireless communications without Internet
srym
1
120
AWS Device FarmとCircleCIでAndroidのUIテストを自動化しよう
srym
1
4.9k
Spring BootをKotlinで作成しAmazon Elastic Container Service (ECS) で稼働させる
srym
6
1.9k
iOSDC_2019_DeviceFarm.pdf
srym
8
19k
世界で戦うエンジニアになるために_公開用.pdf
srym
18
45k
Unit Testing in a Nutshell - DroidKaigi 2018
srym
11
15k
Clean Architecture & TDD
srym
1
3.7k
はやい・やすい・うまい!スタートアップでも使える Retrofit + RxJava で瞬間APIクッキングレシピ
srym
2
590
I/O 2017 Short Report
srym
0
300
Other Decks in Programming
See All in Programming
デプロイを任されたので、教わった通りにデプロイしたら障害になった件 ~俺のやらかしを越えてゆけ~
techouse
52
32k
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
850
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
230
Importmapを使ったJavaScriptの 読み込みとブラウザアドオンの影響
swamp09
4
1.2k
Why Spring Matters to Jakarta EE - and Vice Versa
ivargrimstad
0
980
飲食業界向けマルチプロダクトを実現させる開発体制とリアルな現状
hiroya0601
1
390
Realtime API 入門
riofujimon
0
110
gopls を改造したら開発生産性が高まった
satorunooshie
8
240
LLM生成文章の精度評価自動化とプロンプトチューニングの効率化について
layerx
PRO
2
140
From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism- An Example
philipschwarz
PRO
0
170
Universal Linksの実装方法と陥りがちな罠
kaitokudou
1
220
推し活としてのrails new/oshikatsu_ha_iizo
sakahukamaki
3
1.7k
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
519
39k
Building Adaptive Systems
keathley
38
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Producing Creativity
orderedlist
PRO
341
39k
Docker and Python
trallard
40
3.1k
Six Lessons from altMBA
skipperchong
26
3.5k
The Pragmatic Product Professional
lauravandoore
31
6.3k
How to Ace a Technical Interview
jacobian
275
23k
A better future with KSS
kneath
238
17k
Building Applications with DynamoDB
mza
90
6.1k
Thoughts on Productivity
jonyablonski
67
4.3k
Transcript
'JSFCBTF3FNPUF$POpH 4IJCVZBBQL(PPHMF*03FQPSU
'VNJIJLP4IJSPZBNB 4PGUXBSF&OHJOFFS /JLLFJ*OD ʲ࿈ࡌதʳ εϚϗΞϓϦ։ൃΛՃ͢Δɼ 'JSFCBTFΛͬͯΈΑ͏ IUUQHJIZPKQEFWTFSJBM pSFCBTF
'JSFCBTF.BKPS6QHSBEFT
None
ʂ
3FNPUF$POpH
IUUQTXXXZPVUVCFDPNXBUDI MJTU1-M ,[;&T:-N0'@*BZS5OUFWYUC6Y%-W@$997'10G
w 4JNQMF,FZ7BMVFTUPSF w 0OMJOFDPOUFOUTVQEBUJOHXJUIPVUSFJOTUBMMBUJPO w "#5FTUJOH w 6TFSTFHNFOUBUJPOT
%FNP
4FUVQ
None
None
None
None
QSPKFDUCVJMEHSBEMF buildscript { // ... dependencies { // ... classpath
'com.google.gms:google-services:3.0.0' } }
BQQCVJMEHSBEMF apply plugin: 'com.android.application' android { // ... } dependencies
{ // ... compile 'com.google.firebase:firebase-core:9.0.2' compile 'com.google.firebase:firebase-config:9.0.2' } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services'
$PEF
SFTYNMSFNPUF@DPOpH@EFGBVMUTYNM <?xml version="1.0" encoding="utf-8"?> <defaultsMap> <entry> <key>color</key> <value>white</value> </entry> </defaultsMap>
"DUJWJUZ FirebaseRemoteConfigSettings remoteConfigSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); remoteConfig =
FirebaseRemoteConfig.getInstance(); remoteConfig.setConfigSettings(remoteConfigSettings); remoteConfig.setDefaults(R.xml.remote_config_defaults);
FirebaseRemoteConfigSettings remoteConfigSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); remoteConfig = FirebaseRemoteConfig.getInstance();
remoteConfig.setConfigSettings(remoteConfigSettings); remoteConfig.setDefaults(R.xml.remote_config_defaults); ճ࣌ؒҎ্ͷϦΫΤετΤϥʔʹͳΔͷͰ ։ൃ࣌͜ͷઃఆඞਢʂ "DUJWJUZ
FirebaseRemoteConfigSettings remoteConfigSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); remoteConfig = FirebaseRemoteConfig.getInstance();
remoteConfig.setConfigSettings(remoteConfigSettings); remoteConfig.setDefaults(R.xml.remote_config_defaults); σϑΥϧτͷ,FZ7BMΛઃఆ "DUJWJUZ
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); }
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); } $BDIF&YQJSBUJPO EFGBVMUIPVST
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); } 'FUDI4FSWFS4FUUJOHT
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); } 4VDDFTT$BMMCBDL
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); } "DUJWBUF
private void fetch() { long cacheExpiration = 3600; if (remoteConfig.getInfo().getConfigSettings().isDeveloperModeEnabled())
{ cacheExpiration = 0; } remoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { Log.d(TAG, "Fetch succeeded."); remoteConfig.activateFetched(); String colorName = remoteConfig.getString("color"); container.setBackgroundColor(Color.parseColor(colorName)); }) .addOnFailureListener(e -> Log.e(TAG, "Fetch failed.", e)); } 'BJMVSF$BMMCBDL
$POTPMF
None
None
None
None
"EE$POEJUJPO
None
None
HSBZXIJUF
.VMUJQMF$POEJUJPO
"QQ7FSTJPO
045ZQF
None
)JHI1SJPSJUZ
%SBH%SPQ
1SJPSJUZ
IUUQTpSFCBTFHPPHMFDPNEPDTSFNPUFDPOpH QBSBNFUFSTQBSBNFUFS@WBMVF@QSJPSJUZ
w 4FSWFS4JEF w ෳϚονͨ͠ΒҰ൪্ͷઃఆ w ͳ͚ΕαʔόαΠυͷσϑΥϧτ w $MJFOU4JEF w αʔό͔ΒऔͬͨΩϟογϡ
w ΞϓϦͷσϑΥϧτ
5JQT
.VMUJQMFHPPHMFTFSWJDFTKTPO
#VJME7BSJBOU w BQQTSDCVJME5ZQFqBWPSHPPHMF TFSWJDFTKTPO +VTU8PSLT
4BNQMF$PEF w IUUQTpSFCBTFHPPHMFDPNEPDTSFNPUF DPOpHBOESPJESFRVJSFNFOUT w IUUQTHJUIVCDPNTSZN 3FNPUF$POpH4BNQMF
5IBOLZPV
8FSFIJSJOH IUUQTXXXXBOUFEMZDPNQSPKFDUT