scanNFC Procedure

The Oracle Fusion Field Service mobile apps support NFC scanning in plugins.

Overview

This feature lets mobile workers:

  • Scan NFC tags using the device’s NFC reader
  • Identify assets quickly
  • Open URLs directly from scanned tags
  • Read encoded data in workflows

This reduces manual data entry and helps avoid errors.

Key capabilities

  • Start an NFC scan from a plugin
  • Detect one or more NFC tags
  • Read tag details such as:
    • Tag ID
    • Tag type
    • NDEF records (URL, Text)
  • Works on both iOS and Android installed apps

Platform Support and Prerequisites for NFC Scanning

Before using NFC scanning:

  • Use an NFC-capable device with NFC enabled
  • Install the Oracle Fusion Field Service mobile app
  • Grant NFC permissions when prompted
  • Keep the app in the foreground during scanning

Notes

Behavior and permission prompts vary by OS and device model.

Ensure the device screen is on and the app remains in the foreground during scanning.

Example Scenarios

  • Asset identification: Scan a tag with a text value (for example, oracle:asset:12345) to look up an asset
  • Quick links: Scan a tag with a URL and open it in the app’s web view after confirmation

Initiate NFC Scanning from Plugins (scanNfc Procedure)

To start a scan

  • Use the Plugin API callProcedure with procedure set to scanNfc. Correlate with callProcedureResult using a unique callId.
Request example
{
"apiVersion": 1,
"method": "callProcedure",
"procedure": "scanNfc",
"callId": "abc1230"
}

Process NFC Scan Results (Tags, Records, IDs, and Data Types)

Response structure

The response includes:

  • resultData.tags: An array of detected tags. Each tag can include:
    • tagType: For example, “NFC Forum Type 4.”
    • manufacturer: Numeric code.
    • id: Hex string with no separators. For example, “E00401531118A9AD.”
    • records: An array of NDEF records.

Response example

{
 "apiVersion": 1,
 "method": "callProcedureResult",
 "callId": "abc1230",
 "resultData": {
 "tags": [
 {
 "tagType": "NFC Forum Type 4",
 "manufacturer": 4,
 "id": "046D2CA1923180",
 "records": [
 {
 "typeNameFormat": "WELL_KNOWN", // possible values: EMPTY, WELL_KNOWN, MIME_MEDIA, ABSOLUTE_URI, EXTERNAL_TYPE, UNKNOWN, UNCHANGED, RESERVED
 "type": "URL", // Supported values: URL, TEXT. The "type" field is present only if "typeNameFormat" = WELL_KNOWN (message.tnf = 1) and message.type = 84 (T) or 85 (U)
 "value": "https://oracle.com/", // The "value" field is present only if "type" = "URL" or "TEXT"
 "message": {
 "tnf": 1,
 "type": ArrayBuffer([85]),
 "payload": ArrayBuffer([104, 116, 116, 112, 115, 58, 47, 47, 111, 114, 97, 99, 108, 101, 46, 99, 111, 109, 47]),
 }
 }
 ]
 },
 {
 "tagType": "NFC Forum Type 4",
 "manufacturer": 4,
 "id": "046D2CA1999999",
 "records": [
 {
 "typeNameFormat": "WELL_KNOWN",
 "type": "URL",
 "value": "https://www.oracle.com/cx/service/field-service-management/",
 "message": { }
 }
 ]
 }
 ]
 }
};

Important:

  • typeNameFormat possible values: EMPTY, WELL_KNOWN, MIME_MEDIA, ABSOLUTE_URI, EXTERNAL_TYPE, UNKNOWN, UNCHANGED, RESERVED.
  • The type field is present only when typeNameFormat is WELL_KNOWN and the record type is T (TEXT) or U (URL).
  • The value field is present only when type is URL or TEXT.
  • For advanced parsing, use message.payload from the record when typeNameFormat is not WELL_KNOWN.