React-Native IOS:Background-Timer不在后台运行

问题描述

尝试启动背景计时器。 我想运行代码,该代码也将在后台针对iOS执行。

我使用 react-native-background-timer库。

但是当我最小化应用程序时,代码无法运行。 我在模拟器以及IOS设备(调试和发布)上运行该应用程序。 但是,当应用程序最小化时,代码不会运行。

我的代码

var myTimer;

componentDidMount(): void {
    const time = BackgroundTimer.setInterval(() => {
        Geolocation.getCurrentPosition(
            position => {
                const location = JSON.stringify(position);
                console.log(position.coords.latitude);
                this.setState({
                    location,latitude: position.coords.latitude,longitude: position.coords.longitude
                });
            });
       }
  }

解决方法

根据库documentation,BackgroundTimer.setInterval仅用于android。如果需要跨平台要在Android和iOS上使用相同的代码,请使用runBackgroundTimer()和stopBackgroundTimer()

BackgroundTimer.runBackgroundTimer(() => { 
//code that will be called every 3 seconds 
},3000);
//rest of code will be performing for iOS on background too

BackgroundTimer.stopBackgroundTimer(); //after this call all code on background stop run.