Home
/
Middleware
/
Oracle Mobile Application Framework
1/39
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for Release 2.2.0
1
Introduction to Oracle Mobile Application Framework
1.1
Introduction to 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
Sample Applications
2
Getting Started with MAF Application Development
2.1
Introduction to Declarative Development for MAF Applications
2.2
Creating a MAF Application
2.2.1
How to Create a MAF Application
2.2.2
What Happens When You Create a MAF Application
2.3
Defining Application Features for a MAF Application
2.3.1
How to Define an Application Feature
2.4
Adding Content to an Application Feature
2.5
Adding Application Features to a MAF Application
2.5.1
How to Add an Application Feature to a MAF Application
2.5.2
What You May Need to Know About Feature Reference IDs and Feature IDs
2.6
Creating MAF AMX Pages and MAF Task Flows
2.6.1
How to Create a MAF AMX Page
2.6.2
How to Create MAF Task Flows
2.6.3
What Happens When You Create MAF AMX Pages and Task Flows
2.7
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
Setting Display Properties for an Application Feature
4
Configuring the Application Navigation
4.1
Introduction to the Display Behavior of MAF Applications
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 a MAF Application
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.2.1
How to Set the 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
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 Happens When You Apply a Skin to an Application Feature
7.9
What You May Need to Know About Skinning
7.10
Adding a New Style Sheet to a Skin
7.11
Enabling End Users Change an Application's Skin at Runtime
7.12
What Happens at Runtime: How End Users Change an Application's Skin
8
Reusing 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 as a Library
8.4
What Happens When You Add a FAR as a View Controller Project
8.5
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 Additional 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
Customizing MAF Application Artifacts with MDS
10.1
Introduction to Applying MDS Customizations to MAF Files
10.2
Customizing MAF Applications with MDS
10.3
Configuring Customization Layers
10.3.1
How to Configure the Layer Values Globally
10.3.2
How to Configure the Application-Level Layer Values
10.4
Creating Customization Classes
10.5
Consuming Customization Classes
10.6
Understanding a Customization Developer Role
10.6.1
How to Switch to the Customization Developer Role in JDeveloper
10.6.2
What You May Need to Know About the Tip Layer
10.7
What You May Need to Know About Web Service Data Controls and Customized Application Deployments
10.8
Enabling Customizations in Resource Bundles
10.8.1
How to Create an Application Resource Bundle
10.8.2
How to Create a Project Resource Bundle
10.9
Upgrading a MAF Application with Customizations
10.9.1
What Happens in JDeveloper When You Upgrade Applications
10.9.2
What You May Need to Know About Upgrading FARs
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 ViewController-task-flow.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.6
How to Define the Data Control Context Depth for Task Flows
12.2.7
How to Define Control Flows
12.2.8
What You May Need to Know About MAF Support for Back Navigation
12.2.9
How to Enable Page Navigation by Dragging
12.2.10
How to Specify Action Outcomes Using UI Components
12.2.11
How to Create and Reference Managed Beans
12.2.12
How to Specify the Page Transition Style
12.2.13
What You May Need to Know About Bounded and Unbounded Task Flows
12.3
Creating Views
12.3.1
How to Work with MAF AMX Pages
12.3.2
How to Add UI Components to a MAF AMX Page
12.3.3
How to Add Data Controls to a MAF AMX Page
12.3.4
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.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.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.6
How to Use Links
13.3.7
How to Display Images
13.3.8
How to Use the Checkbox Component
13.3.9
How to Use the Select Many Checkbox Component
13.3.10
How to Use the Choice Component
13.3.11
How to Use the Select Many Choice Component
13.3.12
How to Use the Boolean Switch Component
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.16
How to Use a Carousel Component
13.3.17
How to Use the Film Strip Component
13.3.18
How to Use Verbatim Component
13.3.19
How to Use an 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.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.27
How to Convert Numeric Values
13.3.28
How to Enable Drag Navigation
13.3.29
How to Use the Loading Indicator
13.4
Enabling Gestures
13.5
Providing Data Visualization
13.5.1
How to Create an Area Chart
13.5.2
How to Create a Bar Chart
13.5.3
How to Create a Bubble Chart
13.5.4
How to Create a Combo Chart
13.5.5
How to Create a Line Chart
13.5.6
How to Create a Pie Chart
13.5.7
How to Create a Scatter Chart
13.5.8
How to Create a Spark Chart
13.5.9
How to Create a Funnel Chart
13.5.10
How to Create a Stock Chart
13.5.11
How to Style Chart Components
13.5.12
How to Use Events with Chart Components
13.5.13
What You May Need to Know About Customization of Chart Tooltips
13.5.14
How to Enable Sorting of Charts with Categorical Axis
13.5.15
How to Define the Initial Zooming of Charts
13.5.16
How to Define Stacking of Specific Chart Series
13.5.17
How to Enable Split Dual-Y Axis in Charts
13.5.18
How to Create a LED Gauge
13.5.19
How to Create a Status Meter Gauge
13.5.20
How to Create a Dial Gauge
13.5.21
How to Create a Rating Gauge
13.5.22
How to Define Child Elements for Chart and Gauge Components
13.5.23
How to Create a Geographic Map Component
13.5.24
How to Create a Thematic Map Component
13.5.25
How to Use Events with Map Components
13.5.26
How to Create a Treemap Component
13.5.27
How to Create a Sunburst Component
13.5.28
How to Create a Timeline Component
13.5.29
How to Create an NBox Component
13.5.30
How to Define Child Elements for Map Components, Sunburst, Treemap, Timeline, and NBox
13.5.31
How to Create Databound Data Visualization Components
13.5.32
How to Create Data Visualization Components Based on Static Data
13.5.33
How to Enable Interactivity in Chart Components
13.5.34
How to Create Polar Charts
13.6
Styling UI Components
13.6.1
How to Use Component Attributes to Define Style
13.6.2
What You May Need to Know About Skinning
13.6.3
What You May Need to Know About Using CSS ID Selectors for Skinning
13.6.4
How to Style Data Visualization Components
13.7
Localizing UI 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.3
What You May Need to Know About MAF Binding Properties
14.3.4
How to Enable Retention of Data Provider State Across Iterators
14.3.5
How to Reference Binding Containers
14.3.6
About the Categories in the Expression Builder
14.3.7
About EL Events
14.3.8
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 JDeveloper
14.4.2
What Happens When You Use JDeveloper 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.3
Data Control Built-in Operations
14.6
Creating Databound UI Components from the Data Controls Panel
14.6.1
How to Use the Data Controls Panel
14.6.2
What Happens When You Use the Data Controls Panel
14.7
What Happens at Runtime: How the Binding Context Works
14.8
Configuring Data Controls
14.8.1
How to Edit a Data Control
14.8.2
What Happens When You Edit a Data Control
14.8.3
What You May Need to Know About MDS Customization of Data Controls
14.9
Working with Attributes
14.9.1
How to Designate an Attribute as Primary Key
14.9.2
How to Define a Static Default Value for an Attribute
14.9.3
How to Set UI Hints on Attributes
14.9.4
What Happens When You Set UI Hints on Attributes
14.9.5
How to Access UI Hints Using EL Expressions
14.10
Creating and Using Bean Data Controls
14.10.1
What You May Need to Know About Serialization of Bean Class Variables
14.11
Using the DeviceFeatures Data Control
14.11.1
How to Use the getPicture Method to Enable Taking Pictures
14.11.2
How to Use the SendSMS Method to Enable Text Messaging
14.11.3
How to Use the sendEmail Method to Enable Email
14.11.4
How to Use the createContact Method to Enable Creating Contacts
14.11.5
How to Use the findContacts Method to Enable Finding Contacts
14.11.6
How to Use the updateContact Method to Enable Updating Contacts
14.11.7
How to Use the removeContact Method to Enable Removing Contacts
14.11.8
How to Use the startLocationMonitor Method to Enable Geolocation
14.11.9
How to Use the displayFile Method to Enable Displaying Files
14.11.10
How to Use the addLocalNotification and cancelLocalNotification Methods to Manage Local Notifications
14.11.11
What You May Need to Know About Device Properties
14.12
Validating Attributes
14.12.1
How to Add Validation Rules
14.12.2
What You May Need to Know About the Validator Metadata
14.13
Using Background Threads
14.14
About Data Change Events
15
Using Web Services in MAF AMX
15.1
Introduction to Using Web Services in MAF Applications
15.2
Creating a Web Service Data Control Using REST
15.3
Creating a Web Service Data Control Using SOAP
15.3.1
How to Customize SOAP Headers
15.3.2
How to Access Objects Returned by SOAP Calls
15.4
What You May Need to Know About Web Service Data Controls
15.5
Creating a New Web Service Connection
15.6
Adjusting the End Point for a Web Service Data Control
15.7
Accessing Secure Web Services
15.7.1
How to Enable Access to Web Services
15.7.2
What Happens When You Enable Access to Web Services
15.7.3
What You May Need to Know About Accessing Web Services and Containerized MAF Applications
15.7.4
What You May Need to Know About Credential Injection
15.7.5
What You May Need to Know About Cookie Injection
15.7.6
Limitations of Secure WSDL File Usage
15.8
Invoking Web Services From Java
15.8.1
How to Add and Delete Rows on Web Services Objects
15.8.2
How to Use REST Web Services Adapter
15.8.3
How to Enable Strict Validation of REST Responses
15.8.4
How to Process JSON Responses
15.8.5
What You May Need to Know About Invoking Data Control Operations
15.9
Understanding Limitations Related to MAF Support for JavaScript
15.10
Configuring the Browser Proxy Information
16
Configuring End Points Used in MAF Applications
16.1
Introduction to Configuring End Points in MAF Applications
16.2
Defining the Configuration Service End Point
16.3
Creating the User Interface for the Configuration Service
16.4
About the URL Construction
16.5
Setting Up the Configuration Service on the Server
16.6
Migrating the Configuration Service from ADF Mobile
17
Using the Local Database in MAF AMX
17.1
Introduction to the Local SQLite Database Usage
17.1.1
Differences Between SQLite and Other Relational Databases
17.2
Using the Local SQLite Database
17.2.1
How to Connect to the Database
17.2.2
How to Use SQL Script to Initialize the Database
17.2.3
How to Initialize the Database on a Desktop
17.2.4
What You May Need to Know About Commit Handling
17.2.5
Limitations of the MAF's SQLite JDBC Driver
17.2.6
How to Use the VACUUM Command
17.2.7
How to Encrypt and Decrypt the Database
18
Customizing MAF AMX Application Feature Artifacts
18.1
Introduction to Customizing MAF AMX Pages and Artifacts
18.2
Customizing MAF AMX Pages and Artifacts
19
Creating Custom MAF AMX UI Components
19.1
Introduction to Creating Custom UI Components
19.2
Using MAF APIs to Create Custom Components
19.2.1
How to Use Static APIs
19.2.2
How to Use AmxEvent Classes
19.2.3
How to Use the TypeHandler
19.2.4
How to Use the AmxNode
19.2.5
How to Use the AmxTag
19.2.6
How to Use the VisitContext
19.2.7
How to Use the AmxAttributeChange
19.2.8
How to Use the AmxDescendentChanges
19.2.9
How to Use the AmxCollectionChange
19.2.10
How to Use the AmxNodeChangeResult
19.2.11
How to Use the AmxNodeStates
19.2.12
How to Use the AmxNodeUpdateArguments
19.3
Creating Custom Components
20
Implementing Application Feature Content Using Remote URLs
20.1
Overview of Remote URL Applications
20.1.1
Enabling Remote Applications to Access Device Services through Whitelists
20.1.2
Enabling Remote Applications to Access Container Services
20.1.3
How Whitelisted Domains Access Device Capabilities
20.1.4
How to Create a Whitelist (or Restrict a Domain)
20.1.5
What Happens When You Add Domains to a Whitelist
20.1.6
What You May Need to Know About Remote URLs
20.2
Creating Whitelists for Application Components
20.3
Enabling the Browser Navigation Bar on Remote URL Pages
20.3.1
How to Add the Navigation Bar to a Remote URL Application Feature
20.3.2
What Happens When You Enable the Browser Navigation Buttons for a Remote URL Application Feature
20.4
Invoking MAF Applications Using a Custom URL Scheme
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.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
23
Accessing Data on Oracle Cloud
23.1
Enabling MAF Applications to Access Data Hosted on Oracle Cloud
23.1.1
How to Authenticate Against Oracle Cloud
23.1.2
How to Create a Web Service Data Control to Access Oracle Java Cloud
23.1.3
What Happens When You Deploy a MAF Application that Accesses Oracle Java Cloud Service
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.1.1
MAF Deployment Options
27.2
Working with Deployment Profiles
27.2.1
About Automatically Generated Deployment Profiles
27.2.2
How to Create a Deployment Profile
27.2.3
What Happens When You Create a Deployment Profile
27.3
Deploying an Android Application
27.3.1
How to Create an Android Deployment Profile
27.3.2
How to Deploy an Android Application to an Android Emulator
27.3.3
How to Deploy an Application to an Android-Powered Device
27.3.4
How to Publish an Android Application
27.3.5
What Happens in JDeveloper When You Create an .apk File
27.3.6
Selecting the Most Recently Used Deployment Profiles
27.3.7
What You May Need to Know About Using the Android Debug Bridge
27.4
Deploying an iOS Application
27.4.1
How to Create an iOS Deployment Profile
27.4.2
How to Deploy an iOS Application to an iOS Simulator
27.4.3
How to Deploy an Application to an iOS-Powered Device
27.4.4
What Happens When You Deploy an Application to an iOS Device
27.4.5
What You May Need to Know About Deploying an Application to an iOS-Powered Device
27.4.6
How to Distribute an iOS Application to the App Store
27.5
Deploying Feature Archive Files (FARs)
27.5.1
How to Create a Deployment Profile for a Feature Archive
27.5.2
How to Deploy the Feature Archive Deployment Profile
27.5.3
What Happens When You Deploy a Feature Archive File Deployment Profile
27.6
Creating a Mobile Application Archive File
27.6.1
How to Create a Mobile Application Archive File
27.7
Creating Unsigned Deployment Packages
27.7.1
How to Create an Unsigned Application
27.7.2
What Happens When You Import a MAF Application Archive File
27.8
Deploying MAF Applications from the Command Line
27.8.1
Using OJDeploy to Deploy Mobile Applications
27.9
Deploying with Oracle Mobile Security Suite
27.9.1
What Happens When You Containerize Your Application 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 Applications Against XSS Through Whitelists
28.7.2
Protecting MAF Applications from Injection Attacks Using Device Access Permissions
28.7.3
About Injection Attack Risks from Custom HTML Components
28.7.4
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 MAF 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 Authentication Using Oracle Mobile and Social Identity Management
29.5.5
How to Configure OAuth Authentication
29.5.6
How to Configure Web SSO Authentication
29.5.7
How to Configure a Placeholder Connection for MAF Application Login
29.5.8
How to Update Connection Attributes of a Named Connection at Runtime
29.5.9
How to Store Login Credentials
29.5.10
What Happens When You Create a Connection for a MAF Application
29.5.11
What Happens When You Create a Multi-Tenant Aware Connection
29.5.12
What You May Need to Know About the Login Connection Configuration
29.5.13
What You May Need to Know About Login Connections and Containerized MAF Applications
29.5.14
What You May Need to Know About Multiple Identities for Local and Hybrid Login Connections
29.5.15
What You May Need to Know About Migrating a MAF Application and Authentication Modes
29.5.16
What You May Need to Know About Custom Headers
29.5.17
What Happens at Runtime: When MAF Calls a REST Web Service
29.5.18
What You May Need to Know About Injecting Basic Authentication Headers
29.5.19
What You May Need to Know About Web Service Security
29.5.20
How to Configure Access Control
29.5.21
What You May Need to Know About the Access Control Service
29.5.22
How to Alter the Application Loading Sequence
29.5.23
How to Configure Login Credentials Programmatically Prior to Authentication
29.6
Configuring Security for MAF 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 or Custom KBA Page
29.6.4
What You May Need to Know About Login Pages
29.6.5
What You May Need to Know About Login Page Elements
29.6.6
What Happens in JDeveloper 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
Supporting SSL
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
Debugging MAF Applications
30.3.1
What You May Need to Know About the Debugging Configuration
30.3.2
How to Debug on the iOS Platform
30.3.3
How to Debug on the Android Platform
30.3.4
How to Debug the MAF AMX Content
30.3.5
How to Enable Debugging of Java Code and JavaScript
30.4
Using and Configuring Logging
30.4.1
How to Configure Logging Using the Properties File
30.4.2
How to Use JavaScript Logging
30.4.3
How to Use Embedded Logging
30.4.4
How to Use Xcode for Debugging and Logging on the iOS Platform
30.4.5
How to Access the Application Log
30.4.6
How to Disable Logging
A
Troubleshooting MAF Applications
A.1
Problems with Input Components on iOS Simulators
A.2
The Geographic Map Component Limits Number of Address Points
A.3
Code Signing Issues Prevent Deployment
A.4
The credentials Attribute Causes Deployment to Fail
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 Application Controller Project-Level Resources
C.3
About the View Controller Project Resources
C.4
About the MAF Application Configuration File
C.5
About the MAF Application Feature Configuration File
D
Converting Preferences for Deployment
D.1
Naming Patterns for Preferences
D.2
Converting Preferences for Android
D.2.1
maf_references.xml
D.2.2
maf_arrays.xml
D.2.3
maf_strings.xml
D.3
Converting Preferences for iOS
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.