Giter Club home page Giter Club logo

react-native-ussd's Introduction

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

react-native-ussd's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.