SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
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
Fire up your mobile app!
Add Twitter configuration to the Firebase project
Fire up your mobile app!
• 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
Fire up your mobile app!
• 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
 
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
 
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
 
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

How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 

Kürzlich hochgeladen (20)

How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Salesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptxSalesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptx
 
IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 

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
  • 9. • Low cost entry
  • 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
  • 24. Add Twitter configuration to the Firebase project
  • 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
  • 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