iOSDevCamp Firebase Overview
James Daniels@jamesuriah
Creating a successful app is hard
Cross-platform
Integrated, but flexible
Developer experience matters
Getting Started with Firebase
Firebase/Core Analytics & Setup
Firebase/AdMob AdMob
Firebase/Messaging Notifications
Firebase/Database Realtime Database
Firebase/AppInvites App Invites
Firebase/DynamicLinks Dynamic Links
Firebase/RemoteConfig Remote Config
Firebase/Auth Auth
Firebase/AppIndexing App Indexing
...etc ...etc.
Only pod what you needplatform :ios, '9.0'
# Uncomment this line if you're using Swift
use_frameworks!
target 'FireTomato' do
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
end
Firebase/Core Analytics & Setup
Firebase/AdMob AdMob
Firebase/Messaging Notifications
Firebase/Database Realtime Database
Firebase/AppInvites App Invites
Firebase/DynamicLinks Dynamic Links
Firebase/RemoteConfig Remote Config
Firebase/Auth Auth
Firebase/AppIndexing App Indexing
...etc ...etc.
Only pod what you needplatform :ios, '9.0'
# Uncomment this line if you're using Swift
use_frameworks!
target 'FireTomato' do
pod 'Firebase/Core'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
end
pod 'Firebase'
http://www.istockphoto.com/photo/grumpy-exotic-tortoiseshell-cat-portrait-gm178110810-24724193?st=bbb22f7
CocoaPods? Booo…!
Creating a Firebase Project
Creating a Firebase Project
Creating a Firebase Project
Creating a Firebase Project
Creating a Firebase Project
FIRApp.configure()
Firebase console
Create OAuth clients
Create analytics account
Register for cloud messaging
Configure AdMob account
Create real-time database
Create storage bucket
OAuth Client IDs
Firebase Database URLs
Firebase Storage Host
Cloud Messaging Sender ID
Ad Unit IDs
GoogleService-Info.plist
Analytics App ID
FIRApp.configure()
Configure OAuth library
Configure Database library
Configure Cloud Messaging library
Configure AdMob library
Configure Storage library
OAuth Client IDs
Firebase Database URLs
Firebase Storage Host
Cloud Messaging Sender ID
Ad Unit IDs
GoogleService-Info.plist
Analytics App ID
Configure Anayltics library
Product Tour
⋅ Designed for apps
⋅ Event and user centric
⋅ Connects across Firebase
⋅ Free & unlimited
Sample reports go here
Events go here
Filtered event
Conversion funnels
Audiences
⋅ Authentication & account management
⋅ Supports:⋅ Email & password⋅ Social providers⋅ Existing auth systems
⋅ Authentication & account management
⋅ Supports:⋅ Email & password⋅ Social providers⋅ Existing auth systems⋅ Anonymous auth
⋅ Authentication & account management
⋅ Supports:⋅ Email & password⋅ Social providers⋅ Existing auth systems⋅ Anonymous auth
⋅ [New!] Out-of-the box UI
⋅ Cloud-hosted NoSQL database
⋅ Synchronization & conflict resolution
⋅ Access directly from your app
SectionXSectionYSectionZ
⋅ Serve static assets
⋅ SSL by default
SectionXSectionYSectionZ
⋅ Serve static assets
⋅ SSL by default
⋅ New: Free custom domains
⋅ Easy file storage
⋅ Handles poor connectivity
⋅ Backed by & accessible from Google Cloud Storage
⋅ Static, "read-only" data⋅ Website assets⋅ Images / audio downloaded
from your app
⋅ Static, "read-only" data⋅ Website assets⋅ Images / audio downloaded
from your app
⋅ Read-write blobs of data⋅ User-generated content⋅ App-generated content
⋅ Update your app from the cloud
⋅ Send different values to different groups
⋅ A/B test or gradual rollouts
⋅ Customized content
Default values
"button_text" : "Release the Kraken""kraken_state": "Enraged"
"sea_level": 30.0
[[FIRRemoteConfig remoteConfig] setDefaults:NSDictionary *];
Default values
"button_text" : "Release the Kraken""kraken_state": "Enraged"
"sea_level": 30.0
[[FIRRemoteConfig remoteConfig] fetchWithCompletionHandler:...];
"kraken_state": "Ennui"
[[FIRRemoteConfig remoteConfig] activateFetched];
Combined values
"button_text" : "Release the Kraken""Kraken_state": "Enraged"
"sea_level": 30.0"kraken_state": "Ennui"
[[[FIRRemoteConfig remoteConfig] configValueForKey: "kraken_state"] stringValue]; // Ennui
Combined values
"button_text" : "Release the Kraken""Kraken_state": "Enraged"
"sea_level": 30.0"kraken_state": "Ennui"
⋅ See crashes & impact
⋅ Version & OS drill-down
⋅ Customize different user experiences via a single URL
⋅ Works across platforms
⋅ Preserves URL state, even through app install flow
⋅ Analytics insights
Send to Play Store Send to App Store
Send to Android App
Send to web page
Send to iOS App
Send to web page
Send to Play Store Send to App Store
Install App
Grab link data on first open
Install App
Grab link data on first open
Dynamic Link goes here
Whoa. Check out all these vegetarian
recipes!
Dynamic Link goes here
⋅ Drop-in widget for app sharing
⋅ Supports SMS and Email
⋅ Recipient suggestions from Google
⋅ Built on Dynamic Links
⋅ Universal App Campaigns
⋅ 2B downloads to date
⋅ Audience targeting
⋅ Conversion tracking and optimization
APNs
Your Server
Why?
"The best code is no code at all"
-- Jeff Atwood
Topics
⋅ Simple UI, with no coding
⋅ Built on Cloud Messaging
⋅ Audience targeting
⋅ Conversion funnel insights
⋅ Engaging formats: video, interstitial & native
⋅ 1M+ apps using AdMob
⋅ Integrated with Firebase SDK
#firebase
Thank You!James Daniels@jamesuriah
Check out our iOS Code Labhttp://bit.ly/2gqSA9Q