introducing configurable mobile app development · 2015-02-17 · create native ios, android, mac...

42
Introduce Configurable Mobile App Development Moxie Zhang – Esri R&D Center Beijing

Upload: others

Post on 24-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Introduce Configurable Mobile App DevelopmentMoxie Zhang – Esri R&D Center Beijing

Page 2: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Mobile app development starts with many options

Page 3: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

…and there are different approaches to build an app

Page 4: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

…and there are different approaches to build an app

Page 5: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Beyond Native Apps

Create native iOS, Android, Mac and Windows apps in C#.

Anything you can do in Objective-C, Swift or Java, you can

do in C#.

Develop in Lua, use the same code-base and go cross-

platform.

Deploying HTML5, native, or hybrid mobile apps using

open and standards-based `tools.

• Build native apps for iOS and Android using JavaScript

• Native UI, push, analytics, login modules "out-of-the

box"

• Cloud build service, no need to setup Eclipse / Xcode

• Update your app without re-submitting to the App Store

• Open platform, extend with hooks, write native modules

Page 6: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

FC P PC F C F P Pf F PlF Pl Pf F Pl Pf F Pl

The Types of Mobile Apps

Pf = Performance F = Function Pl = Platform Dev = Easy Development

HTML5 Native Hybrid “need”

Pf

Dev Dev Dev Dev

Page 7: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Love Native App

Has better performance and user experience

Works connected and disconnected from internet

Has access of all device capabilities

Works with sensors connected to the device

Page 8: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

… however, native app development is not easy

A well rounded native app needs on iOS and Android, at least

Need good mobile developers

Need two at least

Esri customers usually do not have the above

Page 9: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Jaeger

Page 10: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

aegerA new breed of cross platform mobile application development

Developers extend Jaeger by creating widgets using ArcGIS API for JavaScript

A Jaeger app is configurable using Web AppBuilder for ArcGIS

A Jaeger app runs in pure native Runtime SDK includes all interactive and UI

Advanced developers extend Jaeger theme via native development

Page 11: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

Native

Advanced UI interactions

Fastest performance

App store distribution

Hybrid

Web developer skills

Access to native platform

Performance issue

App store distribution

HTML5

Web developer skills

Instant updates

Usability and performance issue

Unrestricted distribution

Jaeger

Web developer skills

High performance

Full platform access

App store distribution

Page 12: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

Why hasn’t been done the way before?

Because not everyone has extensive and single-core Runtime SDKs.

Page 13: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

Widgets

Functional modules that contain

only programming logics without

dealing with user interactive and

visualization

Panels with UI elements

As part of the Jaeger theme,

panels and a fix number of UI

elements are provided

Map and events

All map, events handling and visual

aspect of Jaeger are handled in

native core. No performance loss

A Jaeger App

Page 14: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

How a Jaeger App is Built

Build a Jaeger App with Web AppBuilder A Jaeger App

App

Configurator

Widget

Developers

Theme

Developers

Packaging

and

Signing

Web AppBuilder - Jaeger

`w w w

w w Manual

ConfigurationWAB GUI

Configurationw w w

Jaeger

Core

Jaeger

Core

Page 15: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

The Jaeger Ecosystem

Web AppBuilder - Jaeger

Esri Esri CustomersPartners/Developers

Widgets

Themes

Apps

Jaeger

iOS

w www w w www w w www w w www w ww

T T T T T

Jaeger

Android

A A AAAAA

JavaScript

Native

Configuration

Page 16: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

Jaeger for iOS

Page 17: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

Jaeger for Android

Page 18: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

for iOS and Android devices

Create and configure

a Jaeger App

Demo

Web AppBuilder - Jaeger

Page 19: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

under the hood

Page 20: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Inside Jaeger App

Map

Manager

Widget

Manager

Panel

Manager

Layout

Manager

Config

Manager

Messaging and Events

Web AppBuilder - Jaeger

w w w

w w

Page 21: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Jaeger

aeger for

developers

Develop Widgets with ArcGIS API for JavaScript (Jaeger)

Develop Jaeger UI template (aka Theme) in platform

native programming

Page 22: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Going beyond

Web AppBuilder for ArcGIS 1.0

Moxie Zhang, Esri R&D Center Beijing, August 2014

Page 23: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder for ArcGIS Components

Web AppBuilder

v

widgets

Themes

Stem App

A Web App

w w w

w ww w

w w w

config

GUI

Builder

w w w

w w

Page 24: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder

A menu of tools

Shortcut items

Map, of cause

Interactive content

The “player”

Page 25: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder

Branding(icon, color, title)

Widgets on screento form the UI items

Theme Widget:HeaderController

Panel contains widget’s content.It determines how widget is shown.

Placeholder as part of App layout for addingMore widgets

Page 26: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Architecture

Android/iOS SDK

ArcGIS

Runtime

SDKEvent Bus

Base Theme

Map Manager

Callout

Base Widget

Configuration file

App 1

Widge1

Widge2

Widge…

Config1

Config2

Config…

Theme1

App 2

Widge1

Widge3

Widge…

Config11

Config3

Config…

Theme1

App…

Widge4

Widge5

Widge…

Config4

Config5

Config…

Theme2

Page 27: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Widget Lifecycle

App Start

App Exit

Two

Layouts

Screen

Pool

Widget.onCreate()

Widget.onSelected()

Customized Action

Widget.onDestroy()

Page 28: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Widget Development

ZoomIn.h

ZoomIn.m

Page 29: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Widget Development

//ZoomIn.h

@interface ZoomIn : BaseWidget

@end

//ZoomIn.m

@implementation ZoomIn

-(void)selected

{

[super selected];

[self.mapView zoomIn:YES];

}

Page 30: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

HelloWorld

Page 31: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

HelloWorld

//HelloWorld.h

@interface HelloWorld : BaseWidget

@end

//HelloWorld.m

@implementation HelloWorld

-(void)create

{

[super create];

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

[button setFrame:CGRectMake(40, 20, 200, 44)];

[button setTitle:@"HelloWorld" forState:UIControlStateNormal];

[button setBackgroundColor:[UIColor grayColor]];

[button addTarget:self action:@selector(helloWorld:) forControlEvents:(UIControlEventTouchDown)];

[self.dataPanelView addSubview:button];

}

-(void)selected

{

[super selected];

[self showDataPanel];

}

-(void)helloWorld:(id)sender

{

[self.mapView zoomIn:YES];

}

Page 32: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

HelloWorld

Page 33: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

How to make the builder extensible

Web AppBuilder

Page 34: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

Web AppBuilder - Optimus

OptimusProject

Page 35: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

• Re-architecture Web AppBuilder to enable extendibility

• Optimus allow extend the AppBuilder to add new type of build, such as:

- Web 3D application

- Jaeger Mobile app

- ArcPad project

- Storymap

• Like Eclipse, it’ll enable common build environment with plugins

What is the Project Optimus

Web AppBuilder - Optimus

Page 36: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

How eclipse does it

Eclipse Runtime

Plugin Plugin

Plugin

Web AppBuilder - Optimus

Extension point definition schema(.exsd)

Extension PointExtension

Page 37: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

How eclipse does it

<extension

point="org.eclipse.ui.views">

<category

name="Hello Category"

id="com.example.helloworld">

</category>

<view

name="Hello View"

icon="icons/sample.gif"

category="com.example.helloworld"

class="com.example.helloworld.HelloWorldView"

id="com.example.helloworld.HelloWorldView">

</view>

</extension>

Web AppBuilder - Optimus

Hello World plugin.xml

Page 38: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

How Optimus will Do it

Web AppBuilder - Optimus

Extension points

A big Plugin

Plugin

Extension points

Page 39: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

• Manage app (list, create, delete, deploy, etc.)

• Build app’s config file

• Assembling app (move all need parts together)

• Build app

• Package app

• Publish events when building app, so app can preview in real time

• Preview app in real time

What does Optimus Runtime Provide

Web AppBuilder - Optimus

Similar to the Eclipse’s architecture, all of the job can be a plugin in builder.

Page 40: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can

• Provides an extensible framework

• Provide out-of-box plugins, such as map config, app management (list, delete, etc.), ArcGIS Portal/AGOL integration and so on

• Provides many dijits, such as ServiceBrowser, RendererChooser, etc.

• If a new type of app uses widget/theme, Optimus provides widget/theme repository management and good community support.

What Optimus Offers

Web AppBuilder - Optimus

Page 41: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can
Page 42: Introducing Configurable Mobile App Development · 2015-02-17 · Create native iOS, Android, Mac and Windows apps in C#. Anything you can do in Objective-C, Swift or Java, you can