Nutritious Pumpkin Mash

    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>
        );
      }
      
    }

    Install

    npm i react-native-ussd

    DownloadsWeekly Downloads

    2

    Version

    1.0.21

    License

    MIT

    Unpacked Size

    25.9 kB

    Total Files

    24

    Last publish

    Collaborators

    • isharaux