Go to main content
1/40
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for MAF 2.3.3
New and Changed Features for MAF 2.3.3
Other Significant Changes in this Document for MAF
2.3.3
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.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
Configuring the Web View of Application Features with AMX Content on iOS
5.5
Selecting External Resources for Use in Application Features
6
Creating the Client Data Model in a MAF Application
6.1
Introduction to the Client Data Model in a MAF Application
6.2
Overview of Creating a Client Data Model in a MAF Application
6.3
Connecting to a REST Service to Create the Client Data Model
6.3.1
How to Connect to the REST Service to Retrieve Data Objects
6.3.2
What You May Need to Know About the MCS Anonymous Access Key
6.4
Discovering Candidate Data Objects for the Client Data Model
6.4.1
How to Discover Resources and Data Objects Using a REST Resource URL
6.4.2
How to Discover Data Objects Using a RAML File
6.5
Editing Data Objects for the Client Data Model
6.5.1
How to Create New Data Objects
6.5.2
How to Modify Data Object Attributes
6.6
Making Relationships Discoverable
6.6.1
Relationships Using Web Service Calls
6.6.2
Relationships in the JSON Payload
6.7
Creating the Client Data Model Artifact Profile
6.7.1
Defining CRUD REST Resources
6.7.2
How to Specify Query and Path Parameters
6.7.3
How to Add Custom Resources
6.7.4
Setting Attribute Values in the Profile
6.7.5
Setting Runtime Options for the Client Data Model
6.8
Generating the Client Data Model
6.9
Editing the Client Data Model in a MAF Application
6.10
Accessing the SQLite Database Using the MAF Client Data Model DBPersistenceManager
6.11
Defining a Custom Resource
6.12
Executing Custom Logic After CRUD REST Calls
6.13
Getting Programmatic Access to Service Objects
6.14
Understanding Usage of the Primary Key
6.15
Using Filtered Entity Lists
6.16
Using the CDM in a MAF Application
6.17
Synchronizing Offline Transactions from a MAF Application
6.17.1
How to View Pending Synchronization Actions
6.17.2
How to Add Custom Logic to Handle Failed Synchronization Actions
6.17.3
What You May Need to Know About Disabling Automatic Synchronization
6.18
Understanding the Client Data Model’s Support for Data Change Events
6.19
Forcing Offline Mode in a MAF Application
6.20
Using a Visual Indicator for Running Background Tasks
7
Using Oracle Mobile Cloud Service Platform APIs in a MAF Application
7.1
Introduction to Using Oracle Mobile Cloud Service Platform APIs
7.2
Accessing Oracle Mobile Cloud Service User Information
7.3
Accessing Files in an Oracle Mobile Cloud Service Storage Collection
7.3.1
How to Create the StorageObjectService Bean Data Control
7.3.2
What Happens When You Create the StorageObject Bean Data Control
7.3.3
How to Retrieve All Files from an Oracle Mobile Cloud Service Storage Collection
7.3.4
How to Filter the List of Storage Objects from an MCS Storage Collection
7.3.5
How to Retrieve a Single File from an Oracle Mobile Cloud Service Storage Collection
7.3.6
How to Associate Storage Objects with Data in your MAF Application
7.4
Sending Analytics Information to Oracle Mobile Cloud Service
7.4.1
How to Configure the Transfer of Analytics to Oracle Mobile Cloud Service
7.4.2
How to Programmatically Send Analytics to Oracle Mobile Cloud Service
7.4.3
How to Send Context Events to Oracle Mobile Cloud Service
7.4.4
How to Send Analytics to Other Repositories
7.4.5
MAF Framework Events that Capture Analytics Information
7.5
Sending Diagnostic Information to Oracle Mobile Cloud Service
8
Localizing MAF Applications
8.1
Introduction to MAF Application Localization
8.2
Setting Resource Bundle Options for a MAF Application
8.3
Defining Text Resources in a Base Resource Bundle
8.3.1
How to Define a Text Resource in a Base Resource Bundle
8.3.2
What Happens When You Define a Text Resource in a Base Resource Bundle
8.4
Creating Locale-Specific Resource Bundles
8.4.1
How to Create a Locale-Specific Resource Bundle
8.5
Editing Resources in Resource Bundles
8.6
Localizing Image Files in a MAF Application
8.7
MAF Support of Languages
8.8
Localizable MAF Properties
9
Skinning MAF Applications
9.1
Introduction to MAF Application Skins
9.1.1
About the maf-config.xml File
9.1.2
About the maf-skins.xml File
9.2
Adding a Custom Skin to an Application
9.3
Specifying a Skin for an Application to Use
9.4
Registering a Custom Skin
9.5
Versioning MAF Skins
9.6
What Happens When You Version Skins
9.7
Overriding the Default Skin Styles
9.8
What You May Need to Know About Skinning
9.9
Adding a New Style Sheet to a Skin
9.10
Enabling End Users Change an Application's Skin at Runtime
9.11
What Happens at Runtime: How End Users Change an Application's Skin
10
Using Plugins in MAF Applications
10.1
Introduction to Using Plugins in MAF Applications
10.2
Enabling a Core Plugin in Your MAF Application
10.2.1
How to Enable a Core Plugin in Your MAF Application
10.2.2
What Happens When You Enable a Core Plugin in Your MAF Application
10.3
Registering Additional Plugins in Your MAF Application
10.3.1
How to Register an Additional Plugin
10.3.2
What Happens When You Register an External Plugin for Your MAF Application
10.4
Deploying Plugins with Your MAF Application
10.5
Importing Plugins from a Feature Archive File
10.6
Using a Plugin in a MAF Application
10.7
Providing Usage Descriptions for Plugins that Access Device Capabilities on iOS
11
Using Lifecycle Listeners in MAF Applications
11.1
Introduction to Lifecycle Listeners in MAF Applications
11.2
Registering a Lifecycle Listener for a MAF Application or an Application Feature
11.3
What Happens When You Register a Lifecycle Listener
12
Creating MAF AMX Pages
12.1
Introduction to the MAF AMX Application Feature
12.2
Creating Task Flows
12.2.1
How to Create a Task Flow
12.2.2
What You May Need to Know About Task Flow Activities and Control Flows
12.2.3
What You May Need to Know About the task-flow-definition.xml File
12.2.4
What You May Need to Know About the MAF Task Flow Diagrammer
12.2.5
How to Add and Use Task Flow Activities
12.2.5.1
Adding View Activities
12.2.5.2
Adding Router Activities
12.2.5.3
Adding Method Call Activities
12.2.5.4
Adding Task Flow Call Activities
12.2.5.4.1
Calling a Bounded Task Flow Using a Task Flow Call Activity
12.2.5.4.2
Specifying Input Parameters on a Task Flow Call Activity
12.2.5.5
Adding Task Flow Return Activities
12.2.5.6
Using Task Flow Activities with Page Definition Files
12.2.6
How to Define Control Flows
12.2.6.1
Defining a Control Flow Case
12.2.6.2
Adding a Wildcard Control Flow Rule
12.2.6.3
What You May Need to Know About Control Flow Rule Metadata
12.2.6.4
What You May Need to Know About Control Flow Rule Evaluation
12.2.7
What You May Need to Know About MAF Support for Back Navigation
12.2.8
How to Enable Page Navigation by Dragging
12.2.9
How to Specify Action Outcomes Using UI Components
12.2.10
How to Create and Reference Managed Beans
12.2.11
How to Specify the Page Transition Style
12.2.12
What You May Need to Know About Bounded and Unbounded Task Flows
12.2.12.1
Unbounded Task Flows
12.2.12.2
Bounded Task Flows
12.2.12.3
Using Parameters in Task Flows
12.2.12.3.1
Passing Parameters to a Bounded Task Flow
12.2.12.3.2
Configuring a Return Value from a Bounded Task Flow
12.3
Creating Views
12.3.1
How to Work with MAF AMX Pages
12.3.1.1
Creating MAF AMX Pages
12.3.1.2
What Happens When You Create an MAF AMX Page
12.3.1.3
Accessing the Page Definition File
12.3.1.4
Sharing the Page Contents
12.3.2
How to Add UI Components and Data Controls to an MAF AMX Page
12.3.2.1
Adding UI Components
12.3.2.2
Adding Data Controls to the View
12.3.2.2.1
Dragging and Dropping Attributes
12.3.2.2.2
Dragging and Dropping Operations
12.3.2.2.3
Dragging and Dropping Collections
12.3.2.2.4
What You May Need to Know About Generated Bindings
12.3.2.2.5
What You May Need to Know About Generated Drag and Drop Artifacts
12.3.2.2.6
Using the MAF AMX Editor Bindings Tab
12.3.2.2.7
What You May Need to Know About Removal of Unused Bindings
12.3.2.3
What You May Need to Know About Element Identifiers and Their Audit
12.3.3
What You May Need to Know About the Server Communication
13
Creating the MAF AMX User Interface
13.1
Introduction to Creating the User Interface for MAF AMX Pages
13.2
Designing the Page Layout
13.2.1
How to Use a View Component
13.2.2
How to Use a Panel Page Component
13.2.3
How to Use a Panel Group Layout Component
13.2.3.1
Customizing the Scrolling Behavior
13.2.4
How to Use a Panel Form Layout Component
13.2.5
How to Use a Panel Stretch Layout Component
13.2.6
How to Use a Panel Label And Message Component
13.2.7
How to Use a Facet Component
13.2.8
How to Use a Popup Component
13.2.9
How to Use a Panel Splitter Component
13.2.10
How to Use a Spacer Component
13.2.11
How to Use a Table Layout Component
13.2.12
How to Use a Masonry Layout Component
13.2.13
How to Use an Accessory Layout Component
13.2.14
How to Use a Deck Component
13.2.15
How to Use a Flex Layout Component
13.2.16
How to Use the Fragment Component
13.3
Creating and Using UI Components
13.3.1
How to Use the Input Text Component
13.3.1.1
Customizing the Input Text Component
13.3.2
How to Use the Input Number Slider Component
13.3.3
How to Use the Input Date Component
13.3.4
How to Use the Output Text Component
13.3.5
How to Use Buttons
13.3.5.1
Displaying Default Style Buttons
13.3.5.2
Displaying Back Style Buttons
13.3.5.3
Displaying Highlight Style Buttons
13.3.5.4
Displaying Alert Style Buttons
13.3.5.5
Using Additional Button Styles
13.3.5.6
Using Buttons Within the Application
13.3.5.7
Enabling the Back Button Navigation
13.3.5.8
What You May Need to Know About the Order of Processing Operations and Attributes
13.3.6
How to Use Links
13.3.7
How to Display Images
13.3.8
How to Use the Checkbox Component
13.3.8.1
Support for Checkbox Components on iOS Platform
13.3.8.2
Support for Checkbox Components on Android Platform
13.3.9
How to Use the Select Many Checkbox Component
13.3.9.1
What You May Need to Know About the User Interaction with Select Many Checkbox Component
13.3.10
How to Use the Choice Component
13.3.10.1
What You May Need to Know About the User Interaction with Choice Component on iOS Platform
13.3.10.2
What You May Need to Know About the User Interaction with Choice Component on Android Platform
13.3.10.3
What You May Need to Know About Differences Between Select Items and Select Item Components
13.3.11
How to Use the Select Many Choice Component
13.3.12
How to Use the Boolean Switch Component
13.3.12.1
What You May Need to Know About Support for Boolean Switch Components on iOS Platform
13.3.13
How to Use the Select Button Component
13.3.14
How to Use the Radio Button Component
13.3.15
How to Use List View and List Item Components
13.3.15.1
Configuring Paging and Dynamic Scrolling
13.3.15.2
Rearranging List View Items
13.3.15.3
Configuring The List View Layout
13.3.15.4
What You May Need to Know About Using a Static List View
13.3.16
How to Use the Carousel Component
13.3.17
How to Use the Film Strip Component
13.3.17.1
What You May Need to Know About the Film Strip Layout
13.3.17.2
What You May Need to Know About the Film Strip Navigation
13.3.18
How to Use Verbatim Component
13.3.18.1
What You May Need to Know About Using JavaScript and AJAX with Verbatim Component
13.3.19
How to Use Output HTML Component
13.3.20
How to Enable Iteration
13.3.21
How to Refresh Contents of UI Components
13.3.22
How to Load a Resource Bundle
13.3.23
How to Use the Action Listener
13.3.23.1
What You May Need to Know About Differences Between the Action Listener Component and Attribute
13.3.24
How to Use the Set Property Listener
13.3.25
How to Use the Client Listener
13.3.26
How to Convert Date and Time Values
13.3.26.1
What You May Need to Know About Date and Time Patterns
13.3.27
How to Convert Numerical Values
13.3.28
How to Enable Drag Navigation
13.3.28.1
What You May Need to Know About the disabled Attribute
13.3.29
How to Use the Loading Indicator
13.4
Creating Custom UI Components
13.5
Enabling Gestures
13.6
Providing Data Visualization
13.6.1
How to Create an Area Chart
13.6.2
How to Create a Bar Chart
13.6.3
How to Create a Range Chart
13.6.4
How to Create a Bubble Chart
13.6.5
How to Create a Combo Chart
13.6.6
How to Create a Line Chart
13.6.7
How to Create a Pie Chart
13.6.7.1
Configuring the Pie Chart as a Ring Chart
13.6.7.2
Styling the Pie Chart
13.6.8
How to Create a Scatter Chart
13.6.9
How to Create a Spark Chart
13.6.10
How to Create a Funnel Chart
13.6.11
How to Create a Stock Chart
13.6.12
How to Style Chart Components
13.6.13
How to Use Events with Chart Components
13.6.14
What You May Need to Know About Customization of Chart Tooltips
13.6.15
How to Enable Sorting of Charts with Categorical Axis
13.6.16
How to Define the Initial Zooming of Charts
13.6.17
How to Define Stacking of Specific Chart Series
13.6.18
How to Enable Split Dual-Y Axis in Charts
13.6.19
How to Create an LED Gauge
13.6.20
How to Create a Status Meter Gauge
13.6.21
How to Create a Dial Gauge
13.6.22
How to Create a Rating Gauge
13.6.22.1
Overwriting the shortDesc Attribute
13.6.22.2
Applying Custom Styling to the Rating Gauge Component
13.6.23
How to Define Child Elements for Chart and Gauge Components
13.6.23.1
Defining Chart Data Item
13.6.23.2
Defining and Configuring Legend
13.6.23.3
Defining X Axis, YAxis, and Y2Axis
13.6.23.4
Defining Pie Data Item
13.6.23.5
Defining Spark Data Item
13.6.23.6
Defining Funnel Data Item
13.6.23.7
Defining Stock Data Item
13.6.23.8
Defining Threshold
13.6.24
How to Create a Geographic Map Component
13.6.24.1
Configuring Geographic Map Components With the Map Provider Information
13.6.24.2
Displaying Route in Geographic Map Components
13.6.25
How to Create a Thematic Map Component
13.6.25.1
Defining Custom Markers
13.6.25.2
Defining Isolated Area Layers
13.6.25.3
Defining Isolated Areas
13.6.25.4
Enabling Initial Zooming
13.6.25.5
Defining a Custom Base Map
13.6.25.6
What You May Need to Know About the Marker Support for Event Listeners
13.6.25.7
Applying Custom Styling to the Thematic Map Component
13.6.26
How to Use Events with Map Components
13.6.27
How to Create a Treemap Component
13.6.27.1
Applying Custom Styling to the Treemap Component
13.6.28
How to Create a Sunburst Component
13.6.28.1
Applying Custom Styling to the Sunburst Component
13.6.29
How to Create a Timeline Component
13.6.29.1
Applying Custom Styling to the Timeline Component
13.6.30
How to Create an NBox Component
13.6.31
How to Create a Picto Chart
13.6.32
How to Define Child Elements for Map Components, Sunburst, Treemap, Timeline, and NBox
13.6.33
How to Create Databound Data Visualization Components
13.6.33.1
What You May Need to Know About Setting Series Style for Databound Chart Components
13.6.34
How to Create Data Visualization Components Based on Static Data
13.6.35
How to Enable Interactivity in Chart Components
13.6.36
How to Create Polar Charts
13.7
Styling UI Components
13.7.1
How to Use Component Attributes to Define Style
13.7.2
What You May Need to Know About Skinning
13.7.3
What You May Need to Know About Using CSS ID Selectors for Skinning
13.7.4
How to Style Data Visualization Components
13.8
Understanding MAF Support for Accessibility
13.8.1
How to Configure UI and Data Visualization Components for Accessibility
13.8.2
What You May Need to Know About the Basic WAI-ARIA Terms
13.8.3
What You May Need to Know About the Oracle Global HTML Accessibility Guidelines
13.9
Validating Input
13.10
Using Event Listeners
13.10.1
What You May Need to Know About Constrained Type Attributes for Event Listeners
14
Using Bindings and Creating Data Controls in MAF AMX
14.1
Introduction to Bindings and Data Controls
14.2
About Object Scope Lifecycles
14.2.1
What You May Need to Know About Object Scopes and Task Flows
14.3
Creating EL Expressions
14.3.1
About Data Binding EL Expressions
14.3.2
How to Create an EL Expression
14.3.2.1
About the Method Expression Builder
14.3.2.2
About Non EL-Properties
14.3.3
What You May Need to Know About MAF Binding Properties
14.3.4
How to Reference Binding Containers
14.3.5
About the Categories in the Expression Builder
14.3.5.1
About the Bindings Category
14.3.5.2
About the Managed Beans Category
14.3.5.3
About the Mobile Application Framework Objects Category
14.3.6
About EL Events
14.3.7
How to Use EL Expressions Within Managed Beans
14.4
Creating and Using Managed Beans
14.4.1
How to Create a Managed Bean in OEPE
14.4.2
What Happens When You Use OEPE to Create a Managed Bean
14.5
Exposing Business Services with Data Controls
14.5.1
How to Create Data Controls
14.5.2
What Happens in Your Project When You Create a Data Control
14.5.2.1
The Data Control Manager
14.5.2.2
The Palette
14.5.3
Data Control Built-in Operations
14.5.3.1
addXXX and removeXXX Methods of Data Control
14.6
Creating Databound UI Components from the Data Controls Palette
14.6.1
How to Use the Data Controls Palette
14.6.2
What Happens When You Use the Data Controls Palette
14.7
What Happens at Runtime: How the Binding Context Works
14.8
Working with Data Control Attributes
14.8.1
Setting UI Hints on Attributes
14.8.2
What Happens When You Set UI Hints on Attributes
14.8.3
How to Access UI Hints Using EL Expressions
14.9
Creating and Using Bean Data Controls
14.9.1
What You May Need to Know About Serialization of Bean Class Variables
14.10
Using the DeviceFeatures Data Control
14.10.1
How to Use the getPicture Method to Enable Taking Pictures
14.10.2
How to Use the SendSMS Method to Enable Text Messaging
14.10.3
How to Use the sendEmail Method to Enable Email
14.10.4
How to Use the createContact Method to Enable Creating Contacts
14.10.5
How to Use the findContacts Method to Enable Finding Contacts
14.10.6
How to Use the updateContact Method to Enable Updating Contacts
14.10.7
How to Use the removeContact Method to Enable Removing Contacts
14.10.8
How to Use the startLocationMonitor Method to Enable Geolocation
14.10.9
How to Use the displayFile Method to Enable Displaying Files
14.10.10
How to Use the addLocalNotification and cancelLocalNotification Methods to Manage Local Notifications
14.10.11
What You May Need to Know About Device Properties
14.11
Validating Attributes
14.11.1
What You May Need to Know About the Validator Metadata
14.12
Using Background Threads
14.13
Working with Data Change Events
15
Configuring End Points Used in MAF Applications
15.1
Introduction to Configuring End Points
15.2
Defining the Configuration Service End Point
15.3
Creating the User Interface for the Configuration Service
15.4
About the URL Construction
15.5
Setting Up the Configuration Service on the Server
16
Using Web Services in a MAF Application
16.1
Introduction to Using Web Services in a MAF Application
16.2
Creating a Rest Service Adapter to Access Web Services
16.2.1
Accessing Input and Output Streams
16.2.2
Support for Non-Text Responses
16.3
Accessing Secure Web Services
16.3.1
How to Enable Access to Web Services
16.3.2
What Happens When You Enable Access to Web Services
16.3.3
What You May Need to Know About Accessing Web Services and Containerized MAF Applications
16.3.4
What You May Need to Know About Credential Injection
16.3.5
What You May Need to Know About Cookie Injection
16.4
Configuring the Browser Proxy Information
17
Working with REST Services
17.1
Introduction to Working with REST Services
17.1.1
REST Client Page
17.1.2
REST API Page
17.1.3
Data Types Page
17.1.4
Artifact Profiles Page
17.1.5
Using Authentication
17.1.6
How to Open the REST Service Editor
17.1.7
How to Create a REST Service Description
17.2
Using the REST Client
17.2.1
Specifying REST Service Connections
17.2.1.1
How to Enter a Simple URI
17.2.1.2
How to Compose an Address to a REST Service
17.2.1.3
How to Include Queries in the Request
17.2.1.4
How to Include Fragments in the Request
17.2.1.5
How to Use Connection Names from the Application
17.2.1.6
How to Create Persistent Connections
17.2.1.7
Overriding OWSM Policies
17.2.1.8
How to Use Authentication
17.2.2
Sending Requests to the REST Service
17.2.3
What Happens When You Send a Request
17.2.4
Generating Response Types
17.3
Modifying the Request Content
17.3.1
How to Use REST Headers in the Request
17.3.2
How to Use Query Parameters to Configure the Response.
17.3.3
How to Send Input
17.3.4
How to Specify Output
17.4
Importing and Modeling the REST API
17.4.1
Importing REST Client Information
17.4.2
What Happens When You Import REST Client Information
17.4.3
Manually Modeling the REST API
17.4.3.1
How to Create New Requests
17.4.3.2
How to Create New Paths
17.4.4
Working with Path Variable Types
17.4.4.1
How to Edit a Path Variable Type
17.4.4.2
Path Variable Types in Artifact Generation
17.4.4.3
Path Variable Types and the REST Client
17.5
Importing and Modeling Data Types
17.5.1
How to Create Data Types
17.5.2
How to Import Data Types
17.6
Testing Modeled Requests Against the REST Service
17.7
Creating REST Service Artifacts
17.7.1
How to Generate Java Artifacts for REST Services
17.7.2
What Happens When You Generate Java Artifacts
17.7.3
About the Generated Artifacts for REST Services
17.7.3.1
Generated Data Type Artifacts
17.7.3.2
Generated REST API Artifacts
17.7.3.3
Generated Service Artifacts
17.7.4
How to Use the Generated Artifacts in Your MAF Application
17.8
Using the Connections View
17.8.1
How to Open the Connections View
17.8.2
How to Edit a Connection
17.8.3
How to Reuse a Connection
17.8.4
How to Open connections.xml
18
Using the Local Database in MAF AMX
18.1
Introduction to the Local SQLite Database Usage
18.1.1
Differences Between SQLite and Other Relational Databases
18.1.1.1
Concurrency
18.1.1.2
SQL Support and Interpretation
18.1.1.3
Data Types
18.1.1.4
Foreign Keys
18.1.1.5
Database Transactions
18.1.1.6
Authentication
18.2
Using the Local SQLite Database
18.2.1
How to Connect to the Database
18.2.2
How to Use SQL Script to Initialize the Database
18.2.3
How to Initialize the Database on a Desktop
18.2.4
What You May Need to Know About Commit Handling
18.2.5
Limitations of the MAF's SQLite JDBC Driver
18.2.6
How to Use the VACUUM Command
18.2.7
How to Encrypt and Decrypt the Database
18.2.7.1
Encrypting the Database with Your Own Password
18.2.7.2
FMW Generic Topic
18.2.7.3
Encrypting the Database with a Password Generated by MAF
18.2.7.4
Decrypting the Database Encrypted with a Password Generated by MAF
19
Implementing Application Feature Content Using Remote URLs
19.1
Introduction to Remote URL Applications
19.2
Enabling Remote Applications Access Container Services
19.3
Whitelisting Remote URLs in Your MAF Application
19.3.1
How to Whitelist Remote URLs on the Android Platform
19.3.2
How to Whitelist Remote URLs on the iOS Platform
19.3.3
How to Whitelist Remote URLs on Universal Windows Platform
19.4
Enabling the Browser Navigation Bar on Remote URL Pages
19.4.1
How to Add the Navigation Bar to a Remote URL Application Feature
19.4.2
What Happens When You Enable the Browser Navigation Buttons for a Remote URL Application Feature
20
Enabling User Preferences
20.1
Creating User Preference Pages for a Mobile Application
20.1.1
How to Create Mobile Application-Level Preferences Pages
20.1.1.1
How to Create a New User Preference Page
20.1.1.2
What Happens When You Add a Preference Page
20.1.1.3
How to Create User Preference Lists
20.1.1.4
What Happens When You Create a Preference List
20.1.1.5
How to Create a Boolean Preference List
20.1.1.6
What Happens When You Add a Boolean Preference
20.1.1.7
How to Add a Text Preference
20.1.1.8
What Happens When You Define a Text Preference
20.1.2
What Happens When You Create an Application-Level Preference Page
20.2
Creating User Preference Pages for Application Features
20.3
Using EL Expressions to Retrieve Stored Values for User Preference Pages
20.3.1
What You May Need to Know About preferenceScope
20.3.2
Reading Preference Values in iOS Native Views
20.4
Platform-Dependent Display Differences
21
Setting Constraints on Application Features
21.1
Introduction to Constraints
21.1.1
Using Constraints to Show or Hide an Application Feature
21.1.2
Using Constraints to Deliver Specific Content Types
21.2
Defining Constraints for Application Features
21.2.1
How to Define the Constraints for an Application Feature
21.2.2
What Happens When You Define a Constraint
21.2.3
About the property Attribute
21.2.4
About User Constraints and Access Control
21.2.5
About Hardware-Related Constraints
21.2.6
Creating Dynamic Constraints on Application Features and Content
21.2.6.1
About Combining Static and EL-Defined Constraints
21.2.6.2
How to Define a Dynamic Constraint
22
Using AppXray for MAF Artifacts
22.1
Introduction to Using AppXray for MAF Artifacts
22.2
Using AppXray
22.2.1
How to Open AppXaminer
22.2.1.1
About AppXaminer
22.2.2
Using AppXaminer
22.3
Refactoring with AppXray
23
Enabling and Using Notifications
23.1
Introduction to Notifications
23.2
Enabling Push Notifications
23.2.1
What You May Need to Know About the Push Notification Payload
23.3
Managing Local Notifications
23.3.1
How to Manage Local Notifications Using Java
23.3.2
How to Manage Local Notifications Using JavaScript
23.3.3
How to Manage Local Notifications Using the DeviceFeatures Data Control
23.3.4
How to Handle Local Notifications
23.3.5
What You May Need to Know About Local Notification Options and the Application Behavior
23.4
Determining Application State When MAF Triggers a Notification Event
24
Caching Data in a MAF Application
24.1
Introduction to Data Caching in MAF Applications
24.2
Enable Data Caching in a MAF Application
24.3
Specifying Cached Resources and Cache Policies in the sync-config.xml File
24.4
Caching Policies Provided by MAF
24.5
Using Configuration Service End Points in the sync-config.xml File
24.6
Encrypting Cached Data in a MAF Application
24.7
Packaging the sync-config.xml File in a FAR
25
Displaying Error Messages in MAF Applications
25.1
Introduction to Error Handling in MAF Applications
25.2
Displaying Error Messages and Stopping Background Threads
25.2.1
How Applications Display Error Message for Background Thread Exceptions
25.3
Localizing Error Messages
26
Deploying MAF Applications
26.1
Introduction to Deployment of MAF Applications
26.2
Working with Deployment Configurations
26.2.1
About Deployment Configurations
26.2.2
Differences Between Run Configurations and Debug Configurations
26.2.3
How to Create a Deployment Configuration
26.2.4
What Happens When You Create a Deployment Configuration
26.3
Deploying an Android Application
26.3.1
How to Create an Android Deployment Configuration
26.3.1.1
Setting Advanced Options
26.3.1.2
Setting Deployment Options
26.3.1.3
Defining the Android Signing Options
26.3.1.4
What You May Need to Know About Credential Storage
26.3.1.5
How to Add a Custom Image to an Android Application
26.3.1.6
What Happens When OEPE Deploys Images for Android Applications
26.3.2
How to Deploy an Android Application to an Android Emulator
26.3.3
How to Deploy an Application Locally as an APK File
26.3.4
How to Deploy an Application to an Android-Powered Device
26.3.5
How to Publish an Android Application
26.3.6
What Happens in OEPE When You Create an .apk File
26.3.7
Selecting the Most Recently Used Deployment Configurations
26.3.8
Viewing the Device/Emulator Log in the Console
26.4
Deploying an iOS Application
26.4.1
How to Create an iOS Deployment Configuration
26.4.2
Setting the Device Signing Options
26.4.3
How to Restrict the Display to a Specific Device Orientation
26.4.4
What Happens When You Deselect Device Orientations
26.4.5
Using Images with iOS Applications
26.4.5.1
Overriding the Default Oracle Images in the Configuration
26.4.5.2
Replacing the Default Images
26.4.5.3
Add Custom Images
26.4.6
How to Deploy an iOS Application to an iOS Simulator
26.4.6.1
Using Quick Deploy
26.4.7
How to Deploy an Application to an iOS-Powered Device
26.4.8
What Happens When You Deploy an Application to an iOS Device
26.4.9
What You May Need to Know About Deploying an Application to an iOS-Powered Device
26.4.9.1
Creating iOS Development Certificates
26.4.9.2
Registering an Apple Device for Testing and Debugging
26.4.9.3
Registering an Application ID
26.4.10
How to Distribute an iOS Application to the App Store
26.5
Deploying a MAF Application to the Universal Windows Platform
26.5.1
How to Create a Deployment Configuration for Universal Windows Platform
26.5.2
Defining the Windows Platform Signing Options
26.5.3
How to Deploy a MAF Application to the Universal Windows Platform
26.5.4
What Happens When You Deploy a MAF Application to the Universal Windows Platform
26.5.5
How to Deploy an Application Locally as a Package
26.5.6
What Happens When You Deploy Locally as a Package
26.6
Deploying Feature Archive Files (FARs)
26.6.1
How to Create a Mobile Feature Archive File
26.6.2
How to Deploy the Feature Archive
26.6.3
What Happens When You Create a Feature Archive File
26.7
Creating a Mobile Application Archive File
26.7.1
How to Create a Mobile Application Archive File
26.8
Creating Unsigned Deployment Packages
26.8.1
How to Create an Unsigned Application
26.8.2
What Happens When You Import a MAF Application Archive File
26.9
Deploying with Oracle Mobile Security Suite
26.9.1
What Happens When You Containerize Your App with OMSS
27
Understanding Secure Mobile Development Practices
27.1
Weak Server-Side Controls
27.2
Insecure Data Storage on the Device
27.2.1
Encrypting the SQLite Database
27.2.2
Securing the Device's Local Data Stores
27.2.3
About Security and Application Logs
27.3
Insufficient Transport Layer Protection
27.4
Side-Channel Data Leakage
27.5
Poor Authorization and Authentication
27.6
Broken Cryptography
27.7
Client-Side Injection From Cross-Site Scripting
27.7.1
Protecting MAF Applications from Injection Attacks Using Device Access Permissions
27.7.2
About Injection Attack Risks from Custom HTML Components
27.7.3
About SQL Injections and XML Injections
27.8
Security Decisions From Untrusted Inputs
27.9
Improper Session Handling
27.10
Lack of Binary Protections Resulting in Sensitive Information Disclosure
28
Securing MAF Applications
28.1
Introduction to MAF Security
28.2
About the User Login Process
28.3
Overview of the Authentication Process for Mobile Applications
28.4
Overview of the Authentication Process for Containerized MAF Applications
28.5
Configuring MAF Connections
28.5.1
How to Create a MAF Login Connection
28.5.2
How to Create a Multi-Tenant Aware MAF Login Connection
28.5.3
How to Configure Basic Authentication
28.5.4
How to Configure OAuth Authentication
28.5.5
How to Configure Single Sign-On in a MAF Application
28.5.6
How to Update Connection Attributes of a Named Connection at Runtime
28.5.7
How to Store Login Credentials
28.5.8
What Happens When You Create a Connection for a MAF Application
28.5.9
What Happens When You Create a Multi-Tenant Aware Connection
28.5.10
What You May Need to Know About the Login Connection Configuration
28.5.11
What You May Need to Know About Login Connections and Containerized MAF Applications
28.5.12
What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
28.5.13
What You May Need to Know About Migrating a MAF Application and Authentication Modes
28.5.14
What You May Need to Know About Custom Headers
28.5.15
What Happens at Runtime: When MAF Calls a REST Web Service
28.5.16
What You May Need to Know About Injecting Basic Authentication Headers
28.5.17
What You May Need to Know about Web Service Security
28.5.18
How to Configure Access Control
28.5.19
What You May Need to Know About the Access Control Service
28.5.20
How to Alter the Application Loading Sequence
28.5.21
How to Configure Login Credentials Programmatically Prior to Authentication
28.6
Configuring Security for Mobile Applications
28.6.1
How to Enable Application Features to Require Authentication
28.6.2
How to Designate the Login Page
28.6.3
How to Create a Custom Login HTML Page
28.6.4
What You May Need to Know About Login Pages
28.6.4.1
The Default Login Page
28.6.4.2
The Custom Login Page
28.6.5
What You May Need to Know About Login Page Elements
28.6.6
What Happens in OEPE When You Configure Security for Application Features
28.7
Allowing Access to Device Capabilities
28.8
Enabling Users to Log Out from Application Features
28.9
Using MAF Authentication APIs
28.10
Creating Certificates to Access Servers That Use Self-Signed Certificates for SSL
28.11
Registering SSL Certificate File Extensions in a MAF Application
29
Reusing MAF Application Content with a Feature Archive File
29.1
Introduction to Feature Archive Files
29.2
Using FAR Content in a MAF Application
29.3
What Happens When You Add a FAR as a Library
29.4
What You May Need to Know About Enabling the Reuse of Feature Archive Resources
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
31
Integrating MAF Applications with EMM Solutions
31.1
Introduction to the AppConfig Community
31.2
About the MAF Approach to Enterprise Mobile Applications
31.3
Access Control for MAF Applications with EMM Solutions
31.4
How to Manage MAF Application Configurations with EMM Solutions
31.5
Managing MAF Applications with the AirWatch EMM Solution
31.6
Managing MAF Applications with the MobileIron EMM Solution
31.7
Managing MAF Applications with the Blackberry EMM Solution
31.8
Configuring Properties in MAF Applications for Use by EMM Solutions
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.