我一直在开发使用Expo构建的跨平台应用程序,并且在iOS中使用计步器时遇到了麻烦。它在android上运行良好,但在iOS上却确实请求权限,但无法通过承诺拒绝检索值。
我尝试返回文档,以查看是否需要进行更改。该文档确实确实已更改为从Expo-sensors而不是expo导入。 我试过了,它不会更改iOS上的Promise拒绝。此外,使用此导入会为android提供一个错误,指出尚未实现使用日期。 我检查了expo-sensors文档,并且不赞成使用独立的expo-sensors,它是main分支的一部分,尽管expo docs说现在使用此导入。此外,您在其仿真器上的文档中的代码示例中也遇到了相同的错误,但我找不到关于iOS损坏的注释。
https://docs.expo.io/versions/latest/sdk/pedometer/
我正在使用的导入语法:
import {Pedometer} from 'expo';
以及我如何使用计步器:
Pedometer.isAvailableAsync().then(
result => {
this.setState({
pedometerAvailability: String(result)
});
},
error => {
this.setState({
pedometerAvailability: "No pedometer available: " + error
});
}
);
//start and end times for the day
//Take date by the the diary date
let endDay = new Date(Moment(diaryDate).toDate().valueOf());
let startDay = new Date(Moment(diaryDate).toDate().valueOf());
let today = new Date();
//are we checking today? If not end day should be set as the end of the day
if (today.getDay() !== endDay.getDay()){
this.setTime(endDay, 23, 59, 59);
}
//setting time for startDay
this.setTime(startDay, 0, 0, 0);
//making call
Pedometer.getStepCountAsync(startDay, endDay).then(
result => {
this.setState({
stepCount:result.steps
});
},
error => {
this.setState({
stepCount:"Could not get stepCount:" + error
});
}
);
};
setTime = (date, h, m, s) =>{
date.setHours(h);
date.setMinutes(m);
date.setSeconds(s);
};
根据文档,iOS的行为应类似于Android,但是也许我在某个地方出错了?