kaw*_*man 5 webview ios react-native
我正在开发一个 ios react 本机应用程序,我使用 webview 定期获取数据,并在我的应用程序中使用它,但是当我锁定我的 iphone 设备时,webview 停止发送数据以响应本机。
onWebViewLoad() {
setInterval(function(){
this.refs.webview.injectJavaScript('window.ReactNativeWebView.postMessage(window.getData());');
}, 10000);
}
handleMessage(event) {
// receive data
//doSomething(event.nativeEvent.data)
}
Run Code Online (Sandbox Code Playgroud)
<WebView
source={{ uri: this.state.myPage }}
javaScriptEnabled={true}
startInLoadingState={true}
onLoad={this.onWebViewLoad}
ref="webview"
onMessage={this.handleMessage}
/>
Run Code Online (Sandbox Code Playgroud)
注意:当应用程序在前台或后台时代码工作正常,但是当我打开应用程序并锁定屏幕时,webview 停止发送数据。
有没有办法让 webview 在屏幕锁定后发送数据。
不应该只有 WebView 被阻止。我认为当屏幕锁定时计时器也会被阻止。
与称为唤醒锁定的主题密切相关,正如文章中提到的,有时使用播放隐藏视频的方法来避免 CPU 睡眠。
使用类似的解决方法,您可以尝试此github 帖子中的方法,以在屏幕锁定时使用计时器。(*)
该方法引用自github帖子:
...这似乎对我有用:
在 componentWillMount() 中启动后台计时器
当您希望后台计时器处于活动状态时,播放无声声音。这可能类似于重复播放的react-native-sound 文件
将以下内容添加到您的
info.plist
文件中:Run Code Online (Sandbox Code Playgroud)<key>UIBackgroundModes</key> <array> <string>audio</string> </array>
请注意,您仍然应该遵守苹果的服务条款,并且仅当您处于其接受的后台播放用例之一时才执行上述操作。
(*) 请注意,这需要使用react-native-background-timer和react-native-sound包。它的逻辑与上面的唤醒锁文章非常相似。另外,最好仔细考虑一下您所做的事情是否符合 IOS 政策。
归档时间: |
|
查看次数: |
586 次 |
最近记录: |