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.