React Native
You can import Pools SDK into your React Native dapp to enable your users to easily connect to the Pools Wallet
Install the SDK
Use rn-nodeify
to install the SDK. In your project directory, install rn-nodeify
:
yarn add --dev rn-nodeify
or
npm i --dev rn-nodeify
Install the rn-nodeify
libraries:
yarn add react-native-crypto
yarn add react-native-randombytes
yarn add crypto
yarn add process
yarn add stream
yarn add events
In your project's package.json
file, insert the rn-nodeify
command into the postinstall script:
package.json
"scripts": {
...,
"postinstall": "rn-nodeify --install 'crypto,process,stream,events' --hack"
}
rn-nodeify
creates a shim.js
file in your project root directory. Import it in the root file of your application:
import './shim'
Install react-native-background-timer
:
yarn add react-native-background-timer
cd ios && pod install && cd ..
Install Pools SDK:
yarn add @pools/sdk
Run the postinstall script after everything is installed:
yarn postinstall
Finally, install the necessary pods that come with the libraries:
cd ios && pod install && cd ..
Use the SDK
Import, instantiate, and use the SDK by adding something similar to the following to your project script:
import PoolsSDK from '@pools/sdk';
import { Linking } from 'react-native';
import BackgroundTimer from 'react-native-background-timer';
const PSDK = new PoolsSDK({
openDeeplink: (link) => {
Linking.openURL(link); // Use React Native Linking method or another way of opening deeplinks.
},
timer: BackgroundTimer, // To keep the dapp alive once it goes to background.
dappMetadata: {
name: 'My dapp', // The name of your dapp.
url: 'https://mydapp.com', // The URL of your website.
},
});
const ethereum = PSDK.getProvider();
const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
You can configure the SDK using any options and call any provider API methods. Always call eth_requestAccounts
using ethereum.request(args)
first, since it prompts the installation or connection popup to appear.
You can use EthersJS with your React Native app:
const provider = new ethers.providers.Web3Provider(ethereum);
// Get the balance of an account (by address or ENS name, if supported by network).
const balance = await provider.getBalance(ethereum.selectedAddress);
// Often you need to format the output to something more user-friendly,
// such as in ether (instead of wei).
const balanceInETH = ethers.utils.formatEther(balance);
// '0.182826475815887608'
Last updated