# registerPlugin

> Registers a plugin for extended NFC functionality.

Call the **registerPlugin** API to register SPI plugins.

## Method signature

```java
void registerPlugin(Class<T> clazz, T instance);
```

## Request parameters

| **Item** | **Type** | **Description** | **Required** |
| --- | --- | --- | --- |
| clazz | Class<T> | Extended plugins for injection. Available plugins for clazz injection, see [Available SPI plugins](#TOWNv). | Yes |
| instance | T | Corresponding instance. | Yes |

### Available SPI plugins

Each plugin corresponds to an API. Click the plugin name to view the API definition and implementation details.

| **Item** | **Description** | **Required** |
| --- | --- | --- |
| [NFCRequestProxy](nfc_request_proxy) | Proxy network requests. | Yes |
| [TransactionPermit](transaction_permit) | Transaction authentication. | Yes |
| [ConfigProxy](config_proxy) | Proxy configurations. Enables the integrating party to customize configuration delivery and modify internal SDK implementation through multiple remote configuration projects. | Yes |
| [LoggerProxy](logger_proxy) | Manages log output. Enables the integrator party to customize log printing to access internal SDK log output. | Yes |
| [NFCMonitor](nfc_monitor) | Monitors the events which are triggered inside the SDK. | Yes |
| [ThreadPoolService](thread_pool_service) | Implements and manages your own thread pool. | No |
| [DeviceFingerPrintService](device_finger_print_service) | Enables the SDK to request device fingerprints from the MPP. | No |
| [WalletInfoProvider](walletinfo_provider) | Provides wallet context, including location and foreground status, to enrich SDK telemetry data. | No |

> **Note**: The following two plugins have SDK-provided fallbacks:
>
> -   **ThreadPoolService**: Falls back to a built-in thread pool implementation if not registered.
> -   **DeviceFingerPrintService**: Falls back to a built-in implementation if not registered, provided that _setUseDefaultDeviceFingerPrint(true)_ is set during initialization.

## Response parameters

N/A

## Sample

```java
ACTapManager manager = ACTapManager.getInstance(this.getApplication());
manager.registerPlugin(LoggerProxy.class, new CustomLogger());
```