Я создаю приложение, использующее Healthkit. Когда я запускаю приложение, я получаю сообщение об ошибке TypeError: Cannot read property 'health' of null
. Я попытался сделать navigator.health, но получил сообщение об ошибке, что здоровье не существует в навигаторе. Я предполагаю, что это довольно простая проблема, чтобы исправить, как мне правильно вызвать здоровье в этом случае?
import { Component } from '@angular/core';
import { Platform } from "@ionic/angular";
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { Health } from '@ionic-native/health/ngx';
declare var shake;
var min_speed = 0.2;
@Component({
selector: 'app-motion-analysis',
templateUrl: './motion-analysis.page.html',
styleUrls: ['./motion-analysis.page.scss'],
})
export class MotionAnalysisPage {
constructor(public platform: Platform, private health: Health){}
ionViewDidEnter() {
this.platform.ready().then(() => {
this.health.isAvailable()
.then((available:boolean) => {
console.log(available);
this.health.requestAuthorization([
{
read: ['steps'], //read only permission
}
])
.then(res => console.log(res))
.catch(e => console.log(e));
})
.catch(e => console.log(e));
function onShake() {
console.log("shake")
navigator.geolocation.getCurrentPosition(onSuccess, onError, {
maximumAge: 1000,
timeout: 10000,
enableHighAccuracy : true,
});
function onSuccess(position){
if(position.coords.speed > min_speed){
this.health.query({
startDate: new Date(new Date().getTime() - 10*1000 ), // ten sec ago
endDate: new Date(), // now
dataType: 'steps',
limit: 1000
}).then(data=>{
console.log(data);
}).catch(e => {
console.log("error "+ e);
})
}
}
};
function onError(err) {
console.log(err)
};
// Start watching for shake gestures and call "onShake"
shake.startWatch(onShake, 5, onError);
})
}
}
edit, ссылка на учебник, и я имею в виду this.health.query({
, упоминая для краткости. Я не получаю эту ошибку, если не включаю этот раздел кода.
edit2: Решено, просто нужно было сохранить его значение с помощью стрелочных функций или новой переменной.