Real Life Oracle Mobile Application Framework. Things that you don't get from the developer guide



Similar documents
Mobilize Your ERP with ADF Mobile

Introduction to Oracle Mobile Application Framework Raghu Srinivasan, Director Development Mobile and Cloud Development Tools Oracle

ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET

Safe Harbor Statement

ORACLE ADF MOBILE DATA SHEET

Adobe Summit 2015 Lab 712: Building Mobile Apps: A PhoneGap Enterprise Introduction for Developers

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

How To Develop A Mobile Application On An Android Device

Using the Jive for ios App

Administering Jive Mobile Apps

Mobile Cross Platform Development really? Jonathan Marshall, IBM Mobile Technical Specialist IBM Corporation

ADF Mobile Overview and Frequently Asked Questions

50 shades of Siebel mobile

Mobile App Design and Development

App Distribution Guide

Throughout this document, you will be instructed to log in as user Ann, or as user Julia. Log in using the user name assigned to you.

Getting Started with Android Programming (5 days) with Android 4.3 Jelly Bean

Qsync Install Qsync utility Login the NAS The address is :8080 bfsteelinc.info:8080

Salesforce Mobile Push Notifications Implementation Guide

Live Maps. for System Center Operations Manager 2007 R2 v Installation Guide

Customize Mobile Apps with MicroStrategy SDK: Custom Security, Plugins, and Extensions

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Using the Push Notifications Extension Part 1: Certificates and Setup

Google Integration Instructions

UP L18 Enhanced MDM and Updated Protection Hands-On Lab

Novell Filr. Mobile Client

How Oracle MAF & Oracle Mobile Cloud can Accelerate Mobile App Development

Using Oracle Cloud to Power Your Application Development Lifecycle

ORACLE MOBILE SUITE. Complete Mobile Development Solution. Cross Device Solution. Shared Services Infrastructure for Mobility

Native v HTML5 An Event Planner s Primer

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

ios Team Administration Guide (Legacy)

Benutzerhandbuch TrustDrive. Mobile Clients

Enterprise Mobile Application Development: Native or Hybrid?

Build a Mobile App in 60 Minutes with MAF

Frequently Asked Questions for the USA TODAY e-newspaper

Introduction to Programming with Xojo

Spike Tech Tip: How to use your online, cloud-based tools for Spike

WebLogic & Coherence. Best backend for Mobile Apps. July 2014 INSERT PRESENTER TITLE AND DATE

Developing and deploying mobile apps

Understanding BeyondTrust Patch Management

EM L18 Managing ios and Android Mobile Devices with Symantec Mobile Management Hands-On Lab

Safe Harbor Statement

Introduction to the AirWatch Browser Guide

Salesforce Classic Guide for iphone

Setup Database as a Service using EM12c

EM L05 Managing ios and Android Mobile Devices with Symantec Mobile Management Hands-On Lab

Novell Filr 1.0.x Mobile App Quick Start

Extending Oracle Applications on Mobile Using Oracle MAF and Oracle Mobile Security

User Guide Novell iprint 1.1 March 2015

Cisco Events Mobile Application

tibbr Now, the Information Finds You.

Quick Start Guide. Installation and Setup

Develop a Native App (ios and Android) for a Drupal Website without Learning Objective-C or Java. Drupaldelphia 2014 By Joe Roberts

DevOps Best Practices for Mobile Apps. Sanjeev Sharma IBM Software Group

Mobile Push Architectures

MDM User Guide June 2012

Two Factor Authentication (TFA; 2FA) is a security process in which two methods of authentication are used to verify who you are.

Vodafone Secure Device Manager Administration User Guide

Here s how to choose the right mobile app for you.

Quick Start Guide Mobile Entrée 4

Middleware- Driven Mobile Applications

AVG Business SSO Partner Getting Started Guide

Backups User Guide. for Webroot SecureAnywhere Essentials Webroot SecureAnywhere Complete

WebCenter Release notes

SharePoint 2010 vs. SharePoint 2013 Feature Comparison

Document OwnCloud Collaboration Server (DOCS) User Manual. How to Access Document Storage

Salesforce Mobile Push Notifications Implementation Guide

Configuring an ios App Store application

B&SC Office 365

alternative solutions, including: STRONG SECURITY for managing these security concerns. PLATFORM CHOICE LOW TOTAL COST OF OWNERSHIP

HarePoint Workflow Extensions for Office 365. Quick Start Guide

Exchange ActiveSync Configurations for GroupWise

DocuSign for Salesforce Administrator Guide v6.1.1 Rev A Published: July 16, 2015

Developer Guide: REST API Applications. SAP Mobile Platform 2.3 SP03

Welcome to Mobile Roadie Pro. mobileroadie.com

BlackVue Cloud App Overview...3. Getting Started...6. Basic Menu Screens BlackVue Cloud BlackVue Wi-Fi Internal Memory...

Comodo Mobile Device Manager Software Version 1.0

Yammer Training Guide Facilitator s Notes

Introduction to Mobile Application Management (MAM)

How To Create A Site In Sharepoint 2013

Using the T&D Thermo App with TR-7wf Data Loggers

AWS Service Catalog. User Guide

GCM for Android Setup Guide

Booth Gmail Configuration

Advanced Configuration Steps

Flexible Identity Federation

Amazon WorkMail. User Guide Version 1.0

2. About iphone ios 5 Development Essentials. 5. Joining the Apple ios Developer Program

Apache JMeter HTTP(S) Test Script Recorder

Store & Share Quick Start

Take full advantage of IBM s IDEs for end- to- end mobile development

APEX World 2013 APEX & Christian Rokitta. OGh APEX World 9 April 2013

INTRODUCTION TO ATRIUM... 2 SYSTEM REQUIREMENTS... 2 TECHNICAL DETAILS... 2 LOGGING INTO ATRIUM... 3 SETTINGS... 4 NAVIGATION PANEL...

How To Use The Bank Of Korea App On Android Or Blackberry Or Ipa (For Android)

MOBILIZING ORACLE APPLICATIONS ERP. An Approach for Building Scalable Mobility Solutions. A RapidValue Solutions Whitepaper

ITP 342 Mobile App Development. Notifications

Kony Mobile Application Management (MAM)

Transcription:

Real Life Oracle Mobile Application Framework Things that you don't get from the developer guide Oracle Open World, San Francisco, September 28th 2014

Who Am I Luc Bors Principal Consultant AMIS, Netherlands Friends of Oracle & Java Oracle Partner Oracle Specialized Partner of the year 2014 Middleware - EMEA

Before we start Let s look at some basic terms related to MAF and Mobile Springboard Gestures Feature Push Notifications

MAF Architecture Overview Device Native Container Web View HTML5 and Javascript Presentation AMX View App Config Configuration Server Local HTML Server HTML Server Generated HTML Controller Java VM Business Logic Push Handler Credential Management SSO and Access Control APN/GCM Push Services JDBC SOAP and REST Services Apache Cordova Model SQLite Device Services SQLite Database

Todays Topics Navigation and Application Control Device Interaction Gestures Push Notifications

Springboard configuration in maf-application.xml Springboard & navigationbar

The Default Springboard

The Custom SpringBoard

Springboard Toggle Default button on bottom left Custom button such as Top Right Create this yourself Note: No show / hide available Note: No isspringboard visible property available. You need to create this yourself <amx:commandlink actionlistener="#{bindings.gotospringboard.execute}" id="cl1 styleclass="custom-springboard-link > <amx:image inlinestyle="width:30px;height:30px source="/images/springboard.png" id="i1"/> </amx:commandlink>

Feature Archives Feature Archives can be reused Deploy MAF app as FAR Add to Consumer Use features from FAR in other apps

Features can be taskflows Can contain multiple activities Navigation between activities is possible Information exchange is possible

List to Detail Navigate from List to Detail If List and Detail use the same iterator, correct details will show up automatically List View 1 Name.. 2 Name.. 3 Name.. 4 Name.. Detail View #3. Name State Country Example: If you select List item #3, and that will become the current item in the iterator the list is based on.

Navigation Declarative Navigation Button/Link/ListItem <amx:listitem id="li1" action="detail" showlinkicon="true selectedrowkeys="#{collection.collectionmodel.selectedrow} " selectionlistener="#{collection.collectionmodel.makecurrent}""." " >"

List to Detail (+) What if you don t want to GET all detail data for every List item? Simply use an (extra) service call to get the detail Data Service call List View 1 Name.. 2 Name.. 3 Name.. 4 Name.. Detail View #3. Name State Country Image: Example: If you select List item #3, and that will become the current item in the iterator the list is based on. You can use the Identifier of that list item to call the service

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"/>"

Programmatic Navigation Programmatic Navigation JavaCode AdfmfContainerUtilities.invokeContainerJavaScriptFunction(" AdfmfJavaUtilities.getFeatureName(), " "adf.mf.api.amx.donavigation", " new Object[] { detail" }); } "

Programmatic 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());"

Todays Topics Navigation and Application Control Device Interaction Gestures Push Notifications

All day example Twitter or Whatsapp and images What if you embed an image in a message? Two options: Use exisiting image from gallery or Create a new one with camera. Where is the catch?

Device Interaction (Declarative) The Device Datacontrol Drag n Drop support Attributes as fields Operations as buttons

Camera interaction (from Java) 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

Smart Camera Interaction Or how to prevent your app from crashing 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.

Even smarter Determine network connection #{hardware.networkstatus} Combined with #{device.os} To tweak size and quality parameters based on connectivity Always be aware of the other side.. Does the recipient have the same Connectivity.

Todays Topics Navigation and Application Control Device Interaction Gestures Push Notifications

Gestures ( and UX ) Gestures can be used from: Buttons Links List Item <amx:showpopupbehavior popupid="pop1" type="taphold />

Gesture Abuse.. Or how to confuse your app user <amx:showpopupbehavior popupid="pop1" type= swipeleft /> <amx:actionlistener binding="#{mybean.deleterow}" type= swipedown"/>

What Apple did (ios6 à ios7) They changed delete swipe from right to left. I rest my case Make sure to be aware of the right standard: For Device For OS For version

This is helpfull

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} >" "

Example

Todays Topics Navigation and Application Control Device Interaction Gestures Push Notifications

Push Notifications Subscribe to GCM Receive token Register with Enterprise app Enterprise app Pushes message to GCM GCM delegates message to device(s)

Working with Payload Pusher knows the mobile app Pusher knows how app can respond App knows Pusher App knows what to expect from Pusher Pusher pushes info to determine the Feature and optionally a Key App Navigates to correct Feature based on this information and calls Service with the key to fetch information

Server side message Example: private Message createmessage(string msg) { String sound = "default"; Message message = new Message.Builder().delayWhileIdle(true).addData("alert", msg).adddata("sound",sound).adddata("featurename", "Sessions").addData("SessionId", "12").build(); } return message;

In the MAF App PushNotification Listener onmessage Deserialize Payload Call Feature

When Notified (onmessage) Application Push Notification Listener onmessage(event event) Deserialize Payload and work with it PayloadServiceResponse serviceresponse = (PayloadServiceResponse)jsonHelper.fromJSON( PayloadServiceResponse.class, event.getpayload()); ValueExpression notificationpayloadbinding = AdfmfJavaUtilities.getValueExpression( "#{applicationscope.notificationsessionid}", String.class); notificationpayloadbinding.setvalue( AdfmfJavaUtilities.getAdfELContext(), serviceresponse.getsessionid()); ValueExpression ve = AdfmfJavaUtilities.getValueExpression( "#{applicationscope.notified}", Boolean.class);

. Finally Change badge and go to the Feature. // also, lets decrease the application icon badge by one int currentbadge = AdfmfContainerUtilities.getApplicationIconBadgeNumber(); if (currentbadge > 0) { AdfmfContainerUtilities.setApplicationIconBadgeNumber( currentbadge - 1); } AdfmfContainerUtilities.gotoFeature( "com.tamcapp.mobilebook.ses.conferencesessions");

In the MAF Feature FeatureLifeCycle Listener onactivate() Do Something Navigate

In the Feature Feature LifeCycle Listener In the onactivate() method respond to notification if(notified.booleanvalue()){ AdfmfContainerUtilities.invokeContainerJavaScriptFunction( AdfmfJavaUtilities.getFeatureName(),"adf.mf.api.amx.doNavigation,new Object[] { "featureactivated" }); }

The taskflow behind the scenes Wildcard activity featureactivated To Router Determine if Notified If so, handle the Notification HandleNotification Call Service to get info, or do whatever is needed to handle the notification

Summary Don t take anything for granted Start simple, renew fast. (Re-) Consider default behavior Users First!!!! Think about proper Use cases for every thing you do Use the wiki: https://wikis.oracle.com/display/adfmobiledesign/home Tip: Read a good MAF book and go to many session during #oow14

Book launch ISBN no s: 0071830855 / 9780071830850 Regular price: $60 Oracle OpenWorld Bookstore: Moscone South, Upper Lobby. 20% discount for OOW visitors Meet the author: Meet me in the Oracle OpenWorld bookstore on Monday from 1 to 1:30 p.m.

More mobile at OOW14 Monday Tuesday

Wednesday More mobile at OOW14

More mobile at OOW14 Thursday Don t miss the HOL

Luc Bors, AMIS, The Netherlands Luc.Bors@amis.nl LucBors@gmail.com Follow me on : @lucb_