Nashville DevFest '17 - When To Go Native (Jonathan Wiley, LunarLincoln)

Post on 08-Feb-2017

162 views 2 download

Transcript of Nashville DevFest '17 - When To Go Native (Jonathan Wiley, LunarLincoln)

When To Go Native Jonathan Wiley

DevFest ‘17

Who is Jonathan Wiley

ME ME ME MESpeaker Introduction

3

When To Go Native OutlineWe'll discuss the popular ways to develop mobile apps

We'll cover the strengths and weaknesses of each approach

We'll cover methods for deciding when to go native

We'll look at some examples of apps and pick an approach for each one

DevFest ‘17

Popular App Development Techniques

Web Hybrid, Cross Platform, & Native

DevFest ‘17

5

Web HybridWeb app wrapped in a native shell

Build with Cordova (PhoneGap), Ionic, etc.

Web technologies with native hooks

HTML5

Javascript

CSS

DevFest ‘17

6

Cross PlatformNative UI, cross platform backend

The most popular options are:

Xamarin

React Native

DevFest ‘17

7

XamarinWrite apps in C#

Specify platform specific UI

Tools provided by Microsoft

DevFest ‘17

8

React NativeWrite apps in Javascript

Leverages native UI components for each platform

OSS, currently built and maintained by Facebook

DevFest ‘17

9

Native AppsLanguage and frameworks for each platform

Write iOS apps in Objective-C or Swift

Write Android apps in Java

Tools provided and maintained by platform owners (Apple and Google)

DevFest ‘17

Which Approach is Right for my Project?

Strengths & Weaknesses

DevFest ‘17

11

Strengths & Weaknesses

Device Capabilities

User Interface

Performance

Security

DevFest ‘17

Tooling

Skills Required

Code Sharing

Deployment

12

Device CapabilitiesFull access with native

Support on cross platform for most, drop to native code for unsupported capabilities

Support on mobile web for some, harder drop to native code for unsupported capabilities

DevFest ‘17

13

User InterfaceNative UI best with native

Can achieve native results with cross platform if platform specific UIs are implemented

Uniform look of web across platforms leads to a non-native feel

DevFest ‘17

14

PerformanceBest native

Pretty good with cross platform

Not so great with web hybrid

DevFest ‘17

15

SecurityBest native

Decent with cross platform

Vulnerable with web hybrid

DevFest ‘17

16

ToolingFirst party tools when doing native development

React Native updates from Facebook

Xamarin updates from Microsoft, use Visual Studio

Hybrid web uses web tooling and light build tools from vendors

DevFest ‘17

17

Skills RequiredReally a difference in tooling and languages

For any of these beyond hybrid web you'll need to have a pretty deep knowledge of each platform

DevFest ‘17

18

Shared CodeNone with native

Most with cross platform

All with hybrid web

DevFest ‘17

19

DeploymentUpload to app stores with all of these

React Native and hybrid web can be updated without app review

Technically iOS apps have to feel native

Closer to code signing and better deployment tools for native

DevFest ‘17

So what does all of this mean?

When To Go NativeDevFest ‘17

21

Deep hardware integrationRunning in the background (GPS tracking, background content updates, VOIP) Camera access beyond basic capture Bluetooth (beacons, BTLE, bluetooth audio) Offline storage TouchID and fingerprint scanners Accelerometers Motion Coprocessor

DevFest ‘17

22

Deep platform integrationHealthKit/Google Fit

Apple Watch/Android Wear extensions

Today widget/Android widgets

iMessage extensions

Siri

HomeKit

Media libraries

DevFest ‘17

23

When performance mattersReal-time audio/video processing

Heavy animations

Machine learning

Efficiently running in the background

DevFest ‘17

24

When UX *really* mattersHigh touch applications

Rich user interactions

High profile apps

DevFest ‘17

25

Latest & GreatestNo reliance on 3rd parties to support features before you can

Start developing for new platforms before they're released to the public

DevFest ‘17

26

When security is a priorityHealthcare

Corporate

Government

DevFest ‘17

27

When to go cross platformWhen you can leverage JS or C# developers to focus on mobile

When you don't need deep hardware integration

When you don't need deep platform integration

When you don't need cutting edge

DevFest ‘17

28

When to go web hybrid (or just web!)

When you have existing web talent to focus on mobile

When functionality is fairly basic

When user experience doesn't have to be stellar

DevFest ‘17

Case Studies

Example AppsLunarLincoln

30

XOEyeMobile Application

XOEye equips field technicians with wearable technology systems that capture and share the right information with the right people at the right time. LunarLincoln built a VOIP app for XOEye that lets their users communicate via real-time audio and video streaming when they’re on the go.

31

CompassMobile Application

Compass employs the powerful native sensors in your phone to give you perspective on your habits over time. Open Compass and instantly participate in the trajectory of your life. Learn more about what makes you tick, get insights, and replay your day.

• Observe your behavior over time

• Own your data and take it further with export to CSV

• See the big picture and accomplish goals with insight cards

32

LoLoMobile Application

Lolo or “Locals Supporting Locals” is a citywide loyalty program. LoLo essentially turns any credit or debit card into a rewards card by tracking spending when those cards are used with participating businesses. Nothing new to carry, nothing to remember; just spend like normal.

33

The Brain at Work ExperimentMobile Application

The TReAD Lab studies the behavioral and neurobiological determinants of cost/benefit decision-making in healthy individuals, as well as in patients with mental illness. The Brain at Work Experiment allows test subjects to participate outside the lab as well as more frequently allowing for a richer data set for the study.

What have we learned?

RecapLunarLincoln

35

When To Go Native Outline

We discussed the popular ways to develop mobile apps

We covered the strengths and weaknesses of each approach

We covered an methods for deciding when to go native

We looked at some examples of apps and pick an approach for each one

DevFest ‘17

ThanksFollow us online: @LunarLincoln, @microchip128