iOSDevCamp Firebase Overview

Post on 10-Feb-2017

180 views 0 download

transcript

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