1.0.21 • Published 4 years ago

react-native-ussd v1.0.21

Weekly downloads
12
License
MIT
Repository
github
Last release
4 years ago

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

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.10

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago