react-native-ussd

1.0.21 • Public • Published

react-native-ussd

React Native Library to handle USSD.

TODO: Need to implement functionalities for IOS, Currently only work for Android

Getting started

$ npm install react-native-ussd --save

Mostly automatic installation

$ react-native link react-native-ussd

Usage

Following configurations need to be done before using in either of the platforms

Android

Add permissions to Make calls in the Manifest

<manifest ...>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application...>

IOS

[ TODO]

....

Dialing a USSD CODE

Ussd code can be dialled simply by calling dial method with required dialling number.

import Ussd from 'react-native-ussd';
 
// Add USSD code you want to dial
Ussd.dial("*#456#");

A event listener should be initialized to listen for ussd replies from the dialling made using Ussd.dial()

import Ussd, {ussdEventEmitter} from 'react-native-ussd';
 
// Add USSD code you want to dial
Ussd.dial("*#456#");
 
 
....
// in useEffect or in componentDidMount
this.eventListener = ussdEventEmitter.addListener('ussdEvent', (event) => {
       console.log(event.ussdReply) 
       let balance = event.ussdReply.split("is")[1].split(".Valid")[0];
       let date = event.ussdReply.split("until")[1].split(".")[0];
       this.setState({
        userBalance:balance,
        expiryDate:date
      })
       console.log(balance);
    });
 
....
 
//unregister the listener after using (probably in componentWillUnmount)
this.eventListener.remove();
....
 
 

Example Usecase

import * as React from 'react';
import { Text, View, 
TouchableOpacity, PermissionsAndroid } from 'react-native';
import Ussd, {ussdEventEmitter} from 'react-native-ussd';
 
 
export default class App extends React.Component {
  state = {
    userBalance:0,
    expiryDate:''
  };
 
 
  async checkBalance(){
    let granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.CALL_PHONE,
      {
        'title': 'I need to make some calls',
        'message': 'Give me permission to make calls '
      }
    )
  
    if (granted) {
      console.log( "CAN Make Calls" );
      Ussd.dial('*#456#');
      
      console.log(this.state.userBalance);
    } 
    else {
      console.log( "CALL MAKING Permission Denied" );
    }
  }
  componentDidMount(){
    
    this.eventListener = ussdEventEmitter.addListener('ussdEvent', (event) => {
       console.log(event.ussdReply) 
       let balance = event.ussdReply.split("is")[1].split(".Valid")[0];
       let date = event.ussdReply.split("until")[1].split(".")[0];
       this.setState({
        userBalance:balance,
        expiryDate:date
      })
       console.log(balance);
    });
  }
  componentWillUnmount(){
    this.eventListener.remove();
  }
  render(){
    return (
      <View >
        <TouchableOpacity onPress={() => this.checkBalance()}>
        <Text>Check Balance</Text>
        </TouchableOpacity>
    <Text>Your Balance is: {this.state.userBalance}</Text>
    <Text>Expiry Date is: {this.state.expiryDate}</Text>       
        
      </View>
    );
  }
  
}

Package Sidebar

Install

npm i react-native-ussd

Weekly Downloads

4

Version

1.0.21

License

MIT

Unpacked Size

25.9 kB

Total Files

24

Last publish

Collaborators

  • isharaux