我知道当应用程序在后台时,expo无法执行代码,但我真的需要找到替代方案。当我在后台收到推送通知时,我需要更新我的redux状态。
有没有额外的图书馆可以帮我做这些事情?
实际上,在本地反应中是不可能的。
你可以用npm run eject
“弹出”你的应用程序(没有回去)。并使用java for android添加本机代码,使用swift for iOS来处理后台任务。
这可能是一个解决方案: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)
}
}
```
截至2019年4月,世博会确实允许使用他们的TaskManager完成一些后台任务。内置背景任务的两个示例是: