通过本机博览会执行后台任务有技巧吗?

时间:2018-07-21 22:52:09

标签: react-native react-redux expo

我知道expo在后台运行时无法执行代码,但我确实需要找到替代方法。当我在后台收到推送通知时,我需要更新Redux状态。

有没有其他库可以帮助我完成此类工作?

3 个答案:

答案 0 :(得分:0)

实际上,在本机反应中是不可能的。

您可以使用npm run eject“弹出”您的应用程序(没有后退)。并使用Java(适用于Android)和Swift(适用于iOS)添加本地代码来处理后台任务。

答案 1 :(得分:0)

这可能是一个解决方案:https://medium.com/@inkdrop/a-simple-way-to-run-js-in-background-thread-on-react-native-8fff345576da

```

import React, { Component } from 'react'
import { WebView } from 'react-native'
export default class BackgroundTaskRunner extends Component {
  render() {
    return (
      <WebView
        ref={el => this.webView = el}
        source={{html: '<html><body></body></html>'}}
        onMessage={this.handleMessage}
      />
    )
  }
  runJSInBackground (code) {
    this.webView.injectJavaScript(code)
  }
  handleMessage = (e) => {
    const message = e.nativeEvent.data
    console.log('message from webview:', message)
  }
}

```

答案 2 :(得分:0)

截至2019年4月,世博会确实允许使用其TaskManager完成一些后台任务。内置后台任务的两个示例是:

  • 背景地理位置(包括地理围栏):see docs
  • 背景提取:see docs