npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-wakeup-app

v0.0.1

Published

[![npm version](https://badge.fury.io/js/react-native-invoke-app.svg)](https://badge.fury.io/js/react-native-invoke-app)

Downloads

2,198

Readme

React Native Invoke App

npm version

Headless JS is a way to run background tasks in a React Native app. Sometimes we may want to open the app from background task (Headless JS). You can use this module to bring your app to foreground in all the following three cases.

  • App is in foreground
  • App is in background
  • App is not running

Installation

$ npm install --save react-native-invoke-app
$ react-native link react-native-invoke-app

Usage

import invokeApp from 'react-native-invoke-app';

// Within your headless function
invokeApp();

Advanced usage

You can pass an object to invokeApp method to pick it from DeviceEventEmitter by listening to appInvoked event.

Example:

const yourObject = { route: 'Dashboard' };

invokeApp({
    data: yourObject,
})

Use case

Let's say you want to navigate to dashboard screen of the app after a specific task is completed. You can acheive it like,

import React, { Component } from 'react';
import { DeviceEventEmitter, Text, View } from 'react-native';
import { createStackNavigator } from 'react-navigation';
import invokeApp from 'react-native-invoke-app';

import Dashboard from './dashboard';

class App extends Component {
    componentWillMount() {
        DeviceEventEmitter.addListener('appInvoked', (data) => {
	    const { route } = data;
	    
	    // Using react-navigation library for navigation.
	    this.props.navigation.navigate(route);
	});
    }

    render() {
        return (
	    <View>
		<Text>
		    This is Home screen.
		</Text>
	    </View>
	)
    }
}

const appStack = () => {
    const Stack = createStackNavigator({
        App,
        Dashboard,
    });

    return <Stack />
}

const notificationActionHandler = async (data) => {
    // Your background task
    const yourObject = { route: 'Dashboard' };

    invokeApp({
	data: yourObject,
    })
}

AppRegistry.registerHeadlessTask(
    'RNPushNotificationActionHandlerTask', () => notificationActionHandler,
);

AppRegistry.registerComponent('testProject', () => appStack);

Extra step needed when app is not running

Event listener will work fine when your app is in background or foreground. If it is not running, to capture the first event we need to do some extra work. Make the following changes in your MainActivity.java file of React Native app,

package com.yourpackage;

+import android.os.Bundle;
import com.facebook.react.ReactActivity;
+import com.codegulp.invokeapp.RNInvokeApp;

public class MainActivity extends ReactActivity {
    /**
    * Returns the name of the main component registered from JavaScript.
    * This is used to schedule rendering of the component.
    */
    @Override
    protected String getMainComponentName() {
    	return "testProject";
    }
    
+   @Override
+   protected void onCreate(Bundle savedInstanceState) {
+       super.onCreate(savedInstanceState);
+	RNInvokeApp.sendEvent();
+   }
}

License

MIT