Monacaを使っていて、Android向けにGoogleFitで歩数を取得する方法について、あれやこれやと調べてようやくうまく動きました。しかも、途中からは動いているのにそれと気づかず時間を沢山使ってしまったので、こちらでその手順についてまとめておきます。
■dariosalvi78/cordova-plugin-health を読み込む
https://github.com/dariosalvi78/cordova-plugin-health
色々試してみた結果、こちらのプラグインで上手くいきました。
Monacaの「設定」>「Cordova Pluginの管理」>「Cordvaプラグインのインポート」を使って、URLに「https://github.com/dariosalvi78/cordova-plugin-health」を入力して「OK」を押してください、プラグインがプロジェクトに読み込まれます。
■config.xmlに記述を追加します。
<!-- Health plugin -->
<plugin name="cordova-plugin-health" source="npm">
<variable name="HEALTH_READ_PERMISSION" value="App needs read access"/>
<variable name="HEALTH_WRITE_PERMISSION" value="App needs write access"/>
<variable name="GMS_VERSION" value="16.0.1"/>
</plugin>
■歩数を取得するプログラムコードを記述(呼び出し部)
navigator.health.promptInstallFit(
function (data) {
navigator.health.requestAuthorization([
{
read: ['steps']
}
],
function (data) {
navigator.health.queryAggregated({
startDate: new Date(new Date().getTime() - 27 * 24 * 60 * 60 * 1000),
endDate: new Date(),
dataType: 'steps',
bucket: 'day'
}, query1monthSuccessCallback, quesryErrorCallback);
},
function (err) {
ons.notification.alert({
title: 'エラー', message: '歩数を取得する権限が許可されていません。',
callback: function (index) {
}
});
}
);
},
function (err) {
//alert("この端末に、GoogleFitがインストールされていません。歩数の連携を行うにはGoogleFitアプリをインストールしてください。"+err);
ons.notification.alert({
title: 'エラー', message: 'この端末に、GoogleFitがインストールされていません。歩数の連携を行うにはGoogleFitアプリをインストールしてください。',
callback: function (index) {
}
});
}
);
■歩数を取得するプログラムコードを記述(コールバック関数)
var query1monthSuccessCallback = function (msg3) {
//alert("1ヶ月:" + JSON.stringify(msg3))
var total = 0;
for (var i = msg3.length - 1; i >= 0; i--) {
//alert(i)
if (msg3[i]) {
if (msg3[i].value) {
total = total + msg3[i].value;
}
}
// 繰り返し処理
if (i == (msg3.length - 1)) {
$('#stepToday').text(total.toFixed(1));
} else if (i == (msg3.length - 14)) {
$('#step2week').text((total / 14).toFixed(1));
}
}
$('#step1month').text((total / (msg3.length)).toFixed(1));
updateStepCount(false);
}
var errorCallback = function (msg) {
//何もしない
};
お世話になります。
monacaでGoogleFit連携を調べていてこちらに辿り着きました。
公開いただいている内容を試したのですが、「navigator.health.requestAuthorization」を実行するとエラー関数のほうが実行され、「User cancelled the dialog」のメッセージが帰ってきました。
何かご存知でしたら内容を補足していただければ幸いです。