SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
Real Life ADF Mobile
10 things that you don't get from the developer guide
DOAG Konferenz; November 19th 2013
Who Am I
•  Luc Bors
•  Principal Consultant
•  AMIS, Netherlands
•  Friends of Oracle & Java
•  5 Oracle ACE(D)
•  Oracle Partner
10 Things
One App…..
…. 10 Things …..
…. In 45 Minutes….
….Really…?
Remote URLs
•  For embedding existing web pages in your
ADF Mobile app.

•  For instance:
–  News Website
–  Existing enterprise app Mobile Browser Pages

•  Note:
–  Best use Optimized Mobile Browser Pages
–  Apache Trinidad components
–  Oracle recommends using ADF Mobile browser
Feature as Remote URL

•  Create New Feature as
Remote URL

•  Create URL Connection
Whitelisting
•  Why do we need to do this ?

•  Mobile device is

redirected to m.uefa.com
Property Change Events
•  Raised when individual
attributes of a model object
are changed

•  Use setter method to update
attributes
Provider Change Event
•  Raised when attributes of type Collection are changed on a model object
•  When a new row is created
–  fireProviderCreate(providerKey, rowKey, newRow)
–  New row is inserted in the UI without refreshing other parts of the page

•  When a row is deleted
–  fireProviderDelete(providerKey, rowKey) – Row is deleted in the Iterator

•  When the collection is refreshed
–  fireProviderRefresh(providerKey)
–  Iterator is refreshed
–  Row currency is lost.

providerChangeSupport.fireProviderRefresh("stadiums");!
Device Interaction
•  The Device Datacontrol
•  Drag n Drop support
•  Attributes as fields
•  Operations as buttons
Camera interaction
•  Take a picture ……………
import oracle.adf.model.datacontrols.device;
DeviceManagerFactory.getDeviceManager().getPicture(
100,
DeviceManager.CAMERA_DESTINATIONTYPE_FILE_URI,
DeviceManager.CAMERA_SOURCETYPE_CAMERA, false,
DeviceManager.CAMERA_ENCODINGTYPE_PNG,
200,
200);

•  …… or get one from the Library
DeviceManager.CAMERA_SOURCETYPE__PHOTOLIBRARY
Be careful !!
•  DESTINATIONTYPE_DATA_URL you will get the image as base64 encoded
string

•  Camera’s are very good and picture quality is amazing.
–  Encoding such images as base64 causes memory issues

•  Don’t blow up your app.
–  iOS you should set quality parameter to a value less then 50 to avoid memory
issues
–  On Android out-of-memory can be caused with default image settings. Make
image smaller by setting targetWidth and targetHeight

•  Small sized images can be uploaded using web services.
Data Services

Device Native Container

ADF Controller

Local
HTML

Server
HTML

Push
Handler

Java VM

ADF Model

Device
Services

JDBC

Cordova

Business
Logic

Configuration Server
Credential Management,
SSO & Access Control

ADF Mobile
AMX View

Web
View

App
Config

HTML5 & JavaScript Presentation

SQLite

Encrypted
SQLite DB

Mobile
Device

Server-Generated HTML

APN/GCM Push Services

SOAP & REST Services

Server
Using Webservices
•  The Webservice Datacontrol
Using Webservices directly
•  Just drag & drop the method from the Data Control
Using Webservices from Java
•  Invoke directly from java.
•  Does not use the binding layer

•  Uses Framework utilityMethod
•  AdfmfJavaUtilities.invokeDataControlMethod()

•  Datacontrol must be in available in DataBindings.cpx
Advantages
• 
• 
• 
• 
• 

Provides more flexibility to shape model to mobile UI
Perform client side validation
Minimize the number of round trips
Offline caching
Mash-up data from multiple services
Patterns…

•  SOAP Webservice
•  Web Service Data Control
Patterns…

•  REST Webservice
•  Rest Service Adapter
Patterns….

•  SQLite Database
•  Plain JDBC
Obviously all the same……

•  Service Object Data Control Pattern
–  Whatever “back end” data source you use…..
–  It is completely transparent for UI
Feature Archives
•  Feature Archives can be reused
•  Deploy ADF Mobile app as FAR
•  Consume features from FAR in other apps
Feature Archives
•  Feature Archives Deployment Profile
•  Connections Detail should be used (default is wrong ?)
•  Only if connection is available in consuming APP name only works
Springboard & navigationbar
•  Springboard configuration in adfmf-application.xml
The Default Springboard
The Custom SpringBoard
Configuring the springboard

–  Do Not set AllowDeviceAccess to False for Springboard Feature !
Navigation
•  Declarative Navigation
–  Button/Link/ListItem

<amx:listItem id="li1" action="detail" showLinkIcon="true">!
<amx:setPropertyListener id="x" from="#{row.rowKey}”

to="#{pageFlowScope.myBean.currentStadium}" !
type="action"/>!
Navigation
•  Declarative Navigation
–  Button/Link/ListItem

•  Programmatic Navigation
–  JavaCode

AdfmfContainerUtilities.invokeContainerJavaScriptFunction(!
AdfmfJavaUtilities.getFeatureName(),
!
"adf.mf.api.amx.doNavigation", !
new Object[] { ”detail" });

    } !
Navigation
•  Drawback
–  No access to setPropertyListener

•  Solution if you need that functionality:
–  Set the value in java Code

ValueExpression ve =!
AdfmfJavaUtilities.getValueExpression(!
"#{pageFlowScope.myBean.currentStadium}”!
, String.class);!
ve.setValue(AdfmfJavaUtilities.getAdfELContext()!
, getCurrentStadium());!
Smart Navigation
•  Search Stadiums
•  What if resultset only contains one row ?

if (s_stadiums.size()==1){!
// only one stadium! Lets navigate
AdfmfContainerUtilities.invokeContainerJavaScriptFunction(!
AdfmfJavaUtilities.getFeatureName(), !
"adf.mf.api.amx.doNavigation", !
new Object[] { "detail" });!
} !
Preserve Current Row
•  Inside the <amx:listItem> element of the list page, you need to add a
<amx:setPropertyListener> element to store the row key in a
pageFlowScope variable.

•  In the page definition of the detail page, you need to add a
setCurrentRowWithKey action, which uses the pageFlowScope variable
to set the current row.

•  In the page definition of the detail page, you need to add an
invokeAction executable for the setCurrentRowWithKey action to ensure
the current row is automatically set when entering the detail page.
Preserve Current Row (A-Team)
•  Easiest way:
–  Download and install extension
–  adf-mobile-persistence-sample-install.zip
–  Extension contains StatefulIteratorBeanDcDefinition
<AdapterDataControl id="PlayerService”

FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl”


ImplDef=

"oracle.ateam.sample.mobile.model.bean.StatefulIteratorBeanDcDefinition”!
……….

Definition=

"com.blogspot.lucbors.soccer.mobile.model.service.PlayerService”
BeanClass=

"com.blogspot.lucbors.soccer.mobile.model.service.PlayerService"!
} !

•  NOTE: This will be the way ADF Mobile will do it in future versions
Gesture Support
•  You can configure Button, Link, and List Item components to react to the
following gestures:
• 
• 
• 
• 
• 

Swipe to the right
Swipe to the left
Swipe up
Swipe down
Tap-and-hold
Gesture examples
•  The Swipe Gesture
<amx:actionListener binding="#{mybean.DoX}"
type="swipeRight"/>

•  The Tap Gesture

<amx:showPopupBehavior popupid="pop1"
type="tapHold“ />
Use case example
Ingredients
•  A (Web) service and datacontrol
•  A Page with Listview
•  An ActionListener with type
SwipeDown
•  Smart Java Code to call service
conditionally

<amx:listView var="row”!
value="#{bindings.allLocations.collectionModel}" !
fetchSize="#{bindings.allLocations.rangeSize}”!
id="lv1"> !
<amx:listItem id="li1"> !
<amx:actionListener type="swipeDown”
!
binding="#{pageFlowScope.locationsBackingBean.checkForUpdates}”>!
!
Change the data
Swimming-lanes
•  No Horizontal scrollbar
•  All ‘data’ available
•  Use panelGroupLayout
–  Width 100%

<amx:panelGroupLayout layout="horizontal”

inlineStyle="width:100%;">!
Push Notification (GCM)
• 
• 
• 
• 

Subscribe to GCM
Receive token
Register with Enterprise app
Enterprise app Pushes message to
GCM
•  GCM delegates message to
device(s)
Server Side
•  Class to push a message to a device.
– 
– 
– 
– 

import com.google.android.gcm.server.Constants;
import com.google.android.gcm.server.Message;
import com.google.android.gcm.server.Result;
import com.google.android.gcm.server.Sender;

public class PushMessageBean {
public String message;
private Sender sender = new Sender(”<someSenderKey>");
public static final String ERROR_NOT_REGISTERED="NotRegistered”;
private Message createMessage(String msg) {
String sound = "default";
Message message = new Message.Builder().collapseKey("1")
.delayWhileIdle(true)
.addData("alert", msg)
.addData("sound", sound).build();
return message;}
Server Side Send Code
public void pushNow(ActionEvent actionEvent) {
// Add event code here…
DCBindingContainer bindings = (DCBindingContainer)
BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding iter =
bindings.findIteratorBinding("GcmSubscribersIterator");
Row curr = iter.getCurrentRow();
String target = (String)curr.getAttribute("DeviceToken");
String type = (String)curr.getAttribute("DeviceType");
if(type.equalsIgnoreCase("Android")){
Message message = createMessage(this.message);
Result result = null;
sendSingleMessage(target, message);
}
Example
•  Select device

•  Send message

•  Get notified

+
GCM Demo
Summary
One App…..
…. 10 Things …..
…. In 45 Minutes…
….. Really !

1. 
2. 
3. 
4. 
5. 

Whitelisting
Provider Refresh
Pictures
Data Service Pattern
Feature Archives

6.  Springboard
7.  Prog Navigation
8.  Keep current Row
9.  Pull to Refresh
10.  Push Notifications
User Experience Patterns and
Guidelines WIKI
Luc Bors, AMIS, The Netherlands	

Luc.Bors@amis.nl	

LucBors@gmail.com	

Follow me on
: @lucb_

Contenu connexe

Tendances

Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Andrejs Prokopjevs
 
Working with Portlets in ADF and Webcenter
Working with Portlets in ADF and WebcenterWorking with Portlets in ADF and Webcenter
Working with Portlets in ADF and WebcenterDataNext Solutions
 
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Alex Gorbachev
 
Blue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on AzureBlue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on AzureRob Habraken
 
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...Alfredo Krieg
 
2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to Cloud2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to CloudMarcus Vinicius Miguel Pedro
 
Running Oracle EBS in the cloud (UKOUG APPS16 edition)
Running Oracle EBS in the cloud (UKOUG APPS16 edition)Running Oracle EBS in the cloud (UKOUG APPS16 edition)
Running Oracle EBS in the cloud (UKOUG APPS16 edition)Andrejs Prokopjevs
 
The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012Lucas Jellema
 
Data Platform Overview
Data Platform OverviewData Platform Overview
Data Platform OverviewHamid J. Fard
 
Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009Rinie Romme
 
What should I do now?! JCS for WebLogic Admins
What should I do now?! JCS for WebLogic AdminsWhat should I do now?! JCS for WebLogic Admins
What should I do now?! JCS for WebLogic AdminsSimon Haslam
 
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...Marcus Vinicius Miguel Pedro
 

Tendances (20)

oracle openworld review UX presentation 2016
oracle openworld review UX presentation 2016oracle openworld review UX presentation 2016
oracle openworld review UX presentation 2016
 
Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...Password Policies in Oracle Access Manager. How to improve user authenticatio...
Password Policies in Oracle Access Manager. How to improve user authenticatio...
 
Working with Portlets in ADF and Webcenter
Working with Portlets in ADF and WebcenterWorking with Portlets in ADF and Webcenter
Working with Portlets in ADF and Webcenter
 
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
Bridging Oracle Database and Hadoop by Alex Gorbachev, Pythian from Oracle Op...
 
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas JellemaAMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
 
Blue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on AzureBlue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on Azure
 
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...
Monitor Engineered Systems from a Single Pane of Glass: Oracle Enterprise Man...
 
2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to Cloud2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to Cloud
 
Oow2016 review--paas-microservices-
Oow2016 review--paas-microservices-Oow2016 review--paas-microservices-
Oow2016 review--paas-microservices-
 
Running Oracle EBS in the cloud (UKOUG APPS16 edition)
Running Oracle EBS in the cloud (UKOUG APPS16 edition)Running Oracle EBS in the cloud (UKOUG APPS16 edition)
Running Oracle EBS in the cloud (UKOUG APPS16 edition)
 
The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012The Very Very Latest in Database Development - Oracle Open World 2012
The Very Very Latest in Database Development - Oracle Open World 2012
 
Data Platform Overview
Data Platform OverviewData Platform Overview
Data Platform Overview
 
Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009Apex 4.0 @ ODTUG 2009
Apex 4.0 @ ODTUG 2009
 
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
AMIS Oracle OpenWorld 2015 Review – part 4- PaaS Application Development, Jav...
 
What should I do now?! JCS for WebLogic Admins
What should I do now?! JCS for WebLogic AdminsWhat should I do now?! JCS for WebLogic Admins
What should I do now?! JCS for WebLogic Admins
 
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...
2019 - GUOB Tech Day / Groundbreakers LAD Tour - Database Migration Methods t...
 
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
AMIS Oracle OpenWorld 2015 Review – part 3- PaaS Database, Integration, Ident...
 
Oow2016 review-13th october 2016
Oow2016 review-13th october 2016Oow2016 review-13th october 2016
Oow2016 review-13th october 2016
 
Apex ace update
Apex ace updateApex ace update
Apex ace update
 
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
AMIS Oracle OpenWorld 2015 Review – part 2- Hardware & IaaS and PaaS Cloud Fo...
 

Similaire à ADF Mobile: 10 Things you don't get from the developers guide - Luc Bors

amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobilityLuc Bors
 
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile : Best Practices for Developing Applications with Oracle ADF MobileADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile : Best Practices for Developing Applications with Oracle ADF MobileLuc Bors
 
Oracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptxOracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptxLuc Bors
 
ADF Mobile - an intro for Developers
ADF Mobile - an intro for DevelopersADF Mobile - an intro for Developers
ADF Mobile - an intro for DevelopersLuc Bors
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.jsaortbals
 
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solution
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solutionDotnet- An overview of ASP.NET & ADO.NET- Mazenet solution
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solutionMazenetsolution
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flexdanielwanja
 
Microsoft Power Page for Developer - ภาษาไทย
Microsoft Power Page for Developer - ภาษาไทยMicrosoft Power Page for Developer - ภาษาไทย
Microsoft Power Page for Developer - ภาษาไทยTeerasej Jiraphatchandej
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...SPTechCon
 
Doag wysiwyg
Doag wysiwygDoag wysiwyg
Doag wysiwygLuc Bors
 
ADF and JavaScript - AMIS SIG, July 2017
ADF and JavaScript - AMIS SIG, July 2017ADF and JavaScript - AMIS SIG, July 2017
ADF and JavaScript - AMIS SIG, July 2017Lucas Jellema
 
Beginning jQuery Mobile
Beginning jQuery MobileBeginning jQuery Mobile
Beginning jQuery MobileTroy Miles
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5Ron Reiter
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOSjimmyatmedium
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOSKevin Decker
 
jQuery Mobile and JavaScript
jQuery Mobile and JavaScriptjQuery Mobile and JavaScript
jQuery Mobile and JavaScriptGary Yeh
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsChris Love
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web AppsTimothy Fisher
 

Similaire à ADF Mobile: 10 Things you don't get from the developers guide - Luc Bors (20)

amis-adf-enterprise-mobility
amis-adf-enterprise-mobilityamis-adf-enterprise-mobility
amis-adf-enterprise-mobility
 
ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...
ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...
ADF Mobile: Best Practices for Developing Applications with Oracle ADF Mobile...
 
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile : Best Practices for Developing Applications with Oracle ADF MobileADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
ADF Mobile : Best Practices for Developing Applications with Oracle ADF Mobile
 
Oracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptxOracle MAF real life OOW.pptx
Oracle MAF real life OOW.pptx
 
ADF Mobile - an intro for Developers
ADF Mobile - an intro for DevelopersADF Mobile - an intro for Developers
ADF Mobile - an intro for Developers
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
 
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solution
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solutionDotnet- An overview of ASP.NET & ADO.NET- Mazenet solution
Dotnet- An overview of ASP.NET & ADO.NET- Mazenet solution
 
Building iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360FlexBuilding iPad apps with Flex - 360Flex
Building iPad apps with Flex - 360Flex
 
Microsoft Power Page for Developer - ภาษาไทย
Microsoft Power Page for Developer - ภาษาไทยMicrosoft Power Page for Developer - ภาษาไทย
Microsoft Power Page for Developer - ภาษาไทย
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
 
Visualforce
VisualforceVisualforce
Visualforce
 
Doag wysiwyg
Doag wysiwygDoag wysiwyg
Doag wysiwyg
 
ADF and JavaScript - AMIS SIG, July 2017
ADF and JavaScript - AMIS SIG, July 2017ADF and JavaScript - AMIS SIG, July 2017
ADF and JavaScript - AMIS SIG, July 2017
 
Beginning jQuery Mobile
Beginning jQuery MobileBeginning jQuery Mobile
Beginning jQuery Mobile
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
Medium TechTalk — iOS
Medium TechTalk — iOSMedium TechTalk — iOS
Medium TechTalk — iOS
 
An Introduction to webOS
An Introduction to webOSAn Introduction to webOS
An Introduction to webOS
 
jQuery Mobile and JavaScript
jQuery Mobile and JavaScriptjQuery Mobile and JavaScript
jQuery Mobile and JavaScript
 
Disrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applicationsDisrupting the application eco system with progressive web applications
Disrupting the application eco system with progressive web applications
 
Developing High Performance Web Apps
Developing High Performance Web AppsDeveloping High Performance Web Apps
Developing High Performance Web Apps
 

Plus de Getting value from IoT, Integration and Data Analytics

Plus de Getting value from IoT, Integration and Data Analytics (20)

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
R introduction decision_trees
 
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
IoT and the Future of work
 
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
 
Omc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van SoestOmc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van Soest
 

Dernier

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Dernier (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

ADF Mobile: 10 Things you don't get from the developers guide - Luc Bors

  • 1. Real Life ADF Mobile 10 things that you don't get from the developer guide DOAG Konferenz; November 19th 2013
  • 2. Who Am I •  Luc Bors •  Principal Consultant •  AMIS, Netherlands •  Friends of Oracle & Java •  5 Oracle ACE(D) •  Oracle Partner
  • 3. 10 Things One App….. …. 10 Things ….. …. In 45 Minutes…. ….Really…?
  • 4. Remote URLs •  For embedding existing web pages in your ADF Mobile app. •  For instance: –  News Website –  Existing enterprise app Mobile Browser Pages •  Note: –  Best use Optimized Mobile Browser Pages –  Apache Trinidad components –  Oracle recommends using ADF Mobile browser
  • 5. Feature as Remote URL •  Create New Feature as Remote URL •  Create URL Connection
  • 6. Whitelisting •  Why do we need to do this ? •  Mobile device is redirected to m.uefa.com
  • 7. Property Change Events •  Raised when individual attributes of a model object are changed •  Use setter method to update attributes
  • 8. Provider Change Event •  Raised when attributes of type Collection are changed on a model object •  When a new row is created –  fireProviderCreate(providerKey, rowKey, newRow) –  New row is inserted in the UI without refreshing other parts of the page •  When a row is deleted –  fireProviderDelete(providerKey, rowKey) – Row is deleted in the Iterator •  When the collection is refreshed –  fireProviderRefresh(providerKey) –  Iterator is refreshed –  Row currency is lost. providerChangeSupport.fireProviderRefresh("stadiums");!
  • 9. Device Interaction •  The Device Datacontrol •  Drag n Drop support •  Attributes as fields •  Operations as buttons
  • 10. Camera interaction •  Take a picture …………… import oracle.adf.model.datacontrols.device; DeviceManagerFactory.getDeviceManager().getPicture( 100, DeviceManager.CAMERA_DESTINATIONTYPE_FILE_URI, DeviceManager.CAMERA_SOURCETYPE_CAMERA, false, DeviceManager.CAMERA_ENCODINGTYPE_PNG, 200, 200); •  …… or get one from the Library DeviceManager.CAMERA_SOURCETYPE__PHOTOLIBRARY
  • 11. Be careful !! •  DESTINATIONTYPE_DATA_URL you will get the image as base64 encoded string •  Camera’s are very good and picture quality is amazing. –  Encoding such images as base64 causes memory issues •  Don’t blow up your app. –  iOS you should set quality parameter to a value less then 50 to avoid memory issues –  On Android out-of-memory can be caused with default image settings. Make image smaller by setting targetWidth and targetHeight •  Small sized images can be uploaded using web services.
  • 12. Data Services Device Native Container ADF Controller Local HTML Server HTML Push Handler Java VM ADF Model Device Services JDBC Cordova Business Logic Configuration Server Credential Management, SSO & Access Control ADF Mobile AMX View Web View App Config HTML5 & JavaScript Presentation SQLite Encrypted SQLite DB Mobile Device Server-Generated HTML APN/GCM Push Services SOAP & REST Services Server
  • 13. Using Webservices •  The Webservice Datacontrol
  • 14. Using Webservices directly •  Just drag & drop the method from the Data Control
  • 15. Using Webservices from Java •  Invoke directly from java. •  Does not use the binding layer •  Uses Framework utilityMethod •  AdfmfJavaUtilities.invokeDataControlMethod() •  Datacontrol must be in available in DataBindings.cpx
  • 16. Advantages •  •  •  •  •  Provides more flexibility to shape model to mobile UI Perform client side validation Minimize the number of round trips Offline caching Mash-up data from multiple services
  • 17. Patterns… •  SOAP Webservice •  Web Service Data Control
  • 20. Obviously all the same…… •  Service Object Data Control Pattern –  Whatever “back end” data source you use….. –  It is completely transparent for UI
  • 21. Feature Archives •  Feature Archives can be reused •  Deploy ADF Mobile app as FAR •  Consume features from FAR in other apps
  • 22. Feature Archives •  Feature Archives Deployment Profile •  Connections Detail should be used (default is wrong ?) •  Only if connection is available in consuming APP name only works
  • 23. Springboard & navigationbar •  Springboard configuration in adfmf-application.xml
  • 26. Configuring the springboard –  Do Not set AllowDeviceAccess to False for Springboard Feature !
  • 27. Navigation •  Declarative Navigation –  Button/Link/ListItem <amx:listItem id="li1" action="detail" showLinkIcon="true">! <amx:setPropertyListener id="x" from="#{row.rowKey}”
 to="#{pageFlowScope.myBean.currentStadium}" ! type="action"/>!
  • 28. Navigation •  Declarative Navigation –  Button/Link/ListItem •  Programmatic Navigation –  JavaCode AdfmfContainerUtilities.invokeContainerJavaScriptFunction(! AdfmfJavaUtilities.getFeatureName(), ! "adf.mf.api.amx.doNavigation", ! new Object[] { ”detail" });
     } !
  • 29. Navigation •  Drawback –  No access to setPropertyListener •  Solution if you need that functionality: –  Set the value in java Code ValueExpression ve =! AdfmfJavaUtilities.getValueExpression(! "#{pageFlowScope.myBean.currentStadium}”! , String.class);! ve.setValue(AdfmfJavaUtilities.getAdfELContext()! , getCurrentStadium());!
  • 30. Smart Navigation •  Search Stadiums •  What if resultset only contains one row ? if (s_stadiums.size()==1){! // only one stadium! Lets navigate AdfmfContainerUtilities.invokeContainerJavaScriptFunction(! AdfmfJavaUtilities.getFeatureName(), ! "adf.mf.api.amx.doNavigation", ! new Object[] { "detail" });! } !
  • 31. Preserve Current Row •  Inside the <amx:listItem> element of the list page, you need to add a <amx:setPropertyListener> element to store the row key in a pageFlowScope variable. •  In the page definition of the detail page, you need to add a setCurrentRowWithKey action, which uses the pageFlowScope variable to set the current row. •  In the page definition of the detail page, you need to add an invokeAction executable for the setCurrentRowWithKey action to ensure the current row is automatically set when entering the detail page.
  • 32. Preserve Current Row (A-Team) •  Easiest way: –  Download and install extension –  adf-mobile-persistence-sample-install.zip –  Extension contains StatefulIteratorBeanDcDefinition <AdapterDataControl id="PlayerService”
 FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl” 
 ImplDef=
 "oracle.ateam.sample.mobile.model.bean.StatefulIteratorBeanDcDefinition”! ……….
 Definition=
 "com.blogspot.lucbors.soccer.mobile.model.service.PlayerService” BeanClass=
 "com.blogspot.lucbors.soccer.mobile.model.service.PlayerService"! } ! •  NOTE: This will be the way ADF Mobile will do it in future versions
  • 33. Gesture Support •  You can configure Button, Link, and List Item components to react to the following gestures: •  •  •  •  •  Swipe to the right Swipe to the left Swipe up Swipe down Tap-and-hold
  • 34. Gesture examples •  The Swipe Gesture <amx:actionListener binding="#{mybean.DoX}" type="swipeRight"/> •  The Tap Gesture <amx:showPopupBehavior popupid="pop1" type="tapHold“ />
  • 36. Ingredients •  A (Web) service and datacontrol •  A Page with Listview •  An ActionListener with type SwipeDown •  Smart Java Code to call service conditionally <amx:listView var="row”! value="#{bindings.allLocations.collectionModel}" ! fetchSize="#{bindings.allLocations.rangeSize}”! id="lv1"> ! <amx:listItem id="li1"> ! <amx:actionListener type="swipeDown” ! binding="#{pageFlowScope.locationsBackingBean.checkForUpdates}”>! !
  • 37.
  • 39.
  • 40. Swimming-lanes •  No Horizontal scrollbar •  All ‘data’ available •  Use panelGroupLayout –  Width 100% <amx:panelGroupLayout layout="horizontal”
 inlineStyle="width:100%;">!
  • 41. Push Notification (GCM) •  •  •  •  Subscribe to GCM Receive token Register with Enterprise app Enterprise app Pushes message to GCM •  GCM delegates message to device(s)
  • 42. Server Side •  Class to push a message to a device. –  –  –  –  import com.google.android.gcm.server.Constants; import com.google.android.gcm.server.Message; import com.google.android.gcm.server.Result; import com.google.android.gcm.server.Sender; public class PushMessageBean { public String message; private Sender sender = new Sender(”<someSenderKey>"); public static final String ERROR_NOT_REGISTERED="NotRegistered”; private Message createMessage(String msg) { String sound = "default"; Message message = new Message.Builder().collapseKey("1") .delayWhileIdle(true) .addData("alert", msg) .addData("sound", sound).build(); return message;}
  • 43. Server Side Send Code public void pushNow(ActionEvent actionEvent) { // Add event code here… DCBindingContainer bindings = (DCBindingContainer) BindingContext.getCurrent().getCurrentBindingsEntry(); DCIteratorBinding iter = bindings.findIteratorBinding("GcmSubscribersIterator"); Row curr = iter.getCurrentRow(); String target = (String)curr.getAttribute("DeviceToken"); String type = (String)curr.getAttribute("DeviceType"); if(type.equalsIgnoreCase("Android")){ Message message = createMessage(this.message); Result result = null; sendSingleMessage(target, message); }
  • 44. Example •  Select device •  Send message •  Get notified +
  • 46. Summary One App….. …. 10 Things ….. …. In 45 Minutes… ….. Really ! 1.  2.  3.  4.  5.  Whitelisting Provider Refresh Pictures Data Service Pattern Feature Archives 6.  Springboard 7.  Prog Navigation 8.  Keep current Row 9.  Pull to Refresh 10.  Push Notifications
  • 47. User Experience Patterns and Guidelines WIKI
  • 48. Luc Bors, AMIS, The Netherlands Luc.Bors@amis.nl LucBors@gmail.com Follow me on : @lucb_