Analytics

Introduction

Allows an integrating application to track one or more data events emitted by the SDK. This is helpful if an integrating app requires the ability to be notified when receipt is deleted by the user while using Spend Manager.

Note that this feature is currently supported for API v1 only.

Receipt Management

Receipt Deletion Events

Subscribing to Receipt Deletion events will allow your listener to be notified whenever a user deletes a receipt.

Step 1: Add Listener for SDK Analytics Events using addListener(key:listener:) method of Analytics shared instance.

Analytics.shared.addListener(key: String(describing: self), listener: self)

Step 2: Listen to the SDK Analytics Event by confirming to EventListener protocol.

extension ViewController: EventListener {

    func onSensibillEvent(_ event: TrackingEvent) {

      if event.feature == TrackingEvent.Feature.receipt.rawValue,
         event.name == TrackingEvent.Name.deletion.rawValue,
         let receiptId = event[TrackingEvent.AdditionalFields.receiptId.rawValue] {

         // Received receipt deletion event with respective receiptId
      }

    }
}

Step 3: Remove Listener for SDK Analytics Events using removeListener(key:) method of Analytics shared instance.

Analytics.shared.removeListener(key: String(describing: self))

Creating a ReceiptDataObserver

In order to receive notification when a user deletes a receipt, a ReceiptDataObserver must be created.

Kotlin

val observer: ReceiptDataObserver = object : ReceiptDataObserver {
    override fun notify(dataEventType: DataEventType, receipt: Receipt?) {
        when (dataEventType) {
            DataEventType.STATUS_DELETED -> {
                val receiptId = receipt?.id
                // A receipt with id receiptId has been deleted
            }
            else -> {
                // Other [DataEventType]s will not currently trigger [notify]
            }
        }
    }
}

Java

ReceiptDataObserver observer = new ReceiptDataObserver() {
    @Override
    public void notify(@NonNull DataEventType dataEventType, @Nullable Receipt receipt) {
        if (dataEventType == DataEventType.STATUS_DELETED) {
            final String receiptId = receipt != null ? receipt.getId() : null;
            // A receipt with id receiptId has been deleted
        }
    }
};

Activating an Observer

In order for your ReceiptDataObserver to be notified by the SensibillSDK whenever a receipt is deleted, it must be added to the SensibillSDK’s list of receipt data observers.

Kotlin

SensibillSDK.addReceiptDataObserver(observer)

Java

SensibillSDK.INSTANCE.addReceiptDataObserver(observer);

Removing an Observer

When receipt event updates are no longer required, please remove the observer using SensibillSDK.removeReceiptDataObserver().

Kotlin

SensibillSDK.removeReceiptDataObserver(observer)

Java

SensibillSDK.INSTANCE.removeReceiptDataObserver(observer);

SDK Reference

[ReceiptDataObserver](references/v2023-1/android/sensibill-sdk-core/-sensibill -core/com.getsensibill.core/-receipt-data-observer/)
[SensibillSDK](references/v2023-1/android/sensibill-sdk-core/-sensibill -core/com.getsensibill.core/-sensibill-s-d-k/)