Table of Contents
- Title and Copyright Information
- Preface
-
Part I The Basics
-
1
Get to Know Oracle Mobile Cloud Service
- Jump in with Mobile Backends
- Design Custom APIs
- Implement APIs
- Get the Data
- Use Platform APIs
- Call APIs from Your App Code
- Set Up and Manage Your Mobile App Users
- Deploy Code between MCS Environments
- Monitor and Administer the Mobile Infrastructure
- Analyze Your Mobile Projects
- What About Security?
- Job Descriptions and Learning Paths
-
2
Set Up the Service
- Where Do I Sign Up?
- What Do I Need To Do?
- Activate the Service
- Create Mobile Environment Service Instances
- Assign MCS Team Member Roles
- Set Up Mobile Users, Realms and Roles
- Get on Board
-
1
Get to Know Oracle Mobile Cloud Service
-
Part II Setting up Mobile Apps
-
3
Mobile Backends
- What Is a Mobile Backend and How Can I Use It?
- What's the Mobile Backend Development Process?
-
Creating and Populating Mobile Backends
- Creating a Mobile Backend
- Mobile Backend Authentication and Connection Info
- Environments and Mobile Backends
- Realms and Mobile Backends
- Getting Test Users for a Mobile Backend
- Associating APIs with a Mobile Backend
- Associating Storage Collections with a Mobile Backend
- Clients and Mobile Backends
- What Can I Change in a Mobile Backend?
- Video: Mobile Backend Design Considerations
- The SDKs
- Connecting Your App to a Mobile Backend
- 4 Client Management
-
5
Authentication in MCS
- OAuth Consumer Authentication in MCS
- HTTP Basic Authentication in MCS
-
Enterprise Single Sign-On in MCS
-
Third-Party SAML and JWT Tokens
- SAML Tokens and Virtual Users
-
JWT Tokens and Virtual Users
- Registering a JWT Token Issuer in MCS
- Minimal IdP Configuration
- IdP Configuration with Audience
- IdP Configuration with Audience and Username Attribute
- Associating Roles with a JWT Token
- Converting a JSON Object to One Line
- JWT Configuration Reference
- Obtaining a JWT Token Using an Embedded Browser
- Obtaining a JWT Token Using a System Browser
- Using a JWT Token to Authenticate with MCS
- Coding the JWT Token Exchange Manually
- Mapping Users from a Third-Party IdP to Oracle Cloud Users
- Getting a Single Sign-On OAuth Token through a Browser
- Enabling Browser-Based SSO through MCS
- Testing APIs in a Mobile Backend with SSO Login
- Token Expiration for SSO Login
-
Third-Party SAML and JWT Tokens
- Facebook Login in MCS
- Authenticating in Direct REST Calls
- How OAuth Works in MCS
- Securing Cross-Site Requests to MCS APIs
-
6
Android Applications
- Getting the SDK for Android
- Contents of the Android SDK
- Adding the SDK to an Android App
- Upgrading an Android App from SDK 17.x and Before
- Configuring SDK Properties for Android
- Configuring Your Android Manifest File
- Loading a Mobile Backend's Configuration into an Android App
- Authenticating and Logging In Using the SDK for Android
- Calling Platform APIs Using the SDK for Android
- Calling Custom APIs Using the SDK for Android
- Video: Configuring an Existing Android App to Work with Mobile Cloud
-
7
iOS Applications
- Getting the SDK for iOS
- Contents of the iOS SDK
- Prerequisites for Developing iOS Apps
- Adding the SDK to an iOS App
- Configuring SDK Properties for iOS
- Loading a Mobile Backend's Configuration into an iOS App
- Authenticating and Logging In Using the SDK for iOS
- Calling Platform APIs Using the SDK for iOS
- Calling Custom APIs Using the SDK for iOS
- Video: Configuring an Existing iOS App to Work with Mobile Cloud
-
8
Cordova Applications
- Getting the SDK for Cordova
- Contents of the Cordova SDK Bundle
- Adding the SDK to a Cordova App
- Configuring SDK Properties for Cordova
- Loading a Mobile Backend's Configuration in a Cordova App
- Authenticating and Logging In Using the SDK for Cordova
- Setting Up a Cordova App for FCM or GCM Notifications
- Securing Browser-Based Apps Against Cross-Site Request Forgery Attacks
- Calling Platform APIs Using the SDK for Cordova
- Calling Custom APIs Using the SDK for Cordova
-
9
JavaScript Applications
- Getting the SDK for JavaScript
- Contents of the JavaScript SDK Bundle
- Adding the SDK to a JavaScript App
- Configuring SDK Properties for JavaScript
- Loading a Mobile Backend's Configuration into a JavaScript App
- Authenticating and Logging In Using the SDK for JavaScript
- Securing Browser-Based Apps Against Cross-Site Request Forgery Attacks
- Calling Platform APIs Using the SDK for JavaScript
- Calling Custom APIs Using the SDK for JavaScript
-
10
Xamarin Android Applications
- Getting the SDK for Xamarin Android
- Adding the SDK to a Xamarin Android Project
- Configuring SDK Properties for Xamarin Android
- Configuring Your AndroidManifest.xml File
- Loading a Mobile Backend's Configuration into a Xamarin Android App
- Authenticating and Logging In Using the SDK for Xamarin Android
- Calling Platform APIs Using the SDK for Xamarin Android
- Calling Custom APIs Using the SDK for Xamarin Android
-
11
Xamarin iOS Applications
- Getting the SDK for Xamarin iOS
- Adding the SDK to a Xamarin iOS Project
- Configuring SDK Properties for Xamarin iOS
- Loading a Mobile Backend's Configuration into a Xamarin iOS App
- Authenticating and Logging In Using the SDK for Xamarin iOS
- Calling Platform APIs Using the SDK for Xamarin iOS
- Calling Custom APIs Using the SDK for Xamarin iOS
-
3
Mobile Backends
-
Part III Platform APIs
- 12 Mobile User Management
- 13 Location
-
14
Storage
- What is the Storage API?
- Working with Collections
- Calling the Storage API from Your App
- Testing Runtime Operations Using the Endpoints Page
-
15
Data Offline and Sync
- Building Apps that Work Offline Using Sync Express
-
Building Apps that Work Offline Using the Synchronization Library
- What Can I Do with the Synchronization Library?
- Synchronization Library Process Flow
- Video: Overview of the Data Offline & Synchronization API
- Android Synchronization Library
- iOS Synchronization Library
- Making Custom APIs Synchronizable
-
Synchronization Policies
- Video: Introduction to the Data Offline & Sync Policies
- Synchronization Policy Options
- Video: Deep-Dive into the Data Offline & Sync Policies
- Synchronization Policy Levels and Precedence
- Defining Synchronization Policies Using a Configuration File
- Defining Synchronization Policies and Cache Settings in a Response Header
- Tracking Cache Hits with the Synchronization Library
- How Synchronization Works with the Storage APIs
-
16
Notifications
- What Can I Do with Notifications?
- How Are Notifications Sent and Received?
- Setting Up a Mobile App for Notifications
- Sending Notifications to and from Your App
- Troubleshooting Notifications
-
17
Analytics
- What Can I Do With Analytics?
- How Does MCS Create Analytics Reports?
- Enabling Your Mobile Apps to Report Event Data
- Integrating Analytics into a Mobile App Using the Mobile Client SDK
- Understanding Different Types of Analytics Reports
- Accessing the Analytics Reports
- API Calls Reports
- Events Report
- User and Session Reports
- Improving User Retention with Funnel Analysis
- Creating Custom Analytics Reports
- Tracking Sessions and Logging Events for Mobile Apps
- Exporting Event Data
- Purging Analytics Data
- Troubleshooting Analytics Reports
- 18 Database
- 19 App Policies
-
Part IV Custom APIs
- 20 Creating APIs Fast with the Express API Designer
-
21
Custom API Design
- API Design Process
- The API Designer
- Generating Custom APIs for Connectors
- Spec Out a Custom API
-
Creating a Complete Custom API
- Setting Up Your API
- Defining Endpoints
- Adding Methods to Your Resources
- Defining a Request for the Method
- Defining a Response for the Method
- Testing API Endpoints Using Mock Data
- Providing a Schema
- Security in Custom APIs
- Testing Your Custom API
- Creating Resource Types
- Creating Resource Traits
- Providing API Documentation
- Getting Diagnostic Information
- API Design Considerations
- Editing a Custom API
- Video: End-to-End Custom API Demo
- Troubleshooting Custom APIs
-
22
Implementing Custom APIs
- What Can I Do with Custom Code?
- How Does Custom Code Work?
- Setting Up Tooling for Custom Code
- Steps to Implement a Custom API
- Downloading a JavaScript Scaffold for a Custom API
- Writing Custom Code
- Implementing Synchronization-Compatible APIs
- Calling Web Services and APIs from Custom Code
- Packaging Custom Code into a Module
- Uploading the Custom Code Module
- Managing Custom Code in Git
- Testing and Debugging Custom Code
- Troubleshooting Custom API Implementations
- What Happens When a Custom API Is Called?
-
23
Calling APIs from Custom Code
- How to Send Requests to MCS APIs
- Accessing Mobile Backend Information from Custom Code
-
Calling Platform APIs from Custom Code
- Accessing the Analytics API from Custom Code
- Accessing the App Policies API from Custom Code
- Accessing the Database Access API from Custom Code
- Accessing the Devices API from Custom Code
- Accessing the Location API from Custom Code
-
Accessing the Location Management API from Custom Code
- Location Management Context Argument
- location.assets.register(assets, context, httpOptions)
- location.assets.remove(id, context, httpOptions)
- location.assets.update(id, asset, context, httpOptions)
- location.devices.register(devices, context, httpOptions)
- location.devices.remove(id, context, httpOptions)
- location.devices.update(id, device, context, httpOptions)
- location.places.register(places, context, httpOptions)
- location.places.remove(id, context, httpOptions)
- location.places.removeCascade(id, context, httpOptions)
- location.places.update(id, place, context, httpOptions)
- Accessing the Notifications API from Custom Code
-
Accessing the Storage API from Custom Code
- storage.doesCollectionExist(collectionId, options, httpOptions)
- storage.doesExist(collectionId, objectId, options, httpOptions)
- storage.getAll(collectionId, options, httpOptions)
- storage.getById(collectionId, objectId, options, httpOptions)
- storage.getCollection(collectionId, options, httpOptions)
- storage.getCollections(options, httpOptions)
- storage.remove(collectionId, objectId, options, httpOptions)
- storage.store(collectionId, object, options, httpOptions)
- storage.storeById(collectionId, objectId, object, options, httpOptions)
- Accessing the Mobile Users API from Custom Code
- Calling Custom APIs from Custom Code
- Calling Connector APIs from Custom Code
- Specifying the API Version in Calls to Custom and Connector APIs
- Using Generic REST Methods to Access APIs
- Learning About Platform, Custom, and Connector APIs
-
Part V Connector APIs
-
24
REST Connector APIs
- How REST Connector APIs Work
- Why Use Connectors Instead of Direct Calls to External Resources?
- Creating a REST Connector API
- Security and REST Connector APIs
- Security Policy Types for REST Connector APIs
- CSF Keys and Web Service Certificates
- Query and Header Parameters
- Editing a REST Connector API
- Using Your Connector API in an App
- Troubleshooting REST Connector APIs
-
25
SOAP Connector APIs
- How SOAP Connector APIs Work
- Why Use SOAP Connectors Instead of Direct Calls to External Resources?
- Creating a SOAP Connector API
- SOAP Connector API Design Tips
- How Does XML Get Translated into JSON?
- XML - JSON Mapping Conventions
- Using XML Instead of JSON
- Security Policy Types for SOAP Connector APIs
- CSF Keys and Web Service Certificates
- Editing a SOAP Connector API
- Using Your Connector API in an App
- Troubleshooting SOAP Connector APIs
-
26
ICS Connector APIs
- How ICS Connector APIs Work
- ICS Connector API Flow
-
How Do I Create an ICS Connector API?
- Setting the Basic Information for Your ICS Connector API
- Connecting to an Integration Cloud Service Instance
- Selecting or Creating an ICS Instance Connection
- Selecting an Active Integration
- Editing the ICS Connector API
- Setting Runtime Security for the ICS Connector API
- Creating a New CSF Key
- Testing the ICS Connector API
- Security and ICS Connector APIs
- CSF Keys
- Using Your Connector API in an App
- Troubleshooting ICS Connector APIs
-
27
Fusion Applications Connector APIs
- How Fusion Applications Connector APIs Work
- Fusion Applications Connector API Flow
-
How Do I Create a Fusion Applications Connector API?
- Setting the Basic Information for Your Fusion Applications Connector API
- Connecting to a Fusion Applications Instance
- Creating a Fusion Applications Instance Connection
- Selecting Fusion Applications Resources
- Setting Resource Attributes
- Editing the Fusion Applications Connector API
- Setting Runtime Security for the Fusion Applications Connector API
- Testing the Fusion Applications Connector API
- Security Policy Types for Fusion Applications Connector APIs
- CSF Keys and Web Service Certificates
- Using Your Fusion Application Connector API in an App
- Troubleshooting Fusion Applications Connector APIs
-
24
REST Connector APIs
-
Part VI Deployment and Lifecycle
- 28 MCS Environments
- 29 Diagnostics
- 30 Lifecycle
- 31 Lifecycle Scenarios
-
32
Managing an Artifact’s Lifecycle
- Realm Lifecycle
- Client Lifecycle
- Mobile Backend Lifecycle
- API Lifecycle
- API Implementation Lifecycle
- Connector Lifecycle
- Collection Lifecycle
- 33 Testing APIs and Mobile Backends
- 34 Packages
- Reference
- Glossary