Mobile apps
Made and managed in AEM
Takeaways
|
| |
| | |
AEM + proven open source tech
Developers apply existing web + AEM skills
Authors leverage tools they use everyday
Agenda
`-- <root>
|-- Problem?
|-- Architecture
| |-- PhoneGap
| | |-- CLI
| | `-- Plugins
| |-- Content Sync
| `-- AngularJS
|-- Dev Workflow
`-- Author Workflow
address the problem
tasked with building an app...
“Don’t download, its not worth your time just go on the website or your phone browser or computer”
"Don’t download, its not worth your time just go on the website or your phone browser or computer"
performance expectations - despite identical hardware
“Sticking to paper as it is a reliable source of getting what I need”
"Sticking to paper as it is a reliable source of getting what I need"
stability - can't count on browser
bad reviews are bad for business
Mobile apps are hard
point is...
number of reasons
different platforms
different programming languages
Content re-use across mediums
mobile, web, now app
enable reuse - not via email
Manage that content efficiently
Keep it relevant
Constraints
Performance
Battery
Connectivity
Opportunities
Touch
Sensors
Notifications
features available to mobile devices
Manage constraints
Including performance, battery, connectivity
AEM Apps
VP drew an interesting parallel: 1995
Manage customer experience from one place
give marketing control
like over their web content
reduce burden on IT
focus on dev new experiences instead of simply maintaining old ones
Now
Modify app content w/o writing code
Re-use author & business workflows
Deliver 'Over the air' content updates
same tools used to author sites
ACLs, workflows
highlight store hours use case
Analytics
Mobile services
AEM makes analytics easy
instrument our apps
devices
app versions
launches
session length
ecom: shopping cart completion & abandonment
session length
Agenda
`-- <root>
|-- Problem?
|-- Architecture
| |-- PhoneGap
| | |-- CLI
| | `-- Plugins
| |-- Content Sync
| `-- AngularJS
|-- Dev Workflow
`-- Author Workflow
Proven tech
AEM - 12 years
PhoneGap - 5 yrs
AngularJS - 5 yrs
CS - since 5.4
Apps built with web tech
you know and love
web browser
augmented with JS bridge
access to device level
Platforms
iOS
Android
WP7, WP8, Windows 8
BB10
Amazon Fire OS
Tizen
and more...
CLI commands
create <path>
build <platform>
install <platform>
run <platform>
local [command]
remote [command]
platform [command]
plugin [command]
help [command]
version
manage, automate builds
remote
PhoneGap Build
build apps without native SDKs
integrates with github
Hooks
tie in to any part of the build
install plugins, copy assets, etc.
Phases
build
compile
docs
emulate
plugin_ls
plugin_rm
plugin_add
platform_ls
platform_rm
platform_add
prepare
run
Plugins
Device-level APIs
Camera
Accelerometer
File system
Contacts
Events
Connection
Notification
<your plugin here>
Features *not* avail to sites
roll your own: reuse existing code
Demo time
PG CLI
open up dir, show Xcode project
Why Angular?
Why Angular?
AngularJS
Opinionated
Two-way data binding
Components (aka Directives)
Single page apps
Dependency injection
Community
AngularJS Projects
Ionic Framework
Angular Snap.js
angular-phonegap-ready
open source projects built on angular
Angular + AEM Challenges
Bring SPA paradigm to CMS
Author mode VS. client side templating
Access control
Model & view separation
Reusability of author’s skills
Performance
Angular + AEM
Routing
$routeProvider
.when('/content/phonegap/geometrixx/apps/ng-geometrixx-outdoors/en/home', {
templateUrl: 'home.template.html' + cacheKiller,
controller: 'geometrixxoutdoorsenhome'
})
Angular + AEM
Controllers
// Controller for page 'home'
.controller('geometrixxoutdoorsenhome',
['$scope', '$http',
function($scope, $http) {
var data = $http.get('home.angular.json' + cacheKiller);
/* swipe_carousel component controller */
data.then(function(response) {
$scope.playSpeed =
response.data["content-par/swipe_carousel"].playSpeed;
$scope.contentparngswipecarousel =
response.data["content-par/swipe_carousel"].items;
});
}
])
Handlers – new in 6.0
mobileapprootpage
mobileapppages
mobilepageassets
mobilecontentlisting
Agenda
`-- <root>
|-- Problem?
|-- Architecture
| |-- PhoneGap
| | |-- CLI
| | `-- Plugins
| |-- Content Sync
| `-- AngularJS
|-- Dev Workflow
`-- Author Workflow
Agenda
`-- <root>
|-- Problem?
|-- Architecture
| |-- PhoneGap
| | |-- CLI
| | `-- Plugins
| |-- Content Sync
| `-- AngularJS
|-- Dev Workflow
`-- Author Workflow
Takeaways
|
| |
| | |
AEM + proven open source tech
Developers apply existing web + AEM skills
Authors leverage tools they use everyday
Q & A
bit.ly/aem-pg
Thank you
_, . '__ .
'_(_0o),(__)o().
,o(__),_)o(_)O,(__)o
o(_,-o(_ )(),(__(_)oO)_
.O(__)o,__).(_ )o(_)Oo_)
.----| | | | | |_)0
/ .--| | | | | |,_)
| / | | | | | |o(_)
| | | | | | | |_/`)
| | | | | | | |O_)
| | | | | | | |
| \ | | | | | |
\ '--| | | | | |
'----| | | | | |
| | | | | |
jgs \ \ \ / / /
`"""""""""""""""""`
@brucelefebvre