Skip to content

Latest commit

 

History

History
80 lines (67 loc) · 1.99 KB

README.md

File metadata and controls

80 lines (67 loc) · 1.99 KB

React Native Background Timer

Emit event periodically (even when app is in the background).

Installation

  • npm i react-native-background-timer --save
  • react-native link

Installation using CocoaPods on iOS

  • npm i react-native-background-timer --save
  • add the following to your Podfile: pod 'react-native-background-timer', :path => '../node_modules/react-native-background-timer'

Usage

You can use the setInterval and setTimeout functions. This API is identical to that of react-native and can be used to quickly replace existing timers with background timers.

import BackgroundTimer from 'react-native-background-timer';
// Start a timer that runs continuous after X milliseconds
const intervalId = BackgroundTimer.setInterval(() => {
	// this will be executed every 200 ms
	// even when app is the the background
	console.log('tic');
}, 200);

// Cancel the timer when you are done with it
BackgroundTimer.clearInterval(intervalId);
// Start a timer that runs once after X milliseconds
const timeoutId = BackgroundTimer.setTimeout(() => {
	// this will be executed once after 10 seconds
	// even when app is the the background
  	console.log('tac');
}, 10000);

// Cancel the timeout if necessary
BackgroundTimer.clearTimeout(timeoutId);

Obsolete

Obsolete usage which doesn't allows to use multiple background timers.

import {
  DeviceEventEmitter,
  NativeAppEventEmitter,
  Platform,
} from 'react-native';

import BackgroundTimer from 'react-native-background-timer';
const EventEmitter = Platform.select({
  ios: () => NativeAppEventEmitter,
  android: () => DeviceEventEmitter,
})();
// start a global timer
BackgroundTimer.start(5000); // delay in milliseconds
// listen for event
EventEmitter.addListener('backgroundTimer', () => {
	// this will be executed every 5 seconds
	// even when app is the the background
	console.log('toe');
});
// stop the timer
BackgroundTimer.stop();