UNPKG

@breeztech/react-native-breez-sdk

Version:

React Native Breez SDK

122 lines (96 loc) 4.48 kB
# React Native Breez SDK 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. ## Usage 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 ``` ## Example 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 ```