Skip to content

Commit be19994

Browse files
committed
fixed crash on android 12
1 parent cd1590d commit be19994

File tree

6 files changed

+73
-18
lines changed

6 files changed

+73
-18
lines changed

android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<service
4343
android:name="com.interconnected_mobile_client.HeartbeatEventService">
4444
</service>
45+
<service android:name="com.asterinet.react.bgactions.RNBackgroundActionsTask" />
4546
<receiver
4647
android:name="com.interconnected_mobile_client.BootUpReceiver"
4748
android:enabled="true"

index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,5 @@
55
import { AppRegistry } from 'react-native';
66
import App from './App.tsx';
77
import { name as appName } from './app.json';
8-
import { backgroundTask } from './src/background/backgroundTask';
98

10-
AppRegistry.registerHeadlessTask('Heartbeat', () => backgroundTask());
119
AppRegistry.registerComponent(appName, () => App);

package-lock.json

Lines changed: 34 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"interconnected_node": "^0.0.19",
1818
"react": "18.0.0",
1919
"react-native": "0.69.6",
20+
"react-native-background-actions": "^2.6.7",
2021
"react-native-device-info": "^10.2.0",
2122
"react-native-safe-area-context": "^4.3.4",
2223
"react-native-screens": "^3.17.0",

src/background/BackgroundTaskSingleton.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,31 @@ import DeviceInfo from 'react-native-device-info';
22
import NetInfo, { NetInfoStateType } from '@react-native-community/netinfo';
33
import uuid from 'react-native-uuid';
44

5-
import Heartbeat from './Heartbeat';
5+
import BackgroundService from 'react-native-background-actions';
66
import BackgroundTaskStatus from './BackgroundTaskStatus';
77
import { BATTERY_PERCENTAGE_TRESHOLD } from '../tabs/home/PrerequisitesSection';
88
import InterconnectedNode, { DeviceType } from 'interconnected_node';
9-
import { ToastAndroid } from 'react-native';
109
import MobileP2PConnectionBuilders from './mobileSpecificNodeImplementation/MobileP2PConnectionBuilders';
10+
import { backgroundTask } from './backgroundTask';
1111

1212
const BROKER_SERVICE_ADDRESS =
1313
'http://ec2-3-208-18-248.compute-1.amazonaws.com:8000';
1414

15+
const OPTIONS = {
16+
taskName: 'BackgroundTask',
17+
taskTitle: 'Interconnected',
18+
taskDesc: 'Grid contribution is enabled',
19+
taskIcon: {
20+
name: 'ic_launcher',
21+
type: 'mipmap',
22+
},
23+
color: '#c80a50',
24+
linkingURI: 'yourSchemeHere://chat/jane', // See Deep Linking for more info
25+
parameters: {
26+
delay: 2000,
27+
},
28+
};
29+
1530
export default class BackgroundTaskSingleton {
1631
private static _instance: BackgroundTaskSingleton;
1732

@@ -35,17 +50,15 @@ export default class BackgroundTaskSingleton {
3550

3651
public async isRunning(): Promise<boolean> {
3752
return new Promise<boolean>((resolve) => {
38-
Heartbeat.isServiceRunning().then((res: boolean) => {
39-
resolve(res);
40-
});
53+
resolve(BackgroundService.isRunning());
4154
});
4255
}
4356

4457
public async start(): Promise<void> {
4558
return new Promise<void>((resolve, reject) => {
4659
this.isRunning().then(async (v) => {
4760
if (!v) {
48-
await Heartbeat.startService();
61+
await BackgroundService.start(backgroundTask, OPTIONS);
4962
resolve();
5063
} else {
5164
reject();
@@ -59,7 +72,7 @@ export default class BackgroundTaskSingleton {
5972
this.isRunning().then(async (v) => {
6073
if (v) {
6174
await this.stopNode();
62-
await Heartbeat.stopService();
75+
await BackgroundService.stop();
6376
}
6477
resolve();
6578
});

src/background/backgroundTask.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
1+
import BackgroundService from 'react-native-background-actions';
12
import BackgroundTaskSingleton from './BackgroundTaskSingleton';
23

3-
export function backgroundTask() {
4-
return async () => {
5-
const arePrerequisitesMet =
6-
await BackgroundTaskSingleton.instance.prerequisitesMet();
7-
if (arePrerequisitesMet) {
8-
BackgroundTaskSingleton.instance.startNode();
9-
} else {
10-
BackgroundTaskSingleton.instance.stopNode();
4+
const sleep = (time: any) =>
5+
new Promise((resolve) => setTimeout(() => resolve(undefined), time));
6+
7+
export async function backgroundTask(taskDataArguments: any) {
8+
const { delay } = taskDataArguments;
9+
await new Promise(async () => {
10+
while (BackgroundService.isRunning()) {
11+
const arePrerequisitesMet =
12+
await BackgroundTaskSingleton.instance.prerequisitesMet();
13+
if (arePrerequisitesMet) {
14+
BackgroundTaskSingleton.instance.startNode();
15+
} else {
16+
BackgroundTaskSingleton.instance.stopNode();
17+
}
18+
await sleep(delay);
1119
}
12-
};
20+
});
1321
}

0 commit comments

Comments
 (0)