Плагин Ionic Health не может подключиться к Google Fit
Я использую Ionic React для создания приложения, которое передает данные о фитнесе пользователя с помощью плагина ionic Cordova health, но, похоже, не работает.
import { Health } from "@ionic-native/health/ngx";
const Tab1: React.FC = () => {
let health = new Health();
const healtChanger = () => {
health.isAvailable()
.then((available:boolean) => {
console.log(health.isAuthorized(['steps']));
if(health.isAuthorized(['steps']))
{
console.log("Already Authorised");
health.queryAggregated({
startDate: new Date(new Date().getTime() - 3 * 24 * 60 * 60 * 1000), // three days ago
endDate: new Date(), // now
dataType: 'steps',
bucket: 'day'
})
.then(res => console.log(res))
.catch(e => console.log(e));
}
else {
health.requestAuthorization([
'distance', 'nutrition', //read and write permissions
{
read: ['steps'], //read only permission
}
])
.then(res => console.log(res))
.catch(e => console.log(e));
}
})
.catch(e => console.log(e));
};
Код, кажется, имеет авторизацию, но когда я пытаюсь выполнить, он выдает ошибку cannot connect to google fit
. Вывод в chrome inspect для устройства Android выглядит следующим образом:
main.871c1aec.chunk.js:1 Promise {<pending>}
main.871c1aec.chunk.js:1 Already Authorised
main.871c1aec.chunk.js:1 Cannot connect to Google Fit
Любая помощь будет принята с благодарностью.
1 ответ
Прежде чем запрашивать доступ к данным о пригодности пользователя из приложения Google fit, вам необходимо получить ключ sha1 вашего debug. keystore
авторизован на странице API Google fit и сгенерирует экран 0auth для запроса доступа. Чтобы получить доступ к api и ключ Shaq, посетите эту страницу Google Fit и выполните указанные ниже действия. После того, как вы авторизовали свой ключ sha1 и имя пакета для получения доступа, теперь вы можете удалить папку ur android из своего проекта, повторно добавить ее и перестроить apk из студии Android, и после развертывания на своем устройстве вам будет предложен правильный доступ Экран авторизации для предоставления доступа, и вы сможете увидеть данные для него.
requestAuthorization()
Метод должен быть вызван перед использованием методов запроса и хранения, даже если авторизация уже была предоставлена в какой-то момент в прошлом. если мы не позвоним им раньше, это может вызвать сбой приложения, а Google Fit выдаст ошибкуcannot connect to google fit
.
В вашем коде внутри оператора if вам нужно вызвать requestAuthorization()
перед health.queryAggregated or health.query
:-
if (health.isAuthorized(["steps"])) {
console.log("Already Authorised");
health.requestAuthorization([
"distance",
"nutrition",
{
read: ["steps", "height", "weight"],
write: ["height", "weight"],
},
])
.then((res) => console.log("response " + res))
.catch((e) => console.log("error " + e));
health.queryAggregated({
startDate: new Date(new Date().getTime() - 3 * 24 * 60 * 60 * 1000),
endDate: new Date(), // now
dataType: 'steps',
bucket: 'day'
})
.then(res => console.log(res))
.catch(e => console.log(e));
} else {
health
.requestAuthorization([
"distance",
"nutrition",
{
read: ["steps"],
write: ["height", "weight"],
},
])
.then((res) => console.log(res))
.catch((e) => console.log(e));
}
})
.catch((e) => console.log(e));
};