Я работал над кроссплатформенным приложением, созданным с Expo, и у меня были проблемы с шагомером в iOS. Он отлично работает на Android, но на iOS, хотя он запрашивает разрешения, он не может получить значения с отклонением обещания.
Я попытался вернуться к документам, чтобы увидеть, были ли изменения, которые мне нужно внести. Документы действительно изменились для импорта из экспо-датчиков вместо экспо.
Я попробовал это, это не меняет отказ от обещания на iOS. Кроме того, использование этого импорта выдает ошибку для Android, что использование дат еще не было реализовано.
Я проверил документацию по экспо-датчикам, а автономные экспо-датчики устарели и являются частью основной ветви, хотя в экспо-документах говорят, что теперь нужно использовать этот импорт. Кроме того, вы получаете те же ошибки в примерах кода в документах на их эмуляторе, но я не могу найти никаких замечаний о сломанной 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 согласно документам, но, может быть, я где-то ошибаюсь?