如何在前台后台接收消息 - React Native?

Thi*_*yen 4 message background react-native-android

  • 我不知道如何通过 React Native 在后台获取接收消息(仅适用于 Android)

  • 我只想在 Android 中接收最新消息然后显示在屏幕上

  • 现在它只能在前台接收。

  • 我遵循了 2 个链接,但仍然无法克服这个问题

https://www.npmjs.com/package/react-native-android-sms-listener

https://www.npmjs.com/package/react-native-background-job

这是我的代码

import React, { Component } from 'react';
import {
  AppRegistry,
  Text,
  View
} from 'react-native';

import BackgroundJob from 'react-native-background-job';
import SmsListener from 'react-native-android-sms-listener';

/*
Register background job with jobKey
*/
const myJobKey = 'Hej';

BackgroundJob.register({
  jobKey: myJobKey,
  job: () => console.log('Background Job fired!')
});

export default class ListenMessageApp extends Component {

  //constructor include last message
  constructor(props) {
    super(props);
    this.state = { lastMessage: 1 };
  }

  componentDidMount() {
    this.getAll();
    BackgroundJob.schedule({
      jobKey: myJobKey,
      period: 1000,
      timeout: 1000
    });
  }

  //Schedule function in background job

  getAll() {
    BackgroundJob.getAll({
      callback: () => {
       SmsListener.addListener(message => {
          this.setState({ lastMessage: message.body });
        });
      }
    });
  }

  render() {
    return (
      <View>
        <Text> Scheduled jobs: {this.state.lastMessage} </Text>
      </View>
    );
  }
}

AppRegistry.registerComponent('ListenMessageApp', () => ListenMessageApp);
Run Code Online (Sandbox Code Playgroud)

希望任何人提供解决方案或不同的示例、教程、...来解决这个问题!谢谢大家!

Ste*_*nko 5

您应该unregisterReceiver(mReceiver)在 SmsListenerModule.java 中发表评论

public void onHostPause() {
 //unregisterReceiver(mReceiver);
Run Code Online (Sandbox Code Playgroud)

}

看看制作 react-native-sms-listener https://github.com/CentaurWarchief/react-native-android-sms-listener/issues/6 的人的这个问题

希望对你有帮助。