Skip to content

API Reference.md

Fabrizio edited this page Jan 30, 2025 · 1 revision

API Reference

Functions

Permissions

requestPermissionsAsync()

Requests necessary permissions for Nearby Connections.

const response = await requestPermissionsAsync();

Returns: Promise<PermissionResponse>

getPermissionsAsync()

Retrieves the current permission status.

const response = await getPermissionsAsync();

Returns: Promise<PermissionResponse>

usePermissions()

Hook to request and check permissions status.

const [status, askPermission, getPermission] = usePermissions()

Advertising

startAdvertisingName(endpointName: string, serviceId: string, advertisingOptions: AdvertisingOptions)

Starts advertising with a specified name.

startAdvertisingName("DeviceA", "com.example.service", advertisingOptions);

startAdvertisingInfo(endpointInfo: UInt8Array, serviceId: string, advertisingOptions: AdvertisingOptions)

Starts advertising with endpoint info as a byte array.

startAdvertisingInfo(new Uint8Array([1, 2, 3]), "com.example.service", advertisingOptions);

stopAdvertising()

Stops advertising the device.

stopAdvertising();

Discovery

startDiscovering(serviceId: string, discoveringOptions: DiscoveringOptions)

Starts discovering nearby devices.

startDiscovering("com.example.service", discoveringOptions);

stopDiscovering()

Stops discovering nearby devices.

stopDiscovering();

Connection Management

requestConnectionName(endpointName: string, endpointId: string, connectionOptions?: ConnectionOptions)

Requests a connection using an endpoint name.

requestConnectionName("DeviceA", "endpoint123", connectionOptions);

requestConnectionInfo(endpointInfo: UInt8Array, endpointId: string, connectionOptions?: ConnectionOptions)

Requests a connection using endpoint info.

requestConnectionInfo(new Uint8Array([1, 2, 3]), "endpoint123", connectionOptions);

acceptConnection(endpointId: string)

Accepts an incoming connection request.

acceptConnection("endpoint123");

rejectConnection(endpointId: string)

Rejects an incoming connection request.

rejectConnection("endpoint123");

disconnectFromEndpoint(endpointId: string)

Disconnects from a specific endpoint.

disconnectFromEndpoint("endpoint123");

stopAllEndpoints()

Stops all active connections.

stopAllEndpoints();

Data Transfer

newPayloadBytes(data: UInt8Array)

Creates a new payload from a byte array.

const payloadId = newPayloadBytes(new Uint8Array([1, 2, 3]));

Returns: string

newPayloadFile(data: string, isSensitive?: boolean, fileName?: string, parentFolder?: string)

Creates a new payload from a file.

const payloadId = newPayloadFile("filePath", true, "file.txt", "documents");

Returns: string | null

newPayloadStream(size?: number)

Creates a new stream payload.

const payloadId = newPayloadStream(2048);

Returns: string | null

sendPayloadToEndpoint(endpointId: string, payloadId: string)

Sends a payload to a single endpoint.

sendPayloadToEndpoint("endpoint123", payloadId);

sendPayloadToEndpoints(endpointIds: string[], payloadId: string)

Sends a payload to multiple endpoints.

sendPayloadToEndpoints(["endpoint123", "endpoint456"], payloadId);

Payload Management

getPayloadInfo(payloadId: string)

Retrieves details about a payload.

const info = getPayloadInfo(payloadId);

Returns: PayloadInfo

getPayloadInfoList()

Gets a list of info of active payloads.

const payloadsInfo = getPayloadInfoList();

Returns: PayloadInfo[]

getPayloadList()

Gets a list of active payloads.

const payloads = getPayloadList();

Returns: string[]

payloadExists(payloadId: string)

Check if a payload exists.

const payloadExist = payloadExists(payloadId);

Returns: boolean

setPayloadProperty(payloadId: string, name: PayloadProperty, value: string)

Set a specific property value to a payload (mostly on file payloads).

setPayloadProperty(payloadId, "fileName", "test.jpg");

removePayload(payloadId: string)

Removes a payload by ID.

removePayload(payloadId);

removePayloadAll()

Removes all stored payloads.

removePayloadAll();

cancelPayload(payloadId: string)

Cancels a payload with a given ID.

cancelPayload(payloadId);

Stream Management

writeStreamByte(payloadId: string, byte: number)

Writes a byte to a stream.

writeStreamByte(payloadId, 255);

writeStreamByteArray(payloadId: string, byteArray: UInt8Array, offset: number, length: number = byteArray.length)

Writes a byte array to a stream.

writeStreamByteArray(payloadId, [255, 123, 22], 0);

readStreamByte(payloadId: string)

Reads a byte from a stream.

const byte = await readStreamByte(payloadId);

Returns: Promise<number>

readStreamByteArray(payloadId: string, offset: number, length: number)

Reads a byte array from a stream.

const bytes = await readStreamByteArray(payloadId, 0, 1024);

Returns: Promise<UInt8Array>

availableStream(payloadId: string)

Gets the number of bytes available in the stream for a given payload ID.

const available = await availableStream(payloadId);

Returns: Promise<number>

markStream(payloadId: string, readLimit: number)

Marks the current position in the stream for a given payload ID.

markStream(payloadId, 100);

flushStream(payloadId: string)

Flushes a stream buffer.

flushStream(payloadId);

isMarkSupportedStream(payloadId: string)

Checks if mark and reset are supported in the stream for a given payload ID.

if(isMarkSupportedStream(payloadId)) {
    ...
}

resetStream(payloadId: string)

Resets the stream to the most recent mark for a given payload ID.

resetStream(payloadId);

skipStream(payloadId: string, amount: number)

Skips a number of bytes in a stream.

const skipped = await skipStream(payloadId, 10);

Returns: Promise<number>

Types

Enums

BandwidthQuality

Represents the quality of the available bandwidth.

enum BandwidthQuality {
    UNKNOWN = 0,
    LOW = 1,
    MEDIUM = 2,
    HIGH = 3,
}

ConnectionType

Defines the type of connection.

enum ConnectionType {
    BALANCED = 0,
    DISRUPTIVE = 1,
    NON_DISRUPTIVE = 2,
}

PayloadType

Defines the type of payload being transferred.

enum PayloadType {
    BYTES = 1,
    FILE = 2,
    STREAM = 3,
}

PayloadTransferUpdateStatus

Represents the status of a payload transfer.

enum PayloadTransferUpdateStatus {
    SUCCESS = 1,
    FAILURE = 2,
    IN_PROGRESS = 3,
    CANCELED = 4,
}

PayloadProperty

Properties associated with a payload.

enum PayloadProperty {
    OFFSET = "OFFSET",
    FILENAME = "FILENAME",
    PARENTFOLDER = "PARENTFOLDER",
    SENSITIVE = "SENSITIVE",
}

Strategy

Defines the connection strategy.

type Strategy = "P2P_CLUSTER" | "P2P_POINT_TO_POINT" | "P2P_STAR";

PayloadInfo

Contains information about a payload.

type PayloadInfo = {
    id: string;
    type: PayloadType;
    offset: number;
    uri?: string;
    size?: number;
    bytes?: Uint8Array;
};

ConnectionOptions

Options for managing a connection.

type ConnectionOptions = {
    connectionType: ConnectionType;
    lowPowerMode: boolean;
};

AdvertisingOptions

Options for advertising a device.

type AdvertisingOptions = ConnectionOptions & DiscoveringOptions;

DiscoveringOptions

Options for discovering nearby devices.

type DiscoveringOptions = {
    strategy: Strategy;
};

Events

EndpointEvent

Represents a generic endpoint event.

type EndpointEvent = {
    endpointId: string;
};

EndpointFound

Emitted when an endpoint is discovered.

type EndpointFound = EndpointEvent & {
    endpointInfo: Uint8Array;
    serviceId: string;
};

ConnectionInitiated

Represents the initial connection handshake.

type ConnectionInitiated = {
    endpointId: string;
    authenticationDigits: string;
    authenticationStatus: number;
    endpointInfo: Uint8Array;
    endpointName: string;
    rawAuthenticationToken: Uint8Array;
    isIncomingConnection: boolean;
};

ConnectionResult

Contains the result of a connection attempt.

type ConnectionResult = {
    endpointId: string;
    status: string;
};

BandwidthChanged

Event triggered when bandwidth quality changes.

type BandwidthChanged = {
    endpointId: string;
    quality: BandwidthQuality;
};

PayloadEvent

Represents a payload event.

type PayloadEvent = {
    payloadId: string;
};

Exception

Contains information about an error.

type Exception = {
    error: string;
    stackTrace: string;
    data: string;
};

PayloadReceivedInfo

Details about a received payload.

type PayloadReceivedInfo = null | {
    endpointId: string;
    payloadId: string;
    type: PayloadType;
    data: Uint8Array | string;
};

PayloadTransferUpdate

Represents an update on a payload transfer.

type PayloadTransferUpdate = {
    payloadId: string;
    status: PayloadTransferUpdateStatus;
    bytesTransferred: number;
    totalBytes: number;
};

PayloadSend

Represents the sending of a payload.

type PayloadSend = {
    endpointIds: string[] | string;
    payloadId: string;
};

Events

How to use them

Import the default export from the module and register a listener.

import Nearby from 'expo-googlenearby-connection'

Nearby.addListener("EndpointFound", (event) => {
    console.log("Endpoint found, Id: " + event.endpointId)
    console.log("Endpoint found, service Id: " + event.serviceId)
});

Endpoint Events

EndpointFound

Called when an endpoint is found.

EndpointFound(event: EndpointFound): void;

EndpointLost

Called when an endpoint is lost.

EndpointLost(event: EndpointEvent): void;

Advertising and Discovering Events

AdvertisingStarted

Called when advertising starts.

AdvertisingStarted(): void;

DiscoveringStarted

Called when discovering starts.

DiscoveringStarted(): void;

AdvertisingStopped

Called when advertising stops.

AdvertisingStopped(): void;

DiscoveringStopped

Called when discovering stops.

DiscoveringStopped(): void;

AdvertisingFailed

Called when advertising fails.

AdvertisingFailed(event: Exception): void;

DiscoveringFailed

Called when discovering fails.

DiscoveringFailed(event: Exception): void;

Connection Events

BandwidthChanged

Called when the bandwidth quality changes.

BandwidthChanged(event: BandwidthChanged): void;

ConnectionRequested

Called when a connection is requested.

ConnectionRequested(event: EndpointEvent): void;

ConnectionRequestFailed

Called when a connection request fails.

ConnectionRequestFailed(event: Exception): void;

ConnectionAccepted

Called when a connection is accepted.

ConnectionAccepted(event: EndpointEvent): void;

ConnectionAcceptFailed

Called when a connection acceptance fails.

ConnectionAcceptFailed(event: Exception): void;

ConnectionRejected

Called when a connection is rejected.

ConnectionRejected(event: EndpointEvent): void;

ConnectionRejectFailed

Called when a connection rejection fails.

ConnectionRejectFailed(event: Exception): void;

ConnectionInitiated

Called when a connection is initiated.

ConnectionInitiated(event: ConnectionInitiated): void;

ConnectionResult

Called when a connection result is received.

ConnectionResult(event: ConnectionResult): void;

DisconnectFromEndpoint

Called when disconnected from an endpoint.

DisconnectFromEndpoint(event: EndpointEvent): void;

EndpointDisconnection

Called when an endpoint is disconnected.

EndpointDisconnection(event: EndpointEvent): void;

StopAllEndpoints

Called when all endpoints are stopped.

StopAllEndpoints(): void;

Payload Events

PayloadReceived

Called when a payload is received.

PayloadReceived(event: PayloadReceivedInfo): void;

PayloadTransferUpdate

Called when there is an update on the payload transfer.

PayloadTransferUpdate(event: PayloadTransferUpdate): void;

PayloadSend

Called when a payload is sent.

PayloadSend(event: PayloadSend): void;

PayloadSendFailed

Called when a payload send fails.

PayloadSendFailed(event: Exception): void;

PayloadRemoved

Called when a payload is removed.

PayloadRemoved(event: PayloadEvent): void;

PayloadRemovedAll

Called when all payloads are removed.

PayloadRemovedAll(): void;

PayloadRemoveFailed

Called when a payload removal fails.

PayloadRemoveFailed(event: Exception): void;

PayloadCanceled

Called when a payload is canceled.

PayloadCanceled(event: PayloadEvent): void;

PayloadCancelFailed

Called when a payload cancellation fails.

PayloadCancelFailed(event: Exception): void;

PayloadNotFound

Called when a payload is not found.

PayloadNotFound(event: Exception): void;

PayloadInvalidArguments

Called when invalid arguments have been passed.

PayloadInvalidArguments(event: Exception): void;

PayloadIOException

Called when an IOException occurs.

PayloadIOException(event: Exception): void;

PayloadException

Called when a generic Exception occurs.

PayloadException(event: Exception): void;

Location Events

LocationRequestApproved

Called when the location request is approved.

LocationRequestApproved(): void;

LocationRequestDenied

Called when the location request is denied.

LocationRequestDenied(): void;

LocationRequestUnknown

Called when the location request status is unknown.

LocationRequestUnknown(): void;

LocationPromptAccepted

Called when the location prompt is accepted.

LocationPromptAccepted(): void;

LocationPromptRejected

Called when the location prompt is rejected.

LocationPromptRejected(): void;

Other Events

InvalidStrategy

Called when an invalid strategy has been passed.

InvalidStrategy(event: Exception): void;

Next Steps

For usage examples, refer to the User Guide.

Clone this wiki locally