Всем привет, мне нужно запустить фоновые задачи на React native на Android смартфоны, решил попробовать реализовать на Headless JS, до этого пробовал библиотеку react-native-background-task, но как то не получилось.
Теперь работаю с Headless JS, но тоже не работает, вот пример кода.
index.js:
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import SomeTaskName from './SomeTaskName'
AppRegistry.registerHeadlessTask("SomeTaskName", () =>
SomeTaskName
);
AppRegistry.registerComponent(appName, () => App);
SomeTaskName.js:
module.exports = async (taskData) => {
console.log('Beackgroud task')
alert('test');
}
MyTaskService.java:
package com.exaple;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.HeadlessJsTaskService;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.jstasks.HeadlessJsTaskConfig;
import javax.annotation.Nullable;
public class MyTaskService extends HeadlessJsTaskService {
@Override
protected @Nullable HeadlessJsTaskConfig getTaskConfig(Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
return new HeadlessJsTaskConfig(
"SomeTaskName",
Arguments.fromBundle(extras),
5000, // timeout for the task
false // optional: defines whether or not the task is allowed in foreground. Default is false
);
}
return null;
}
}
AndroidManifest.xml:
<service android:name="com.exaple.MyTaskService" />
MainActivity.java:
package com.exaple;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.react.ReactActivity;
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity2.class);
Intent service = new Intent(getApplicationContext(), MyTaskService.class);
getApplicationContext().startService(service);
startActivity(intent);
finish();
}
Я всё сделал как в документации, но нечего не работает, в чём может быть дело?
Или хотя бы подскажите библиотеку, которая поможет это реализовать, мне надо, чтобы приложение работало в закрытом состоянии.