Go to main content
1/39
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for MAF 2.3.1
New and Changed Features for MAF 2.3.1
Other Significant Changes in this Document for MAF 2.3.1
1
Introduction to Oracle Mobile Application Framework
1.1
Introduction to the Mobile Application Framework
1.2
About the MAF Runtime Architecture
1.3
About Developing Applications with MAF
1.3.1
About Connected and Disconnected Applications
1.4
MAF Sample Applications
2
Getting Started with MAF Application Development
2.1
Introduction to the MAF Development Environment
2.1.1
About the MAF Application Editor
2.1.2
About the MAF Feature Editor
2.2
Using the Oracle MAF Perspective
2.3
Creating a MAF Application
2.3.1
How to Create a MAF Application
2.3.2
What Happens When You Create an MAF Application
2.4
Defining Application Features for a MAF Application
2.4.1
How to Define an Application Feature
2.5
Adding Content to an Application Feature
2.6
Adding Application Features to a MAF Application
2.6.1
How to Add an Application Feature to a MAF Application
2.6.2
What You May Need to Know About Feature Reference IDs and Feature IDs
2.7
Creating MAF AMX Pages and MAF Task Flows
2.7.1
How to Create an MAF AMX Page
2.7.2
How to Create MAF Task Flows
2.7.3
What Happens When You Create MAF AMX Pages and Task Flows
2.8
Containerizing a MAF Application for Enterprise Distribution
3
Configuring the Content of a MAF Application
3.1
Introduction to Configuring MAF Application Display Information
3.2
Setting Display Properties for a MAF Application
3.3
Changing the Launch Screen for Your MAF Application on iOS
3.4
Setting Display Properties for an Application Feature
4
Configuring MAF Application Features
4.1
Introduction to MAF Application Features
4.2
Configuring Application Navigation
4.2.1
How to Set the Display Behavior for the Navigation Bar
4.2.2
How to Set the Display Behavior for the Springboard
4.2.3
How to Set the Slideout Behavior for the Springboard
4.2.4
How to Set the Display Order for Application Features
4.3
What Happens When You Configure the Navigation Options
4.4
What Happens When You Set the Animation for the Springboard
4.5
What You May Need to Know About Custom Springboard Application Features with HTML Content
4.6
What You May Need to Know About Custom Springboard Application Features with MAF AMX Content
4.7
What You May Need to Know About the Runtime Springboard Behavior
4.8
Navigating a MAF Application Using Android's Back Button
4.8.1
How to Configure Behavior of the Android System Back Button
4.9
Creating a Sliding Window in Your MAF Application
4.10
Using Custom URL Schemes in MAF Applications
5
Defining the Content Type of MAF Application Features
5.1
Introduction to Content Types for an Application Feature
5.2
Defining the Application Feature Content as Remote URL or Local HTML
5.3
Defining the Application Feature Content as a MAF AMX Page or Task Flow
5.4
What You May Need to Know About Selecting External Resources
6
Localizing MAF Applications
6.1
Introduction to MAF Application Localization
6.2
Setting Resource Bundle Options for a MAF Application
6.3
Defining Text Resources in a Base Resource Bundle
6.3.1
How to Define a Text Resource in a Base Resource Bundle
6.3.2
What Happens When You Define a Text Resource in a Base Resource Bundle
6.4
Creating Locale-Specific Resource Bundles
6.4.1
How to Create a Locale-Specific Resource Bundle
6.5
Editing Resources in Resource Bundles
6.6
Localizing Image Files in a MAF Application
6.7
MAF Support of Languages
6.8
Localizable MAF Properties
7
Skinning MAF Applications
7.1
Introduction to MAF Application Skins
7.1.1
About the maf-config.xml File
7.1.2
About the maf-skins.xml File
7.2
Adding a Custom Skin to an Application
7.3
Specifying a Skin for an Application to Use
7.4
Registering a Custom Skin
7.5
Versioning MAF Skins
7.6
What Happens When You Version Skins
7.7
Overriding the Default Skin Styles
7.8
What You May Need to Know About Skinning
7.9
Adding a New Style Sheet to a Skin
7.10
Enabling End Users Change an Application's Skin at Runtime
7.11
What Happens at Runtime: How End Users Change an Application's Skin
8
Reusing the MAF Application Content
8.1
Introduction to Feature Archive Files
8.2
Using FAR Content in a MAF Application
8.3
What Happens When You Add a FAR
8.4
What You May Need to Know About Enabling the Reuse of Feature Archive Resources
9
Using Plugins in MAF Applications
9.1
Introduction to Using Plugins in MAF Applications
9.2
Enabling a Core Plugin in Your MAF Application
9.2.1
How to Enable a Core Plugin in Your MAF Application
9.2.2
What Happens When You Enable a Core Plugin in Your MAF Application
9.3
Registering Additional Plugins in Your MAF Application
9.3.1
How to Register an Additional Plugin
9.3.2
What Happens When You Register an External Plugin for Your MAF Application
9.4
Deploying Plugins with Your MAF Application
9.5
Importing Plugins from a Feature Archive File
9.6
Using a Plugin in a MAF Application
10
Using Lifecycle Listeners in MAF Applications
10.1
Introduction to Lifecycle Listeners in MAF Applications
10.2
Registering a Lifecycle Listener for a MAF Application or an Application Feature
10.3
What Happens When You Register a Lifecycle Listener
11
Creating MAF AMX Pages
11.1
Introduction to the MAF AMX Application Feature
11.2
Creating Task Flows
11.2.1
How to Create a Task Flow
11.2.2
What You May Need to Know About Task Flow Activities and Control Flows
11.2.3
What You May Need to Know About the task-flow-definition.xml File
11.2.4
What You May Need to Know About the MAF Task Flow Diagrammer
11.2.5
How to Add and Use Task Flow Activities
11.2.5.1
Adding View Activities
11.2.5.2
Adding Router Activities
11.2.5.3
Adding Method Call Activities
11.2.5.4
Adding Task Flow Call Activities
11.2.5.4.1
Calling a Bounded Task Flow Using a Task Flow Call Activity
11.2.5.4.2
Specifying Input Parameters on a Task Flow Call Activity
11.2.5.5
Adding Task Flow Return Activities
11.2.5.6
Using Task Flow Activities with Page Definition Files
11.2.6
How to Define Control Flows
11.2.6.1
Defining a Control Flow Case
11.2.6.2
Adding a Wildcard Control Flow Rule
11.2.6.3
What You May Need to Know About Control Flow Rule Metadata
11.2.6.4
What You May Need to Know About Control Flow Rule Evaluation
11.2.7
What You May Need to Know About MAF Support for Back Navigation
11.2.8
How to Enable Page Navigation by Dragging
11.2.9
How to Specify Action Outcomes Using UI Components
11.2.10
How to Create and Reference Managed Beans
11.2.11
How to Specify the Page Transition Style
11.2.12
What You May Need to Know About Bounded and Unbounded Task Flows
11.2.12.1
Unbounded Task Flows
11.2.12.2
Bounded Task Flows
11.2.12.3
Using Parameters in Task Flows
11.2.12.3.1
Passing Parameters to a Bounded Task Flow
11.2.12.3.2
Configuring a Return Value from a Bounded Task Flow
11.3
Creating Views
11.3.1
How to Work with MAF AMX Pages
11.3.1.1
Creating MAF AMX Pages
11.3.1.2
What Happens When You Create an MAF AMX Page
11.3.1.3
Accessing the Page Definition File
11.3.1.4
Sharing the Page Contents
11.3.2
How to Add UI Components and Data Controls to an MAF AMX Page
11.3.2.1
Adding UI Components
11.3.2.2
Adding Data Controls to the View
11.3.2.2.1
Dragging and Dropping Attributes
11.3.2.2.2
Dragging and Dropping Operations
11.3.2.2.3
Dragging and Dropping Collections
11.3.2.2.4
What You May Need to Know About Generated Bindings
11.3.2.2.5
What You May Need to Know About Generated Drag and Drop Artifacts
11.3.2.2.6
Using the MAF AMX Editor Bindings Tab
11.3.2.2.7
What You May Need to Know About Removal of Unused Bindings
11.3.2.3
What You May Need to Know About Element Identifiers and Their Audit
11.3.3
What You May Need to Know About the Server Communication
12
Creating the MAF AMX User Interface
12.1
Introduction to Creating the User Interface for MAF AMX Pages
12.2
Designing the Page Layout
12.2.1
How to Use a View Component
12.2.2
How to Use a Panel Page Component
12.2.3
How to Use a Panel Group Layout Component
12.2.3.1
Customizing the Scrolling Behavior
12.2.4
How to Use a Panel Form Layout Component
12.2.5
How to Use a Panel Stretch Layout Component
12.2.6
How to Use a Panel Label And Message Component
12.2.7
How to Use a Facet Component
12.2.8
How to Use a Popup Component
12.2.9
How to Use a Panel Splitter Component
12.2.10
How to Use a Spacer Component
12.2.11
How to Use a Table Layout Component
12.2.12
How to Use a Masonry Layout Component
12.2.13
How to Use an Accessory Layout Component
12.2.14
How to Use a Deck Component
12.2.15
How to Use a Flex Layout Component
12.2.16
How to Use the Fragment Component
12.3
Creating and Using UI Components
12.3.1
How to Use the Input Text Component
12.3.1.1
Customizing the Input Text Component
12.3.2
How to Use the Input Number Slider Component
12.3.3
How to Use the Input Date Component
12.3.4
How to Use the Output Text Component
12.3.5
How to Use Buttons
12.3.5.1
Displaying Default Style Buttons
12.3.5.2
Displaying Back Style Buttons
12.3.5.3
Displaying Highlight Style Buttons
12.3.5.4
Displaying Alert Style Buttons
12.3.5.5
Using Additional Button Styles
12.3.5.6
Using Buttons Within the Application
12.3.5.7
Enabling the Back Button Navigation
12.3.5.8
What You May Need to Know About the Order of Processing Operations and Attributes
12.3.6
How to Use Links
12.3.7
How to Display Images
12.3.8
How to Use the Checkbox Component
12.3.8.1
Support for Checkbox Components on iOS Platform
12.3.8.2
Support for Checkbox Components on Android Platform
12.3.9
How to Use the Select Many Checkbox Component
12.3.9.1
What You May Need to Know About the User Interaction with Select Many Checkbox Component
12.3.10
How to Use the Choice Component
12.3.10.1
What You May Need to Know About the User Interaction with Choice Component on iOS Platform
12.3.10.2
What You May Need to Know About the User Interaction with Choice Component on Android Platform
12.3.10.3
What You May Need to Know About Differences Between Select Items and Select Item Components
12.3.11
How to Use the Select Many Choice Component
12.3.12
How to Use the Boolean Switch Component
12.3.12.1
What You May Need to Know About Support for Boolean Switch Components on iOS Platform
12.3.13
How to Use the Select Button Component
12.3.14
How to Use the Radio Button Component
12.3.15
How to Use List View and List Item Components
12.3.15.1
Configuring Paging and Dynamic Scrolling
12.3.15.2
Rearranging List View Items
12.3.15.3
Configuring The List View Layout
12.3.15.4
What You May Need to Know About Using a Static List View
12.3.16
How to Use the Carousel Component
12.3.17
How to Use the Film Strip Component
12.3.17.1
What You May Need to Know About the Film Strip Layout
12.3.17.2
What You May Need to Know About the Film Strip Navigation
12.3.18
How to Use Verbatim Component
12.3.18.1
What You May Need to Know About Using JavaScript and AJAX with Verbatim Component
12.3.19
How to Use Output HTML Component
12.3.20
How to Enable Iteration
12.3.21
How to Refresh Contents of UI Components
12.3.22
How to Load a Resource Bundle
12.3.23
How to Use the Action Listener
12.3.23.1
What You May Need to Know About Differences Between the Action Listener Component and Attribute
12.3.24
How to Use the Set Property Listener
12.3.25
How to Use the Client Listener
12.3.26
How to Convert Date and Time Values
12.3.26.1
What You May Need to Know About Date and Time Patterns
12.3.27
How to Convert Numerical Values
12.3.28
How to Enable Drag Navigation
12.3.28.1
What You May Need to Know About the disabled Attribute
12.3.29
How to Use the Loading Indicator
12.4
Enabling Gestures
12.5
Providing Data Visualization
12.5.1
How to Create an Area Chart
12.5.2
How to Create a Bar Chart
12.5.3
How to Create a Range Chart
12.5.4
How to Create a Bubble Chart
12.5.5
How to Create a Combo Chart
12.5.6
How to Create a Line Chart
12.5.7
How to Create a Pie Chart
12.5.7.1
Configuring the Pie Chart as a Ring Chart
12.5.7.2
Styling the Pie Chart
12.5.8
How to Create a Scatter Chart
12.5.9
How to Create a Spark Chart
12.5.10
How to Create a Funnel Chart
12.5.11
How to Create a Stock Chart
12.5.12
How to Style Chart Components
12.5.13
How to Use Events with Chart Components
12.5.14
What You May Need to Know About Customization of Chart Tooltips
12.5.15
How to Enable Sorting of Charts with Categorical Axis
12.5.16
How to Define the Initial Zooming of Charts
12.5.17
How to Define Stacking of Specific Chart Series
12.5.18
How to Enable Split Dual-Y Axis in Charts
12.5.19
How to Create an LED Gauge
12.5.20
How to Create a Status Meter Gauge
12.5.21
How to Create a Dial Gauge
12.5.22
How to Create a Rating Gauge
12.5.22.1
Overwriting the shortDesc Attribute
12.5.22.2
Applying Custom Styling to the Rating Gauge Component
12.5.23
How to Define Child Elements for Chart and Gauge Components
12.5.23.1
Defining Chart Data Item
12.5.23.2
Defining and Configuring Legend
12.5.23.3
Defining X Axis, YAxis, and Y2Axis
12.5.23.4
Defining Pie Data Item
12.5.23.5
Defining Spark Data Item
12.5.23.6
Defining Funnel Data Item
12.5.23.7
Defining Stock Data Item
12.5.23.8
Defining Threshold
12.5.24
How to Create a Geographic Map Component
12.5.24.1
Configuring Geographic Map Components With the Map Provider Information
12.5.24.2
Displaying Route in Geographic Map Components
12.5.25
How to Create a Thematic Map Component
12.5.25.1
Defining Custom Markers
12.5.25.2
Defining Isolated Area Layers
12.5.25.3
Defining Isolated Areas
12.5.25.4
Enabling Initial Zooming
12.5.25.5
Defining a Custom Base Map
12.5.25.6
What You May Need to Know About the Marker Support for Event Listeners
12.5.25.7
Applying Custom Styling to the Thematic Map Component
12.5.26
How to Use Events with Map Components
12.5.27
How to Create a Treemap Component
12.5.27.1
Applying Custom Styling to the Treemap Component
12.5.28
How to Create a Sunburst Component
12.5.28.1
Applying Custom Styling to the Sunburst Component
12.5.29
How to Create a Timeline Component
12.5.29.1
Applying Custom Styling to the Timeline Component
12.5.30
How to Create an NBox Component
12.5.31
How to Define Child Elements for Map Components, Sunburst, Treemap, Timeline, and NBox
12.5.32
How to Create Databound Data Visualization Components
12.5.32.1
What You May Need to Know About Setting Series Style for Databound Chart Components
12.5.33
How to Create Data Visualization Components Based on Static Data
12.5.34
How to Enable Interactivity in Chart Components
12.5.35
How to Create Polar Charts
12.6
Styling UI Components
12.6.1
How to Use Component Attributes to Define Style
12.6.2
What You May Need to Know About Skinning
12.6.3
What You May Need to Know About Using CSS ID Selectors for Skinning
12.6.4
How to Style Data Visualization Components
12.7
Localizing UI Components
12.8
Understanding MAF Support for Accessibility
12.8.1
How to Configure UI and Data Visualization Components for Accessibility
12.8.2
What You May Need to Know About the Basic WAI-ARIA Terms
12.8.3
What You May Need to Know About the Oracle Global HTML Accessibility Guidelines
12.9
Validating Input
12.10
Using Event Listeners
12.10.1
What You May Need to Know About Constrained Type Attributes for Event Listeners
13
Using Bindings and Creating Data Controls in MAF AMX
13.1
Introduction to Bindings and Data Controls
13.2
About Object Scope Lifecycles
13.2.1
What You May Need to Know About Object Scopes and Task Flows
13.3
Creating EL Expressions
13.3.1
About Data Binding EL Expressions
13.3.2
How to Create an EL Expression
13.3.2.1
About the Method Expression Builder
13.3.2.2
About Non EL-Properties
13.3.3
What You May Need to Know About MAF Binding Properties
13.3.4
How to Reference Binding Containers
13.3.5
About the Categories in the Expression Builder
13.3.5.1
About the Bindings Category
13.3.5.2
About the Managed Beans Category
13.3.5.3
About the Mobile Application Framework Objects Category
13.3.6
About EL Events
13.3.7
How to Use EL Expressions Within Managed Beans
13.4
Creating and Using Managed Beans
13.4.1
How to Create a Managed Bean in OEPE
13.4.2
What Happens When You Use OEPE to Create a Managed Bean
13.5
Exposing Business Services with Data Controls
13.5.1
How to Create Data Controls
13.5.2
What Happens in Your Project When You Create a Data Control
13.5.2.1
The Data Control Manager
13.5.2.2
The Palette
13.5.3
Data Control Built-in Operations
13.5.3.1
addXXX and removeXXX Methods of Data Control
13.6
Creating Databound UI Components from the Data Controls Palette
13.6.1
How to Use the Data Controls Palette
13.6.2
What Happens When You Use the Data Controls Palette
13.7
What Happens at Runtime: How the Binding Context Works
13.8
Working with Data Control Attributes
13.8.1
Setting UI Hints on Attributes
13.9
Creating and Using Bean Data Controls
13.9.1
What You May Need to Know About Serialization of Bean Class Variables
13.10
Using the DeviceFeatures Data Control
13.10.1
How to Use the getPicture Method to Enable Taking Pictures
13.10.2
How to Use the SendSMS Method to Enable Text Messaging
13.10.3
How to Use the sendEmail Method to Enable Email
13.10.4
How to Use the createContact Method to Enable Creating Contacts
13.10.5
How to Use the findContacts Method to Enable Finding Contacts
13.10.6
How to Use the updateContact Method to Enable Updating Contacts
13.10.7
How to Use the removeContact Method to Enable Removing Contacts
13.10.8
How to Use the startLocationMonitor Method to Enable Geolocation
13.10.9
How to Use the displayFile Method to Enable Displaying Files
13.10.10
How to Use the addLocalNotification and cancelLocalNotification Methods to Manage Local Notifications
13.10.11
What You May Need to Know About Device Properties
13.11
Validating Attributes
13.11.1
What You May Need to Know About the Validator Metadata
13.12
Using Background Threads
13.13
Working with Data Change Events
14
Configuring End Points Used in MAF Applications
14.1
Introduction to Configuring End Points
14.2
Defining the Configuration Service End Point
14.3
Creating the User Interface for the Configuration Service
14.4
About the URL Construction
14.5
Setting Up the Configuration Service on the Server
14.6
Configuring Properties For Use By Enterprise Mobile Management
15
Using Web Services in a MAF Application
15.1
Introduction to Using Web Services in a MAF Application
15.2
Creating a Rest Service Adapter to Access Web Services
15.2.1
Accessing Input and Output Streams
15.2.2
Support for Non-Text Responses
15.3
Accessing Secure Web Services
15.3.1
How to Enable Access to Web Services
15.3.2
What Happens When You Enable Access to Web Services
15.3.3
What You May Need to Know About Accessing Web Services and Containerized MAF Applications
15.3.4
What You May Need to Know About Credential Injection
15.3.5
What You May Need to Know About Cookie Injection
15.4
Configuring the Browser Proxy Information
16
Working with REST Services
16.1
Introduction to Working with REST Services
16.1.1
REST Client Page
16.1.2
REST API Page
16.1.3
Data Types Page
16.1.4
Using Authentication
16.1.5
How to Open the REST Service Editor
16.1.6
How to Create a REST Service Description
16.2
Using the REST Client
16.2.1
Specifying REST Service Connections
16.2.1.1
How to Enter a Simple URI
16.2.1.2
How to Compose an Address to a REST Service
16.2.1.3
How to Include Queries in the Request
16.2.1.4
How to Include Fragments in the Request
16.2.1.5
How to Use Connection Names from the Application
16.2.1.6
How to Create Persistent Connections
16.2.1.7
Overriding OWSM Policies
16.2.1.8
How to Use Authentication
16.2.2
Sending Requests to the REST Service
16.2.3
What Happens When You Send a Request
16.2.4
Generating Response Types
16.3
Modifying the Request Content
16.3.1
How to Use REST Headers in the Request
16.3.2
How to Use Query Parameters to Configure the Response.
16.3.3
How to Send Input
16.3.4
How to Specify Output
16.4
Importing and Modeling the REST API
16.4.1
Importing REST Client Information
16.4.2
What Happens When You Import REST Client Information
16.4.3
Manually Modeling the REST API
16.4.3.1
How to Create New Requests
16.4.3.2
How to Create New Paths
16.4.4
Working with Path Variable Types
16.4.4.1
How to Edit a Path Variable Type
16.4.4.2
Path Variable Types in Artifact Generation
16.4.4.3
Path Variable Types and the REST Client
16.5
Importing and Modeling Data Types
16.5.1
How to Create Data Types
16.5.2
How to Import Data Types
16.6
Testing Modeled Requests Against the REST Service
16.7
Creating REST Service Artifacts
16.7.1
How to Generate Java Artifacts for REST Services
16.7.2
What Happens When You Generate Java Artifacts
16.7.3
About the Generated Artifacts for REST Services
16.7.3.1
Generated Data Type Artifacts
16.7.3.2
Generated REST API Artifacts
16.7.3.3
Generated Service Artifacts
16.7.4
How to Use the Generated Artifacts in Your MAF Application
16.8
Using the Connections View
16.8.1
How to Open the Connections View
16.8.2
How to Edit a Connection
16.8.3
How to Reuse a Connection
16.8.4
How to Open connections.xml
17
Working with Oracle Cloud Services
17.1
Introduction to Working with Oracle Cloud Services
17.2
Introduction to Working with MCS
17.2.1
Getting Started with MCS
17.2.1.1
Consuming MCS Services in MAF Applications
17.2.1.2
Developing Mobile Clients for MCS Mobile Services
17.2.1.3
Using Mobile Backends
17.2.1.4
Importing a REST API
17.2.1.4.1
Importing a REST API from Oracle Cloud View
17.2.1.4.2
Importing a REST API Using the REST Service Editor
17.3
Enabling Mobile Applications to Access Data Hosted on Oracle Cloud
17.3.1
How to Authenticate Against Oracle Cloud
17.3.2
How to Create a Web Service Data Control to Access Oracle Java Cloud
17.3.2.1
Configuring the Policy for Web Services
17.3.3
What Happens When You Deploy a Mobile Application that Accesses Oracle Java Cloud Service
18
Creating Custom MAF AMX UI Components
18.1
Introduction to Creating Custom UI Components
18.2
Using MAF APIs to Create Custom Components
18.2.1
How to Use Static APIs
18.2.2
How to Use AmxEvent Classes
18.2.3
How to Use the TypeHandler
18.2.4
How to Use the AmxNode
18.2.5
How to Use the AmxTag
18.2.6
How to Use the VisitContext
18.2.7
How to Use the AmxAttributeChange
18.2.8
How to Use the AmxDescendentChanges
18.2.9
How to Use the AmxCollectionChange
18.2.10
How to Use the AmxNodeChangeResult
18.2.11
How to Use the AmxNodeStates
18.2.12
How to Use the AmxNodeUpdateArguments
18.3
Creating Custom Components
19
Using the Local Database in MAF AMX
19.1
Introduction to the Local SQLite Database Usage
19.1.1
Differences Between SQLite and Other Relational Databases
19.1.1.1
Concurrency
19.1.1.2
SQL Support and Interpretation
19.1.1.3
Data Types
19.1.1.4
Foreign Keys
19.1.1.5
Database Transactions
19.1.1.6
Authentication
19.2
Using the Local SQLite Database
19.2.1
How to Connect to the Database
19.2.2
How to Use SQL Script to Initialize the Database
19.2.3
How to Initialize the Database on a Desktop
19.2.4
What You May Need to Know About Commit Handling
19.2.5
Limitations of the MAF's SQLite JDBC Driver
19.2.6
How to Use the VACUUM Command
19.2.7
How to Encrypt and Decrypt the Database
19.2.8
What You May Need to Know About the StockTracker Sample Application
20
Implementing Application Feature Content Using Remote URLs
20.1
Introduction to Remote URL Applications
20.2
Enabling Remote Applications Access Container Services
20.3
Whitelisting Remote URLs in Your MAF Application
20.3.1
How to Whitelist Remote URLs on the Android Platform
20.3.2
How to Whitelist Remote URLs on the iOS Platform
20.3.3
How to Whitelist Remote URLs on Universal Windows Platform
20.4
Enabling the Browser Navigation Bar on Remote URL Pages
20.4.1
How to Add the Navigation Bar to a Remote URL Application Feature
20.4.2
What Happens When You Enable the Browser Navigation Buttons for a Remote URL Application Feature
21
Enabling User Preferences
21.1
Creating User Preference Pages for a Mobile Application
21.1.1
How to Create Mobile Application-Level Preferences Pages
21.1.1.1
How to Create a New User Preference Page
21.1.1.2
What Happens When You Add a Preference Page
21.1.1.3
How to Create User Preference Lists
21.1.1.4
What Happens When You Create a Preference List
21.1.1.5
How to Create a Boolean Preference List
21.1.1.6
What Happens When You Add a Boolean Preference
21.1.1.7
How to Add a Text Preference
21.1.1.8
What Happens When You Define a Text Preference
21.1.2
What Happens When You Create an Application-Level Preference Page
21.2
Creating User Preference Pages for Application Features
21.3
Using EL Expressions to Retrieve Stored Values for User Preference Pages
21.3.1
What You May Need to Know About preferenceScope
21.3.2
Reading Preference Values in iOS Native Views
21.4
Platform-Dependent Display Differences
22
Setting Constraints on Application Features
22.1
Introduction to Constraints
22.1.1
Using Constraints to Show or Hide an Application Feature
22.1.2
Using Constraints to Deliver Specific Content Types
22.2
Defining Constraints for Application Features
22.2.1
How to Define the Constraints for an Application Feature
22.2.2
What Happens When You Define a Constraint
22.2.3
About the property Attribute
22.2.4
About User Constraints and Access Control
22.2.5
About Hardware-Related Constraints
22.2.6
Creating Dynamic Constraints on Application Features and Content
22.2.6.1
About Combining Static and EL-Defined Constraints
22.2.6.2
How to Define a Dynamic Constraint
23
Using AppXray for MAF Artifacts
23.1
Introduction to Using AppXray for MAF Artifacts
23.2
Using AppXray
23.2.1
How to Open AppXaminer
23.2.1.1
About AppXaminer
23.2.2
Using AppXaminer
23.3
Refactoring with AppXray
24
Enabling and Using Notifications
24.1
Introduction to Notifications
24.2
Enabling Push Notifications
24.2.1
What You May Need to Know About the Push Notification Payload
24.3
Managing Local Notifications
24.3.1
How to Manage Local Notifications Using Java
24.3.2
How to Manage Local Notifications Using JavaScript
24.3.3
How to Manage Local Notifications Using the DeviceFeatures Data Control
24.3.4
How to Handle Local Notifications
24.3.5
What You May Need to Know About Local Notification Options and the Application Behavior
25
Caching Data in a MAF Application
25.1
Introduction to Data Caching in MAF Applications
25.2
Enable Data Caching in a MAF Application
25.3
Specifying Cached Resources and Cache Policies in the sync-config.xml File
25.4
Caching Policies Provided by MAF
25.5
Using Configuration Service End Points in the sync-config.xml File
25.6
Encrypting Cached Data in a MAF Application
25.7
Packaging the sync-config.xml File in a FAR
26
Displaying Error Messages in MAF Applications
26.1
Introduction to Error Handling in MAF Applications
26.2
Displaying Error Messages and Stopping Background Threads
26.2.1
How Applications Display Error Message for Background Thread Exceptions
26.3
Localizing Error Messages
27
Deploying MAF Applications
27.1
Introduction to Deployment of MAF Applications
27.2
Overview of Quick Deployment of Applications
27.2.1
About the Artifacts That Support Quick Deployment
27.2.2
About Requirements for Quick Deployment
27.2.3
What Happens During a Quick Deployment Session
27.2.4
How to Start the Full Deployment of an Application
27.2.5
How to Force the Full Deployment of an Application
27.2.6
What You May Need to Know About Quick Deployment Limitations
27.3
Working with Deployment Configurations
27.3.1
About Deployment Configurations
27.3.2
Differences Between Run Configurations and Debug Configurations
27.3.3
How to Create a Deployment Configuration
27.3.4
What Happens When You Create a Deployment Configuration
27.4
Deploying an Android Application
27.4.1
How to Create an Android Deployment Configuration
27.4.1.1
Setting Advanced Options
27.4.1.2
Setting Deployment Options
27.4.1.3
Defining the Android Signing Options
27.4.1.4
What You May Need to Know About Credential Storage
27.4.1.5
How to Add a Custom Image to an Android Application
27.4.1.6
What Happens When OEPE Deploys Images for Android Applications
27.4.2
How to Deploy an Android Application to an Android Emulator
27.4.3
How to Deploy an Application Locally as an APK File
27.4.4
How to Deploy an Application to an Android-Powered Device
27.4.5
How to Publish an Android Application
27.4.6
What Happens in OEPE When You Create an .apk File
27.4.7
Selecting the Most Recently Used Deployment Configurations
27.4.8
Viewing the Device/Emulator Log in the Console
27.5
Deploying an iOS Application
27.5.1
How to Create an iOS Deployment Configuration
27.5.2
Setting the Device Signing Options
27.5.3
How to Restrict the Display to a Specific Device Orientation
27.5.4
What Happens When You Deselect Device Orientations
27.5.5
Using Images with iOS Applications
27.5.5.1
Overriding the Default Oracle Images in the Configuration
27.5.5.2
Replacing the Default Images
27.5.5.3
Add Custom Images
27.5.6
How to Deploy an iOS Application to an iOS Simulator
27.5.6.1
Using Quick Deploy
27.5.7
How to Deploy an Application to an iOS-Powered Device
27.5.8
What Happens When You Deploy an Application to an iOS Device
27.5.9
What You May Need to Know About Deploying an Application to an iOS-Powered Device
27.5.9.1
Creating iOS Development Certificates
27.5.9.2
Registering an Apple Device for Testing and Debugging
27.5.9.3
Registering an Application ID
27.5.10
How to Distribute an iOS Application to the App Store
27.6
Deploying a MAF Application to the Universal Windows Platform
27.6.1
How to Create a Deployment Configuration for Universal Windows Platform
27.6.2
Defining the Windows Platform Signing Options
27.6.3
How to Deploy a MAF Application to the Universal Windows Platform
27.6.4
What Happens When You Deploy a MAF Application to the Universal Windows Platform
27.6.5
How to Deploy an Application Locally as a Package
27.6.6
What Happens When You Deploy Locally as a Package
27.7
Deploying Feature Archive Files (FARs)
27.7.1
How to Create a Mobile Feature Archive File
27.7.2
How to Deploy the Feature Archive
27.7.3
What Happens When You Create a Feature Archive File
27.8
Creating a Mobile Application Archive File
27.8.1
How to Create a Mobile Application Archive File
27.9
Creating Unsigned Deployment Packages
27.9.1
How to Create an Unsigned Application
27.9.2
What Happens When You Import a MAF Application Archive File
27.10
Deploying with Oracle Mobile Security Suite
27.10.1
What Happens When You Containerize Your App with OMSS
28
Understanding Secure Mobile Development Practices
28.1
Weak Server-Side Controls
28.2
Insecure Data Storage on the Device
28.2.1
Encrypting the SQLite Database
28.2.2
Securing the Device's Local Data Stores
28.2.3
About Security and Application Logs
28.3
Insufficient Transport Layer Protection
28.4
Side-Channel Data Leakage
28.5
Poor Authorization and Authentication
28.6
Broken Cryptography
28.7
Client-Side Injection From Cross-Site Scripting
28.7.1
Protecting MAF Applications from Injection Attacks Using Device Access Permissions
28.7.2
About Injection Attack Risks from Custom HTML Components
28.7.3
About SQL Injections and XML Injections
28.8
Security Decisions From Untrusted Inputs
28.9
Improper Session Handling
28.10
Lack of Binary Protections Resulting in Sensitive Information Disclosure
29
Securing MAF Applications
29.1
Introduction to MAF Security
29.2
About the User Login Process
29.3
Overview of the Authentication Process for Mobile Applications
29.4
Overview of the Authentication Process for Containerized MAF Applications
29.5
Configuring MAF Connections
29.5.1
How to Create a MAF Login Connection
29.5.2
How to Create a Multi-Tenant Aware MAF Login Connection
29.5.3
How to Configure Basic Authentication
29.5.4
How to Configure OAuth Authentication
29.5.5
How to Configure Web SSO Authentication
29.5.6
How to Update Connection Attributes of a Named Connection at Runtime
29.5.7
How to Store Login Credentials
29.5.8
What Happens When You Create a Connection for a MAF Application
29.5.9
What Happens When You Create a Multi-Tenant Aware Connection
29.5.10
What You May Need to Know About the Login Connection Configuration
29.5.11
What You May Need to Know About Login Connections and Containerized MAF Applications
29.5.12
What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
29.5.13
What You May Need to Know About Migrating a MAF Application and Authentication Modes
29.5.14
What You May Need to Know About Custom Headers
29.5.15
What Happens at Runtime: When MAF Calls a REST Web Service
29.5.16
What You May Need to Know About Injecting Basic Authentication Headers
29.5.17
What You May Need to Know about Web Service Security
29.5.18
How to Configure Access Control
29.5.19
What You May Need to Know About the Access Control Service
29.5.20
How to Alter the Application Loading Sequence
29.5.21
How to Configure Login Credentials Programmatically Prior to Authentication
29.6
Configuring Security for Mobile Applications
29.6.1
How to Enable Application Features to Require Authentication
29.6.2
How to Designate the Login Page
29.6.3
How to Create a Custom Login HTML Page
29.6.4
What You May Need to Know About Login Pages
29.6.4.1
The Default Login Page
29.6.4.2
The Custom Login Page
29.6.5
What You May Need to Know About Login Page Elements
29.6.6
What Happens in OEPE When You Configure Security for Application Features
29.7
Allowing Access to Device Capabilities
29.8
Enabling Users to Log Out from Application Features
29.9
Using MAF Authentication APIs
29.10
Creating Certificates to Access Servers That Use Self-Signed Certificates for SSL
29.11
Configuring a MAF Application to Enable Two-Way SSL for Authentication
30
Testing and Debugging MAF Applications
30.1
Introduction to Testing and Debugging MAF Applications
30.2
Testing MAF Applications
30.2.1
How to Perform Accessibility Testing on iOS-Powered Devices
30.3
Configuring OEPE and MAF Applications to Debug Code
30.3.1
What You May Need to Know About the Debugging Configuration
30.3.1.1
Creating and Configuring a Debug Configuration
30.3.2
How to Enable Debugging of Java Code and JavaScript
30.3.2.1
What You May Need to Know About Debugging of JavaScript Using an iOS-Powered Device Simulator on iOS 6 Platform
30.3.3
How to Debug the MAF AMX Content
30.4
Debugging MAF Applications Deployed on the Android Platform
30.4.1
How to Debug Java Code on the Android Platform
30.4.1.1
Troubleshooting adb
30.4.2
How to Debug UI Code on the Android Platform
30.5
Debugging MAF Applications Deployed on the iOS Platform
30.5.1
How to Debug Java Code on the iOS Platform
30.5.2
How to Debug UI Code on the iOS Platform
30.6
Debugging MAF Applications Deployed on the Universal Windows Platform
30.6.1
How to Debug Java Code on the Universal Windows Platform
30.6.1.1
How to Enable Remote Debugging of a MAF Application on the Universal Windows Platform
30.6.2
How to Debug UI Code on the Universal Windows Platform
30.7
Using and Configuring Logging in MAF Applications
30.7.1
How to Configure Logging Using the Properties File
30.7.2
How to Use JavaScript Logging
30.7.3
How to Use Embedded Logging
30.7.4
How to Use Xcode for Debugging and Logging on iOS Platform
30.7.5
How to Access the Application Log
30.7.6
How to Disable Logging
30.8
Measuring MAF Application Performance
30.9
Sending Diagnostic Information to Oracle Mobile Cloud Service
30.10
Sending Analytics Information to Oracle Mobile Cloud Service
30.10.1
How to Configure the Transfer of Analytics to Oracle Mobile Cloud Service
30.10.2
How to Programmatically Send Analytics to Oracle Mobile Cloud Service
30.10.3
How to Send Context Events to Oracle Mobile Cloud Service
30.10.4
How to Send Analytics to Other Repositories
30.10.5
MAF Framework Events that Capture Analytics Information
A
Troubleshooting MAF Applications
A.1
Problems with Input Components on iOS Simulators
A.2
Code Signing Issues Prevent Deployment
B
Local HTML and Application Container APIs
B.1
Using MAF APIs to Create a Custom HTML Springboard Application Feature
B.1.1
About Executing Code in Custom HTML Pages
B.2
The MAF Container Utilities API
B.2.1
Using the JavaScript Callbacks
B.2.2
Using the Container Utilities API
B.2.3
getApplicationInformation
B.2.4
gotoDefaultFeature
B.2.5
gotoFeature
B.2.6
getFeatures
B.2.7
getFeatureByName
B.2.8
getFeatureById
B.2.9
resetFeature
B.2.10
resetApplication
B.2.11
gotoSpringboard
B.2.12
showSpringboard
B.2.13
hideSpringboard
B.2.14
showNavigationBar
B.2.15
hideNavigationBar
B.2.16
showPreferences
B.2.17
invokeMethod
B.2.18
invokeContainerMethod
B.2.19
invokeContainerJavaScriptFunction
B.2.20
sendEmail
B.2.21
sendSMS
B.2.22
Application Icon Badging
B.3
Accessing Files Using the getDirectoryPathRoot Method
B.3.1
Accessing Platform-Independent Download Locations
C
MAF Application and Project Files
C.1
Introduction to MAF Application and Project Files
C.2
About the Assembly-Level Resources
C.3
About the Application Project Resources
C.4
About the View Project Resources
D
Converting Preferences for Deployment
D.1
Naming Patterns for Preferences
D.2
Converting Preferences for Android
D.2.1
maf_preferences.xml
D.2.1.1
Preferences Element Mapping
D.2.1.2
Preference Attribute Mapping
D.2.1.3
Attribute Default Values
D.2.1.4
Preferences Screen Root Element
D.2.2
arrays.xml
D.2.3
Strings.xml
D.3
Converting Preferences for iOS
D.4
Converting Preferences for Windows
E
MAF Sample Applications
E.1
Overview of the MAF Sample Applications
Scripting on this page enhances content navigation, but does not change the content in any way.