@breeztech/react-native-breez-sdk
Version:
React Native Breez SDK
122 lines (96 loc) • 4.48 kB
Markdown
The Breez SDK enables mobile developers to integrate Lightning and bitcoin payments into their apps with a very shallow learning curve. The use cases are endless – from social apps that want to integrate tipping between users to content-creation apps interested in adding bitcoin monetization. Crucially, this SDK is an end-to-end, non-custodial, drop-in solution powered by Greenlight, a built-in LSP, on-chain interoperability, third-party fiat on-ramps, and other services users and operators need.
The Breez SDK provides the following services:
* Sending payments (via various protocols such as: bolt11, keysend, lnurl-pay, lightning address, etc.)
* Receiving payments (via various protocols such as: bolt11, lnurl-withdraw, etc.)
* Fetching node status (e.g. balance, max allow to pay, max allow to receive, on-chain balance, etc.)
* Connecting to a new or existing node.
## Installation
```bash
npm install @breeztech/react-native-breez-sdk
```
or
```bash
yarn add @breeztech/react-native-breez-sdk
```
### Important fix for React Native versions below 0.71.0
If your project uses a React Native version less < 0.71.0, and you want to build your app for Android, you might run into an error like this:
```
2 files found with path 'lib/arm64-v8a/libc++_shared.so' from inputs:
- /(...)/.gradle/caches/transforms-3/c476ede63d070b991438fe0d1c323931/transformed/jetified-react-native-0.68.6/jni/arm64-v8a/libc++_shared.so
- /(...)/.gradle/caches/transforms-3/7c318ac8dd87c1f0c7540616d6d47bd8/transformed/jetified-breez-sdk-0.1.3/jni/arm64-v8a/libc++_shared.so
```
To fix this you need to disambiguate which file to use by adding the following snippet to your app's `android/app/build.gradle`:
```gradle
android {
// ...
packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
}
}
```
Both the Breez SDK as well as React Native package the `libc++_shared.so` native library.
React Native versions below 0.71.0 have a [bug](https://github.com/facebook/react-native/issues/30297) where they cannot automatically handle multiple versions of this file.
This has been [fixed](https://github.com/facebook/react-native/pull/35093) in React Native 0.71.0 and thus the above snippet only needs to be added to projects using React Native < 0.71.0.
For a more in-depth look at using the Breez SDK, you can follow [these examples](https://sdk-doc.breez.technology/) in the SDK overview.
Please contact [support@breez.technology](mailto:support@breez.technology?subject=Breez%20API%20Key) to request a Breez API Key.
```ts
import React, { useEffect } from "react"
import {
BreezEvent,
defaultConfig,
EnvironmentType,
NodeConfigVariant,
sendPayment,
connect
} from "@breeztech/react-native-breez-sdk";
import BuildConfig from "react-native-build-config"
const App = () => (
...
const onEvent = (breezEvent: BreezEvent) => {
console.log(`${JSON.stringify(breezEvent)}`)
}
const payInvoice = async (bolt11: string, amountMsat?: number) => {
// Pay invoice
const payment = await sendPayment({ bolt11, amountMsat });
}
useEffect(() => {
const asyncFn = async () => {
// Create the specific node configuration
const nodeConfig = {
type: NodeConfigVariant.GREENLIGHT,
config: {
partnerCredentials: {
deviceKey: null,
deviceCert: null
}
}
}
// Construct the sdk default config
const config = await defaultConfig(EnvironmentType.PRODUCTION, BuildConfig.BREEZ_API_KEY, nodeConfig)
// Connect to the Breez SDK make it ready to use
await connect(config, seed, onEvent)
}
asyncFn()
}, [])
...
)
export default App
```
In the `example` folder of the [Breez SDK repository](https://github.com/breez/breez-sdk/tree/main/libs/sdk-react-native/example) you will find a basic application for using Breez SDK. Change directory into the folder and install the dependencies:
```bash
yarn
```
Then to run on android:
```bash
yarn android
```
or for iOS:
```bash
yarn pods && yarn ios
```