[一応解決]com.google.android.gms.common.api.ApiException: 5000でハマった件
AndroidのFitnessAPIを使ってヒヨコ歩数計を作成する中で、どうしても失敗するところがあり、とりあえず暫定対応で解決したので備忘
エラー内容
com.google.android.gms.common.api.ApiException: 5000: Application needs OAuth consent from the user
歩数取得の前で認証がうまくいってない模様だが、ググっても全く出てこず。。。
ステータスコード5000を調べてみると何となくそれっぽい一覧に到着する↓
GoogleのFitnessStatusCodes
https://developers.google.com/android/reference/com/google/android/gms/fitness/FitnessStatusCodes#public-static-final-int-success_no_data_sources
原文
The subscribe request succeeded, but no data sources are currently available that match it. Recording of data will start when data sources become available.」
翻訳文
サブスクライブリクエストは成功しましたが、それに一致するデータソースは現在利用できません。 データソースが利用可能になると、データの記録が開始されます。
解決方法
結局エラーの意味はわからず色々試行錯誤した結果、FitnessAPI用のライブラリのバージョンを落とすことで解決
build.gradleのdependenciesの修正
修正前
「implementation ‘com.google.android.gms:play-services-fitness:20.0.0’」
修正後
「implementation ‘com.google.android.gms:play-services-fitness:18.0.0‘」
既存コードの修正
20.0.0では非推奨になっていたが、18.0.0では使用できないので以下のように修正
20.0.0(修正前)
DataReadRequest.Builder() .aggregate(DataType.TYPE_STEP_COUNT_DELTA) .aggregate(DataType.TYPE_DISTANCE_DELTA) .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build()
18.0.0(修正後)
DataReadRequest.Builder() .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) .aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA) .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build()
お知らせ
ヒヨコ歩数計という歩きながらヒヨコが育っていくアプリを作って、いろんな方に結構使ってもらっています。RealmSwift, Admobの動画・インステ・バナー広告、UICollectionView、iOS-Charts、UITableViewを使用しているので、是非ご利用ください!