firebase dev day bangkok: keynote
TRANSCRIPT
Sittiphol PhanvilaiGDE AndroidCEO, Cheese Factory #FirebaseDevDay
KeynoteFirebase Dev Day
Sittiphol PhanvilaiAndroid GDECEO & Founder,The Cheese Factory Co., Ltd.
#FirebaseDevDay
Setting up Server• Create Server Instances• Set up Scalable Server Stack• Set up Deployment Method• Set up an Auto-scaling• Set up an Automated Backups• Install Cert to enable HTTPS• etc.
#FirebaseDevDay
Implementing Server Side Code• Develop Web Site• Develop APIs to Interface with Mobile
App• Make them secure
#FirebaseDevDay
Setting up Server• Create Server Instances• Set up Scalable Server Stack• Set up Deployment Method• Set up an Auto-scaling• Set up an Automated Backups• Install Cert to enable HTTPS• etc.
#FirebaseDevDay
Implementing Server Side Code• Develop Web Site• Develop APIs for Mobile App• Make them secure
#FirebaseDevDay
Architecture
Android iOS
Database
Hosting
Storage
Authentication
SDK forAndroid
SDK foriOS
#FirebaseDevDay
Setting up Server• Create Server Instances• Set up Scalable Server Stack• Set up Deployment Method• Set up an Auto-scaling• Set up an Automated Backups• Install Cert to enable HTTPS• etc.
#FirebaseDevDay
Implementing Server Side Code• Develop Web Site• Develop APIs to Interface with Mobile
App• Make them secure
#FirebaseDevDay
Architecture
Android iOS
Database
Hosting
Storage
Authentication
SDK forAndroid
SDK foriOS
#FirebaseDevDay
With Firebase• Compacted Size Development Team• Fast Product Delivering• Reduced Budget• Scalable
#FirebaseDevDay
Architecture
Android iOS
Database
Hosting
Storage
Authentication
SDK forAndroid
SDK foriOS
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud MessagingRemote Config
App Quality ServicesTest Lab for AndroidCrash Reporting
AcquisitionDynamic LinksInvitesAdWords
Re-EngagementNotificationsApp Indexing
In-app AdsAdMob
Analytics
#FirebaseDevDay
Authentication• Register / Login with
• Email + Password• Google• Facebook• Twitter• GitHub
• Email address verification• Password reset
#FirebaseDevDay
Creating Userfirebase.auth() .createUserWithEmailAndPassword(email, password) .then((authData) => { }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // ... });
#FirebaseDevDay
Signing Infirebase.auth() .signInWithEmailAndPassword(email, password) .then((authData) => { }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // ... });
#FirebaseDevDay
Signing Outfirebase.auth() .signOut() .then(() => { // Sign-out successful. }, (error) => { // An error happened. });
#FirebaseDevDay
Facebook Loginvar provider = new firebase.auth.FacebookAuthProvider();provider.addScope(‘user_birthday’);provider.setCustomParameters({ ‘display’: ‘popup’ });
firebase.auth() .signInWithPopup(provider) .then((result) => { var token = result.credential.accessToken; var user = result.user; }, (error) => { // Handle Errors here. });
#FirebaseDevDay
Custom Auth Service• Easily integrate your custom authentication
service using JWT.firebase.auth() .signInWithCustomToken(jwtToken) .then((authData) => { }) .catch((error) => { // Handle Errors here. });
#FirebaseDevDay
Realtime Database• Cloud-hosted NoSQL database
• Synchronization & conflict resolution
• Access directly from your app
#FirebaseDevDay
Writing Datavar ref = firebase.database() .ref(‘lives/live-nuuneoi-com/name’);
ref.set(‘wahahahaha’);
#FirebaseDevDay
Writing Datavar ref = firebase.database() .ref(‘lives/live-nuuneoi-com/info’);
ref.set({ username: “nuuneoi”, gender: “male”});
#FirebaseDevDay
Child Events Listeningvar ref = firebase.database() .ref(‘lives/live-nuuneoi-com/info’);
ref.on(‘child_added’, (data) => {});
ref.on(‘child_changed’, (data) => {});
ref.on(‘child_removed’, (data) => {});
#FirebaseDevDay
Storage• Easy file storage
• Handles poor connectivity
• Backed by & accessible fromGoogle Cloud Storage
#FirebaseDevDay
Uploading a File
var storageRef = firebase.database().ref();
var fileRef = storageRef.child(‘/files/hello.jpg’);
#FirebaseDevDay
Uploading a File
var storageRef = firebase.database().ref();
var fileRef = storageRef.child(‘/files/hello.jpg’);fileRef.put(file, metadata) .then((snapshot) => { // Upload successful. }) .catch((error) => { });
#FirebaseDevDay
Downloading a File
fileRef.getDownloadURL() .then((url) => { // Insert url into an <img> tag // or download directly from url // with XMLHttpRequest }) .catch((error) => { });
#FirebaseDevDay
DeploymentInstall the Firebase CLI
npm install –g firebase-tools
Initialize your app$ firebase init
Add a file
Deploy your website$ firebase deploy
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud Messaging
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud MessagingRemote Config
#FirebaseDevDay
Remote ConfigMake changes to your app's default behavior and appearance by changing server-side parameter values.
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud MessagingRemote Config
App Quality ServicesTest Lab for Android
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud MessagingRemote Config
App Quality ServicesTest Lab for AndroidCrash Reporting
#FirebaseDevDay
DEVELOPGROW
EARN
Backend ServicesRealtime DatabaseAuthenticationHostingStorageCloud MessagingRemote Config
App Quality ServicesTest Lab for AndroidCrash Reporting
AcquisitionDynamic LinksInvitesAdWords
Re-EngagementNotificationsApp Indexing
In-app AdsAdMob
Analytics