SlideShare ist ein Scribd-Unternehmen logo
1 von 40
FIRE UP YOUR MOBILE APP!
Suganthi Giridharan
How did I get started on this
Some integration with
syncing favorites
between devices would
be really cool.
…get them in iOS
app.
• Support Android and iOS
• Store user data in the cloud
Rebuild the app …
• Familiarity with C# and Xaml
• Cross platform
• Less code
Xamarin Forms
Choices for Mobile Backend
• Quick and reliable
servers
• Easy management
• Auto-scaling
• Market leader
• Backed by amazon
• Reliable
• Free tier
• High learning curve
• poor CPU
performance
• Realtime backend made
easy
• Fast and responsive
• Easy setup
• Real-time
• JSON
• Backed by google
• Free – spark plan
• Angular adaptor
• Reliable
• Great customer support
• Scalability is not infinite
• Scales well and quite
easy
• Can use .Net or open
source tools
• Startup friendly
• Startup plans via
BizSpark
• High performance
• Wide choice of
services
• Low cost
• Lots of integrations
• More Administrative
work
• Ease of use
Cross platform
Get started for Android
API Reference
Codelabs
Get started for iOS
API Reference
Codelabs
Get started for C++
API Reference
Get started for Unity
API Reference
Get started for Web
API Reference
Codelabs
Get started for Admin
API Reference
• Pick and Choose products
Realtime Database
Authentication
Cloud Storage
Test Lab
Firestore
Hosting
Cloud Functions
Crashlytics
Performance
Analytics
Dynamic Links
Invites
AdMob
Cloud Messaging
Remote Config
App Indexing
AdWords
Predictions
• Low cost entry
For conference app, used …
Realtime Database
Authentication
• All products
• Documentation
• Create the first project in Firebase
Demo – Firebase console
Firebase - Realtime Database
• NoSQL cloud database
• Store and Sync data across all clients
• Supports Offline capability
• Load Data
• Structure of Data
• Read Data – Open to all clients – Access data through HTTP
Demo
Database - Rules
Rule Types
.read Describes if and when data is allowed to be read by users.
.write Describes if and when data is allowed to be written.
.validate
Defines what a correctly formatted value will look like, whether it has
child attributes, and the data type.
.indexOn Specifies a child to index to support ordering and querying.
Firebase Database Rules have a JavaScript-like syntax and come in four types:
Database - Authorization Rules
Allow anonymous read, No write ( Rules cascade )
{
"rules": {
“sessions": {
".read": true,
".write": false
}
}
}
Allow only authenticated users to write
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
Database – Validation & Index Rules
.validate rule uses same expression as .read and .write
Access to all of the built-in functions and variables but rules do not cascade
{
"rules": {
"speakers": {
".validate": "newData.isString() && newData.val().length < 5000"
}
}
}
Index Rules
{
"rules": {
"sessions": {
".indexOn": ["sessionid"]
}
}
}
DATA SYNCHRONIZATION
• Data is synchronized between connected clients
• Real time streaming
• Offline mode
Firebase Authentication – Federated Identity
Providers
Based on OAuth and OpenID Connect standard
OAuth - The Main Actors
Client Authorization Server
Resource Owner Resource Server
… is registered with
… issues access token
… uses … trusts
… “owns” a resource
… accesses
① Create the client app
② Register app in Twitter site
③ Register app in Firebase
Demo for Firebase Authentication – Twitter
Provider
• Create an empty PCL Xamarin Forms project
• Android project settings
Note the package name
Get the SHA1 of your signing keystore. For debug keystore use the
command below to get SHA1 hash
• iOS project settings
Note the Bundle identifier
Create client app
Debug Keystore – Located at <home>/.android/debug.keystore
Run the following command to find SHA1 hash
keytool.exe -list -v -keystore "%LocalAppData%XamarinMono for Androiddebug.keystore" -
alias androiddebugkey -storepass android -keypass android
• Navigate to https://dev.twitter.com/apps/new and login with
your Twitter account credentials when prompted.
• Enter your Application Name, Description, your website address and callback
URL.
• Accept the Developer agreement and click "Create your Twitter Application".
• Copy the consumer key (API key) and consumer secret from the screen and
use into your application.
Configure app in Twitter site
Add Twitter configuration to the Firebase project
• Configuration file that has Firebase metadata for client app.
• Copy the google-services.json file into the app directory of android project.
• Add google-services plugin to android app – configure android app to use
Firebase
google-services.json
• Configuration file that has Firebase metadata for iOS app.
• Copy the plist file into the app directory of iOS project.
• Demo
GoogleService-Info.plist
Sign In Flow
Initialize
Firebase App
NO
Get Shared
Instance of App
Is User
Signed In
READ
UPDATE
Twitter Login
Screen
Get Twitter OAuth
Token and Secret
Exchange for
Firebase Credential
Get Current
User
YES
• Add Xamarin.Auth component
Provides Cross-platform API for authenticating users and storing their accounts.
Authenticate via OAuth1.0 and OAuth2.0 and store user credentials.
• Add Xamarin.Firebase.Auth component
Provides API for Firebase services
• Add Google Play services
Provides API for Google Play services
Integration of Xamarin Forms app to Firebase
• Creating/Launching Login UI is platform specific
Android
global::Android.Content.Intent ui_object = Auth1.GetUI(this);
StartActivity(auth.GetUI(this));
iOS
UIKit.UIViewController ui_object = Authi1.GetUI();
PresentViewController(ui_object, true, null );
• Detecting/Fetching/Intercepting URL change
OAuth handshake
• Store account –Keychain on iOS and KeyStore on Android
Platform specific code
Xamarin Forms Custom Page Renderer
• Custom PageRenderers are for screens that require platform-specific APIs
• We will have platform-specific ProviderLoginPage implementation of Xamarin.Auth.
• In PCL project create a subclass of ContentPage:
• Android:
• iOS:
• Add the [assembly] attribute above the class. The first parameter references the Xamarin.Forms page in your
PCL or Shared Project, while the second parameter references the platform-specific page you wish to replace it
with:
public partial class ProviderLoginPage : ContentPage
{
}
[assembly:ExportRenderer(typeof(ProviderLoginPage), typeof(LoginRenderer))]
public class LoginRenderer : PageRenderer, IOnCompleteListener, IOnSuccessListener
{
}
[assembly:ExportRenderer(typeof(ProviderLoginPage), typeof(LoginViewController))]
public class LoginViewController : ViewController
Demo – User Sign In End to End – Twitter example
• Navigate to https://console.developers.google.com
• Login with your Google account credentials when prompted.
• Select Credentials tab and click on Create Project.
• Add your App name and click on Create.
Google Sign In Configuration on the Server
Google Sign In For iOS - Client side
• Google deprecated use of Web Views to authenticate with their services
• Require the use of their own library – Google Sign In for iOS
• Use Google Sign-in for iOS Xamarin component and custom page renderer to
accomplish this task in Xamarin Forms.
• Download the GoogleService-Info.plist file and set up AppDelegate
• OnElementChanged – Add code to handle signing
• DidSignIn method – complete the task
Google Sign In For Android - Client side
• Google deprecated use of Web Views to authenticate with their services
• Require the use of their own library – Google Sign In
• Use Google Sign-in Xamarin component and custom page renderer to
accomplish this task in Xamarin Forms.
• OnElementChanged – Add code to handle signing
• DidSignIn method – complete the task
• Firebase was Easy to Use
• Configuration and Documentation
• Xamarin Forms – Less Code to Write
• Had Lots of Plugins
• Integration – Version compatibility between different components
• Troubleshooting
• Emulator – Deployment and slowness issues
What I Liked?
What were the challenges?
You may have an idea for an app
• Xamarin
• Firebase
Resources
https://github.com/xamarin/Xamarin.Auth
https://components.xamarin.com/gettingstarted/firebase-auth
https://components.xamarin.com/gettingstarted/googleiossignin
https://blog.xamarin.com/customize-your-xamarin-forms-app-with-pages-for-each-platform
https://firebase.google.com/
https://github.com/step-up-labs/firebase-database-dotnet
Slide deck location
Demo code location
https://github.com/sgiri/Codemash2018
Suganthi.Giridharan@gmail.com
@greenpal
Contact Info

Weitere ähnliche Inhalte

Was ist angesagt?

Advanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan LippsAdvanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan LippsPerfecto by Perforce
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appiumPratik Patel
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using AppiumMindfire Solutions
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application developmentKunjan Thakkar
 
#Fame case study
#Fame case study#Fame case study
#Fame case studyKeshav Kashyap
 
Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Devathon
 
Hybrid Mobile App
Hybrid Mobile AppHybrid Mobile App
Hybrid Mobile AppPalani Kumar
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaEdureka!
 
Android Automation Testing with Selendroid
Android Automation Testing with SelendroidAndroid Automation Testing with Selendroid
Android Automation Testing with SelendroidVikas Thange
 
Mobile Test Automation - Appium
Mobile Test Automation - AppiumMobile Test Automation - Appium
Mobile Test Automation - AppiumMaria Machlowska
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaNoam Kfir
 
Cross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToCross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToGlobalLogic Ukraine
 
Internship presentation
Internship presentationInternship presentation
Internship presentationPrativa Neupane
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumBugRaptors
 
Build Consumer Apps Using Mobile SDK and Ionic Framework
Build Consumer Apps Using Mobile SDK and Ionic FrameworkBuild Consumer Apps Using Mobile SDK and Ionic Framework
Build Consumer Apps Using Mobile SDK and Ionic FrameworkSalesforce Developers
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Sauce Labs
 
Cross platform test automation using Appium
Cross platform test automation using AppiumCross platform test automation using Appium
Cross platform test automation using AppiumJatin Bhasin
 

Was ist angesagt? (20)

Appium
AppiumAppium
Appium
 
Advanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan LippsAdvanced Appium Tips & Tricks with Jonathan Lipps
Advanced Appium Tips & Tricks with Jonathan Lipps
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appium
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
 
Introduction to hybrid application development
Introduction to hybrid application developmentIntroduction to hybrid application development
Introduction to hybrid application development
 
#Fame case study
#Fame case study#Fame case study
#Fame case study
 
Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020Flutter vs React Native Development in 2020
Flutter vs React Native Development in 2020
 
Hybrid Mobile App
Hybrid Mobile AppHybrid Mobile App
Hybrid Mobile App
 
Appium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | EdurekaAppium Interview Questions and Answers | Edureka
Appium Interview Questions and Answers | Edureka
 
Android Automation Testing with Selendroid
Android Automation Testing with SelendroidAndroid Automation Testing with Selendroid
Android Automation Testing with Selendroid
 
Appium
AppiumAppium
Appium
 
Mobile Test Automation - Appium
Mobile Test Automation - AppiumMobile Test Automation - Appium
Mobile Test Automation - Appium
 
Building Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using CordovaBuilding Cross-Platform JavaScript Apps using Cordova
Building Cross-Platform JavaScript Apps using Cordova
 
Cross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToCross Platform Appium Tests: How To
Cross Platform Appium Tests: How To
 
Internship presentation
Internship presentationInternship presentation
Internship presentation
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
 
Presentation
PresentationPresentation
Presentation
 
Build Consumer Apps Using Mobile SDK and Ionic Framework
Build Consumer Apps Using Mobile SDK and Ionic FrameworkBuild Consumer Apps Using Mobile SDK and Ionic Framework
Build Consumer Apps Using Mobile SDK and Ionic Framework
 
Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)Using Selenium to Test Native Apps (Wait, you can do that?)
Using Selenium to Test Native Apps (Wait, you can do that?)
 
Cross platform test automation using Appium
Cross platform test automation using AppiumCross platform test automation using Appium
Cross platform test automation using Appium
 

Ähnlich wie Fire up your mobile app!

SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012NCCOMMS
 
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Bram de Jager
 
Azure API Apps
Azure API AppsAzure API Apps
Azure API AppsBizTalk360
 
IBM Social Business Toolkit
IBM Social Business ToolkitIBM Social Business Toolkit
IBM Social Business ToolkitVan Staub, MBA
 
Developing Apps with Azure AD
Developing Apps with Azure ADDeveloping Apps with Azure AD
Developing Apps with Azure ADSharePointRadi
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webpartsPrabhu Nehru
 
Developing a provider hosted share point app
Developing a provider hosted share point appDeveloping a provider hosted share point app
Developing a provider hosted share point appTalbott Crowell
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformMicrosoft 365 Developer
 
Identity Management in SharePoint 2013
Identity Management in SharePoint 2013Identity Management in SharePoint 2013
Identity Management in SharePoint 2013SPC Adriatics
 
Developing a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint appDeveloping a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint appTalbott Crowell
 
JUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearJUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearprajods
 
SFDC Inbound Integrations
SFDC Inbound IntegrationsSFDC Inbound Integrations
SFDC Inbound IntegrationsSujit Kumar
 
Developing Apps for SharePoint Store
Developing Apps for SharePoint StoreDeveloping Apps for SharePoint Store
Developing Apps for SharePoint StoreKashif Imran
 
PowerApps, the Developer Story: Build an API to Integrate Corporate Data
PowerApps, the Developer Story: Build an API to Integrate Corporate DataPowerApps, the Developer Story: Build an API to Integrate Corporate Data
PowerApps, the Developer Story: Build an API to Integrate Corporate DataBram de Jager
 
Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013SPC Adriatics
 
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Serdal Kepil
 
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureJeremy Likness
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365Luis Valencia
 
#spsuk: Understanding the Office 365 Architecture
#spsuk: Understanding the Office 365 Architecture#spsuk: Understanding the Office 365 Architecture
#spsuk: Understanding the Office 365 Architecturepearce.alex
 

Ähnlich wie Fire up your mobile app! (20)

SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
SPCA2013 - Developing SharePoint 2013 Apps with Visual Studio 2012
 
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
Developing SharePoint 2013 apps with Visual Studio 2012 - SharePoint Connecti...
 
Azure API Apps
Azure API AppsAzure API Apps
Azure API Apps
 
IBM Social Business Toolkit
IBM Social Business ToolkitIBM Social Business Toolkit
IBM Social Business Toolkit
 
Developing Apps with Azure AD
Developing Apps with Azure ADDeveloping Apps with Azure AD
Developing Apps with Azure AD
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
 
Developing a provider hosted share point app
Developing a provider hosted share point appDeveloping a provider hosted share point app
Developing a provider hosted share point app
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platformCommunity call: Develop multi tenant apps with the Microsoft identity platform
Community call: Develop multi tenant apps with the Microsoft identity platform
 
Identity Management in SharePoint 2013
Identity Management in SharePoint 2013Identity Management in SharePoint 2013
Identity Management in SharePoint 2013
 
Developing a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint appDeveloping a Provider Hosted SharePoint app
Developing a Provider Hosted SharePoint app
 
JUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGearJUDCon 2014: Gearing up for mobile development with AeroGear
JUDCon 2014: Gearing up for mobile development with AeroGear
 
SFDC Inbound Integrations
SFDC Inbound IntegrationsSFDC Inbound Integrations
SFDC Inbound Integrations
 
Developing Apps for SharePoint Store
Developing Apps for SharePoint StoreDeveloping Apps for SharePoint Store
Developing Apps for SharePoint Store
 
PowerApps, the Developer Story: Build an API to Integrate Corporate Data
PowerApps, the Developer Story: Build an API to Integrate Corporate DataPowerApps, the Developer Story: Build an API to Integrate Corporate Data
PowerApps, the Developer Story: Build an API to Integrate Corporate Data
 
Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013
 
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
Introducing amplify and full stack demo app built with vue.js, graph ql, auth...
 
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with Azure
 
Charla desarrollo de apps con sharepoint y office 365
Charla   desarrollo de apps con sharepoint y office 365Charla   desarrollo de apps con sharepoint y office 365
Charla desarrollo de apps con sharepoint y office 365
 
#spsuk: Understanding the Office 365 Architecture
#spsuk: Understanding the Office 365 Architecture#spsuk: Understanding the Office 365 Architecture
#spsuk: Understanding the Office 365 Architecture
 

KĂźrzlich hochgeladen

Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 

KĂźrzlich hochgeladen (20)

Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 

Fire up your mobile app!

  • 1. FIRE UP YOUR MOBILE APP! Suganthi Giridharan
  • 2. How did I get started on this Some integration with syncing favorites between devices would be really cool. …get them in iOS app.
  • 3. • Support Android and iOS • Store user data in the cloud Rebuild the app …
  • 4. • Familiarity with C# and Xaml • Cross platform • Less code Xamarin Forms
  • 6. • Quick and reliable servers • Easy management • Auto-scaling • Market leader • Backed by amazon • Reliable • Free tier • High learning curve • poor CPU performance • Realtime backend made easy • Fast and responsive • Easy setup • Real-time • JSON • Backed by google • Free – spark plan • Angular adaptor • Reliable • Great customer support • Scalability is not infinite • Scales well and quite easy • Can use .Net or open source tools • Startup friendly • Startup plans via BizSpark • High performance • Wide choice of services • Low cost • Lots of integrations • More Administrative work
  • 7. • Ease of use Cross platform Get started for Android API Reference Codelabs Get started for iOS API Reference Codelabs Get started for C++ API Reference Get started for Unity API Reference Get started for Web API Reference Codelabs Get started for Admin API Reference
  • 8. • Pick and Choose products Realtime Database Authentication Cloud Storage Test Lab Firestore Hosting Cloud Functions Crashlytics Performance Analytics Dynamic Links Invites AdMob Cloud Messaging Remote Config App Indexing AdWords Predictions
  • 10. For conference app, used … Realtime Database Authentication
  • 11. • All products • Documentation • Create the first project in Firebase Demo – Firebase console
  • 12. Firebase - Realtime Database • NoSQL cloud database • Store and Sync data across all clients • Supports Offline capability
  • 13. • Load Data • Structure of Data • Read Data – Open to all clients – Access data through HTTP Demo
  • 14. Database - Rules Rule Types .read Describes if and when data is allowed to be read by users. .write Describes if and when data is allowed to be written. .validate Defines what a correctly formatted value will look like, whether it has child attributes, and the data type. .indexOn Specifies a child to index to support ordering and querying. Firebase Database Rules have a JavaScript-like syntax and come in four types:
  • 15. Database - Authorization Rules Allow anonymous read, No write ( Rules cascade ) { "rules": { “sessions": { ".read": true, ".write": false } } } Allow only authenticated users to write { "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } } }
  • 16. Database – Validation & Index Rules .validate rule uses same expression as .read and .write Access to all of the built-in functions and variables but rules do not cascade { "rules": { "speakers": { ".validate": "newData.isString() && newData.val().length < 5000" } } } Index Rules { "rules": { "sessions": { ".indexOn": ["sessionid"] } } }
  • 17. DATA SYNCHRONIZATION • Data is synchronized between connected clients • Real time streaming • Offline mode
  • 18. Firebase Authentication – Federated Identity Providers Based on OAuth and OpenID Connect standard
  • 19. OAuth - The Main Actors Client Authorization Server Resource Owner Resource Server … is registered with … issues access token … uses … trusts … “owns” a resource … accesses
  • 20. ① Create the client app ② Register app in Twitter site ③ Register app in Firebase Demo for Firebase Authentication – Twitter Provider
  • 21. • Create an empty PCL Xamarin Forms project • Android project settings Note the package name Get the SHA1 of your signing keystore. For debug keystore use the command below to get SHA1 hash • iOS project settings Note the Bundle identifier Create client app Debug Keystore – Located at <home>/.android/debug.keystore Run the following command to find SHA1 hash keytool.exe -list -v -keystore "%LocalAppData%XamarinMono for Androiddebug.keystore" - alias androiddebugkey -storepass android -keypass android
  • 22. • Navigate to https://dev.twitter.com/apps/new and login with your Twitter account credentials when prompted. • Enter your Application Name, Description, your website address and callback URL. • Accept the Developer agreement and click "Create your Twitter Application". • Copy the consumer key (API key) and consumer secret from the screen and use into your application. Configure app in Twitter site
  • 23.
  • 24. Add Twitter configuration to the Firebase project
  • 25.
  • 26. • Configuration file that has Firebase metadata for client app. • Copy the google-services.json file into the app directory of android project. • Add google-services plugin to android app – configure android app to use Firebase google-services.json
  • 27.
  • 28. • Configuration file that has Firebase metadata for iOS app. • Copy the plist file into the app directory of iOS project. • Demo GoogleService-Info.plist
  • 29. Sign In Flow Initialize Firebase App NO Get Shared Instance of App Is User Signed In READ UPDATE Twitter Login Screen Get Twitter OAuth Token and Secret Exchange for Firebase Credential Get Current User YES
  • 30. • Add Xamarin.Auth component Provides Cross-platform API for authenticating users and storing their accounts. Authenticate via OAuth1.0 and OAuth2.0 and store user credentials. • Add Xamarin.Firebase.Auth component Provides API for Firebase services • Add Google Play services Provides API for Google Play services Integration of Xamarin Forms app to Firebase
  • 31. • Creating/Launching Login UI is platform specific Android global::Android.Content.Intent ui_object = Auth1.GetUI(this); StartActivity(auth.GetUI(this)); iOS UIKit.UIViewController ui_object = Authi1.GetUI(); PresentViewController(ui_object, true, null ); • Detecting/Fetching/Intercepting URL change OAuth handshake • Store account –Keychain on iOS and KeyStore on Android Platform specific code
  • 32. Xamarin Forms Custom Page Renderer • Custom PageRenderers are for screens that require platform-specific APIs • We will have platform-specific ProviderLoginPage implementation of Xamarin.Auth. • In PCL project create a subclass of ContentPage: • Android: • iOS: • Add the [assembly] attribute above the class. The first parameter references the Xamarin.Forms page in your PCL or Shared Project, while the second parameter references the platform-specific page you wish to replace it with: public partial class ProviderLoginPage : ContentPage { } [assembly:ExportRenderer(typeof(ProviderLoginPage), typeof(LoginRenderer))] public class LoginRenderer : PageRenderer, IOnCompleteListener, IOnSuccessListener { } [assembly:ExportRenderer(typeof(ProviderLoginPage), typeof(LoginViewController))] public class LoginViewController : ViewController
  • 33. Demo – User Sign In End to End – Twitter example
  • 34. • Navigate to https://console.developers.google.com • Login with your Google account credentials when prompted. • Select Credentials tab and click on Create Project. • Add your App name and click on Create. Google Sign In Configuration on the Server
  • 35. Google Sign In For iOS - Client side • Google deprecated use of Web Views to authenticate with their services • Require the use of their own library – Google Sign In for iOS • Use Google Sign-in for iOS Xamarin component and custom page renderer to accomplish this task in Xamarin Forms. • Download the GoogleService-Info.plist file and set up AppDelegate • OnElementChanged – Add code to handle signing • DidSignIn method – complete the task
  • 36. Google Sign In For Android - Client side • Google deprecated use of Web Views to authenticate with their services • Require the use of their own library – Google Sign In • Use Google Sign-in Xamarin component and custom page renderer to accomplish this task in Xamarin Forms. • OnElementChanged – Add code to handle signing • DidSignIn method – complete the task
  • 37. • Firebase was Easy to Use • Configuration and Documentation • Xamarin Forms – Less Code to Write • Had Lots of Plugins • Integration – Version compatibility between different components • Troubleshooting • Emulator – Deployment and slowness issues What I Liked? What were the challenges?
  • 38. You may have an idea for an app
  • 40. Slide deck location Demo code location https://github.com/sgiri/Codemash2018 Suganthi.Giridharan@gmail.com @greenpal Contact Info

Hinweis der Redaktion

  1. 2 criteria Given these 2 criteria Pick solution – Front end - could do native or Xamarin forms – weigh in why forms? Backend – weigh in on all Cloud options – Store and sync data – Better user experience, no app is in island, doing this in spare time – did not want to invest in any infrastructure
  2. Use personalization to give each user the best experience. customize screen based on their preferences, recently used, location or language