שילוב Google Fit לנתוני בריאות באנדרואיד

משתמשים מצפים שהאפליקציה תאסוף צעדים, קלוריות ודופק לבד, אך ללא אינטגרציה עם פלטפורמות כושר, יש להזין נתונים ידנית. אנו מטמיעים את Google Fit ו-Health Connect באפליקציית האנדרואיד שלך, ומטפלים בכל המחזור מהגדרת OAuth ועד תמיכה ב-Wear OS. הצוות שלנו מספק אינטגרציה מלאה עם תמיכה מתמשכת, כך שאתה מקבל פתרון אמין שגדל עם העסק שלך.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב Google Fit לנתוני בריאות באנדרואיד
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

אפליקציה ללא אינטגרציה עם פלטפורמת כושר מאבדת מחצית מהתרחישים שלה. משתמשים מצפים לאיסוף אוטומטי של צעדים, קלוריות, דופק, אך ללא Google Fit או Health Connect, יש להזין נתונים ידנית. אנו משלבים את Google Fit (ו-Health Connect כגיבוי) באפליקציית האנדרואיד שלך תוך 4–14 ימי עבודה — פרויקט מפתח, עם טיפול מלא ב-OAuth, הסרת כפילויות, ותמיכה ב-Wear OS. לצוות שלנו ניסיון רב בפיתוח אנדרואיד ויותר מ-40 פרויקטי אינטגרציית כושר מוצלחים.

Google Fit API קיים מאז הקמתו וכיום נמצא במצב של "עובד, אבל עדיף לעבור ל-Health Connect". Google ממליצה רשמית לעבור ל-Health Connect עבור פרויקטים חדשים. עם זאת, Google Fit נשאר רלוונטי עבור מכשירים עם אנדרואיד 8–13 ללא תמיכה ב-Health Connect, עבור אפליקציות Wear OS, ועבור פרויקטים עם בסיס משתמשים קיים.

Google Fit REST API לעומת Fitness API

שתי נקודות כניסה שונות מהותית:

Android Fitness API (com.google.android.gms:play-services-fitness) — SDK מקורי ב-Java/Kotlin, עובד דרך Google Play Services, דורש OAuth 2.0 עם חשבון Google.

Google Fit REST API — HTTP API, מתאים לצד שרת ול-Flutter/React Native, אך דורש ניהול מותאם אישית של טוקני OAuth.

לאנדרואיד מקורי — תמיד ה-Fitness API. REST הגיוני רק אם יש צורך בנתונים בקצה האחורי ללא מעורבות מכשיר נייד.

כיצד אנו משלבים את Google Fit

אנו משתמשים בטכנולוגיות: Kotlin, Jetpack Compose, Hilt ל-DI, Google Sign-In ל-OAuth. בשלב הראשון, אנו מנתחים את דרישות הנתונים: אילו סוגים (צעדים, דופק, קלוריות), האם יש צורך באגרגציה לפי זמן, האם נדרשת הרשמה לנתונים חיים. לאחר מכן אנו מתכננים את הארכיטקטורה תוך התחשבות בהסרת כפילויות וטיפול בשגיאות. אנו מיישמים קריאת נתונים היסטוריים דרך HistoryClient והרשמה דרך SensorsClient (לחזית) או RecordingClient (מעקב ברקע). כל הבקשות עטופות בפונקציות suspend עם coroutines לאסינכרוניות.

לדוגמה, באפליקציית מעקב בריאות עדכנית, צמצמנו את סנכרון הנתונים מ-8 שניות ל-1.2 שניות על ידי אופטימיזציה של שאילתות android.permission.ACTIVITY_RECOGNITION ויישום מטמון עבור דליים שנגישים לעתים קרובות.

למה לבחור ב-Health Connect לפרויקטים חדשים

Health Connect היא פלטפורמת Google מחודשת להחלפת נתוני בריאות בין אפליקציות. בניגוד ל-Google Fit, היא לא קשורה לחשבון Google, עובדת מקומית על המכשיר, ונותנת למשתמש יותר שליטה על אילו אפליקציות קוראות סוגי נתונים ספציפיים. עבור אנדרואיד 14+ היא זמינה כברירת מחדל, עבור גרסאות ישנות יותר — דרך התקנת APK נפרדת.

תכונה Google Fit Health Connect
תלות בחשבון Google כן לא
גרסת אנדרואיד מינימלית 8.0 8.0 (עם APK) / 14+ (מובנה)
הסרת כפילויות חלקית מובנית
תמיכה ב-Wear OS כן כן
המלצת Google גיבוי טכנולוגיה ראשית

אנו מבטיחים תאימות לשתי הגישות ועוזרים ללקוחות לבחור את אסטרטגיית המעבר האופטימלית לקהל שלהם.

הרשאות ו-OAuth: מקור הבעיות העיקרי

Google Fit דורש שתי רמות של הרשאות:

  1. הרשאת אנדרואיד: FITNESS_ACTIVITY_READ (מאז אנדרואיד 10)
  2. היקף OAuth: FITNESS_BODY_READ, FITNESS_LOCATION_READ, val fitnessOptions = FitnessOptions.builder() .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ) .build() val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions) if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) { GoogleSignIn.requestPermissions( this, GOOGLE_FIT_REQUEST_CODE, account, fitnessOptions ) } וכו'.

אם אתה מבקש הרשאת אנדרואיד אך לא משיג את היקף ה-OAuth, ה-Fitness API יחזיר נתונים ריקים ללא שגיאה. זהו כשל שקט שקשה לזהות.

val fitnessOptions = FitnessOptions.builder()
    .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
    .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
    .build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
    GoogleSignIn.requestPermissions(
        this,
        GOOGLE_FIT_REQUEST_CODE,
        account,
        fitnessOptions
    )
}

אם משתמש מבטל הרשאה דרך הגדרות חשבון Google (לא דרך הגדרות אנדרואיד), hasPermissions() יחזיר false בהפעלה הבאה. יש לטפל בזה — ללא לוגיקת ניסיון חוזר, האפליקציה פשוט תפסיק לקבל נתונים.

קריאת נתונים: HistoryClient ו-SensorsClient

נתונים היסטוריים (צעדים, קלוריות)

val readRequest = DataReadRequest.Builder()
    .read(DataType.TYPE_STEP_COUNT_DELTA)
    .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
    .bucketByTime(1, TimeUnit.DAYS)
    .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
    .build()
Fitness.getHistoryClient(context, account)
    .readData(readRequest)
    .addOnSuccessListener { response ->
        response.buckets.forEach { bucket ->
            val steps = bucket.dataSets
                .flatMap { it.dataPoints }
                .sumOf { it.getValue(Field.FIELD_STEPS).asInt() }
        }
    }

val readRequest = DataReadRequest.Builder() .read(DataType.TYPE_STEP_COUNT_DELTA) .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA) .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build() Fitness.getHistoryClient(context, account) .readData(readRequest) .addOnSuccessListener { response -> response.buckets.forEach { bucket -> val steps = bucket.dataSets .flatMap { it.dataPoints } .sumOf { it.getValue(Field.FIELD_STEPS).asInt() } } } היא השיטה המרכזית לאגרגציה. בלעדיה, הבקשה מחזירה כל צעד בודד מכל מקור (טלפון + שעון + צמיד), מה שיכול להיות כמה אלפי רשומות ביום.

נתונים בזמן אמת

bucketByTime להרשמה לנתונים חיים:

Fitness.getSensorsClient(context, account)
    .add(
        SensorRequest.Builder()
            .setDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE)
            .setSamplingRate(10, TimeUnit.SECONDS)
            .build(),
        onDataPointListener
    )

מנוי זה פעיל רק בזמן שהאפליקציה בחזית. למעקב ברקע — SensorsClient, ש-Google Fit צובר בעצמו.

הסרת כפילויות מנתונים ממקורות מרובים

זו בעיה אמיתית: אם למשתמש יש Apple Watch (דרך Health) + Google Fit בטלפון אנדרואיד + Samsung Health, הצעדים מוכפלים ומשולשים. Google Fit פותר זאת חלקית דרך Fitness.getSensorsClient(context, account) .add(SensorRequest.Builder() .setDataType(DataType.TYPE_STEP_COUNT_CUMULATIVE) .setSamplingRate(10, TimeUnit.SECONDS) .build(), onDataPointListener ) — לכל נקודת נתונים יש מקור (RecordingClient.subscribe()). סינון לפי DataSet.getDataSources() מאפשר לקחת נתונים רק ממכשיר ספציפי.

אין הסרת כפילויות אמינה לחלוטין — זו בעיה ידועה במערכת האקולוגית. אנו מתעדים פערים צפויים עבור הלקוח ובונים את ממשק המשתמש כך שהמשתמש יוכל לבחור את מקור העדיפות.

מעבר ל-Health Connect

עבור מכשירים חדשים (אנדרואיד 14+), Google Fit מוגדר כמיושן ברמת ההמלצה. אסטרטגיה: בדוק זמינות של Health Connect; אם זמין, השתמש בו; גיבוי ל-Google Fit עבור מכשירים ישנים יותר:

val healthConnectAvailable = HealthConnectClient.getSdkStatus(context) == HealthConnectClient.SDK_AVAILABLE 

מה כלול

  • עיצוב ארכיטקטוני: בחירת גישה (Fitness API / REST / Health Connect)
  • יישום אימות OAuth וטיפול בביטול הרשאות
  • פיתוח קוד קריאה/כתיבת נתונים (צעדים, קלוריות, דופק וכו')
  • תמיכה ב-Wear OS אם נדרש
  • הסרת כפילויות מנתונים ממקורות מרובים
  • בדיקות על מכשירים אמיתיים עם גרסאות אנדרואיד שונות
  • תיעוד תצורת API ו-OAuth
  • תמיכה במהלך פרסום בחנות (App Store Review Guidelines, Google Play Console)

לוחות זמנים

אינטגרציית Google Fit בסיסית (צעדים, מרחק, קלוריות) — 4–7 ימי עבודה. עם תמיכה ב-Health Connect, הסרת כפילויות ו-Wear OS — 2–4 שבועות. צור קשר כדי להעריך את הפרויקט שלך — נבחר את הגישה האופטימלית.

Google Fit API reference