An open API service indexing awesome lists of open source software.

https://github.com/sreejithr/react-native-context-execute

Execute JS code in React Native context
https://github.com/sreejithr/react-native-context-execute

react-native

Last synced: about 2 months ago
JSON representation

Execute JS code in React Native context

Awesome Lists containing this project

README

          

# react-native-context-execute

Execute JS code in React Native's context even when RN is inactive (eg. app in background).

In Android, where background services are indispensable, keeping RN in sync can be hard since RN doesn't stay active in background. **Currently, Android-only**.

A tiny library which registers a `JavascriptModule` in RN's `JavascriptModuleRegistry` and makes `Catalyst` (Bridge) run it.

Before using this, please note that **HeadlessJS** is another good way to go.

## Getting started

`$ npm install react-native-context-execute --save`

### Mostly automatic installation

`$ rnpm link react-native-context-execute`

### Manual installation

#### Android

1. Open up `android/app/src/main/java/[...]/MainActivity.java`
- Add `import com.reactlibrary.RNContextExecutePackage;` to the imports at the top of the file
- Add `new RNContextExecutePackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':react-native-context-execute'
project(':react-native-context-execute').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-context-execute/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':react-native-context-execute')
```

## Usage
In your Java side, grab hold of the `ReactApplicationContext` and do,

```java
WritableMap payload = Arguments.createMap();
payload.putString("some_key", "some_value");

new ReactContextExecutor(reactApplicationContext).execute("some_other_key", payload);
```

In JS side,

```javascript
import { ContextExecute } from 'react-native-context-execute';

ContextExecute((op, data) => {
// Do your thing
});

```