התראות Push של HMS: מדריך אינטגרציה מלא עם זיהוי בזמן ריצה

משתמשים במכשירי Huawei ללא Google Play אינם מקבלים התראות push, מה שגורם לעסקים לאבד חלק מהקהל שלהם. אנו מפתחים אינטגרציה של Huawei Push Kit עם זיהוי בזמן ריצה שמזהה אוטומטית את השירות הזמין ומבטיח מסירת הודעות בכל המכשירים. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת ועד יישום ותמיכה מתמשכת.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
התראות Push של HMS: מדריך אינטגרציה מלא עם זיהוי בזמן ריצה
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

מדריך מלא: התראות Push מאוחדות עם זיהוי HMS ו-GMS

תרחיש נפוץ בפיתוח אפליקציות אנדרואיד לשווקי CIS וסין הוא אובדן של עד 30% מהמשתמשים מכיוון שהתראות push לא עובדות במכשירי Huawei ללא Google Play. שילוב Huawei Push Kit עם זיהוי GMS/HMS בזמן ריצה פותר בעיה זו, וחוסך עד 30% מתקציב ה-push (בדרך כלל $1,500–$3,000 לשילוב, או $2,000 בשנה). יישמנו גישה זו ביותר מ-15 פרויקטים מסחריים — היא מאפשרת לשמור על APK יחיד ומייעלת את התחזוקה. מדריך זה עובר על השלבים המרכזיים: מקביעת השירות הזמין ועד לשליחה מצד השרת ובדיקות.

כיצד פועל זיהוי בזמן ריצה?

ההחלטה המרכזית היא כיצד לטפל בשני התרחישים באפליקציה אחת. ישנן שתי גישות. זיהוי בזמן ריצה בודק בעת ההפעלה אם GMS או HMS זמינים ונרשם לשירות המתאים. שיטה זו מפחיתה את מאמץ התחזוקה פי 2 בהשוואה ל-APK נפרדים.

object PushProvider {
    fun register(context: Context) {
        when {
            isGmsAvailable(context) -> registerFcm()
            isHmsAvailable(context) -> registerHms(context)
            else -> Log.w("Push", "No push service available")
        }
    }

    private fun isGmsAvailable(context: Context): Boolean =
        GoogleApiAvailability.getInstance()
            .isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS

    private fun isHmsAvailable(context: Context): Boolean =
        HuaweiApiAvailability.getInstance()
            .isHuaweiMobileServicesAvailable(context) == ConnectionResult.SUCCESS
}

זיהוי בזמן ריצה מקצר את זמן התחזוקה בחצי בהשוואה למבנים נפרדים — יתרון מוכח מ-15+ פרויקטים. גרסאות נפרדות מכפילות את מאמץ ה-CI/CD.

שלב 1: חיבור HMS SDK

המבנה מקביל ל-FCM: object PushProvider { fun register(context: Context) { when { isGmsAvailable(context) -> registerFcm() isHmsAvailable(context) -> registerHms(context) else -> Log.w("Push", "No push service available") } } private fun isGmsAvailable(context: Context): Boolean = GoogleApiAvailability.getInstance() .isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS private fun isHmsAvailable(context: Context): Boolean = HuaweiApiAvailability.getInstance() .isHuaweiMobileServicesAvailable(context) == ConnectionResult.SUCCESS } הוא האנלוגי של agconnect-services.json. הורידו אותו מ-AppGallery Connect. הניחו אותו בתיקיית google-services.json. הוסיפו את תוסף AGCP ואת תלות ה-push ב-Gradle לפי התיעוד העדכני של HMS.

שלב 2: כיצד להשיג את ה-HMS Token?

צרו מחלקת שירות הודעות:

class HmsPushService : HmsMessageService() {
    override fun onNewToken(token: String?) {
        token ?: return
        ApiClient.registerHmsToken(token, provider = "HMS")
    }

    override fun onMessageReceived(message: RemoteMessage?) {
        message ?: return
        val data = message.dataOfMap
        val title = data["title"] ?: return
        val body = data["body"] ?: return
        NotificationHelper.show(applicationContext, title, body, data)
    }
}

רשמו אותה ב-app/:

<service android:name=".HmsPushService" android:exported="false">
    <intent-filter>
        <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
    </intent-filter>
</service>

שלב 3: קבלת Token ידנית

// Асинхронно через Task API
HmsInstanceId.getInstance(context).getToken(APP_ID, HmsMessaging.DEFAULT_TOKEN_SCOPE)
    .addOnSuccessListener { token ->
        ApiClient.registerHmsToken(token, provider = "HMS")
    }
    .addOnFailureListener { e ->
        Log.e("HMS", "Get token failed: ${e.message}")
    }

class HmsPushService : HmsMessageService() { override fun onNewToken(token: String?) { token ?: return ApiClient.registerHmsToken(token, provider = "HMS") } override fun onMessageReceived(message: RemoteMessage?) { message ?: return val data = message.dataOfMap val title = data["title"] ?: return val body = data["body"] ?: return NotificationHelper.show(applicationContext, title, body, data) } } נלקח מ-AndroidManifest.xml. ה-HMS וה-FCM tokens שונים, ולכן השרת חייב לאחסן את הספק לצד ה-token.

שלב 4: שליחה מצד השרת באמצעות HMS REST API

נקודת קצה: <service android:name=".HmsPushService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT" /> </intent-filter> </service> . אימות דורש OAuth2 Bearer token, המתקבל מ-// Асинхронно через Task API HmsInstanceId.getInstance(context).getToken(APP_ID, HmsMessaging.DEFAULT_TOKEN_SCOPE) .addOnSuccessListener { token -> ApiClient.registerHmsToken(token, provider = "HMS") } .addOnFailureListener { e -> Log.e("HMS", "Get token failed: ${e.message}") } באמצעות APP_ID ו-agconnect-services.json מ-AppGallery Connect. ה-token פג לאחר שעה.

{ "message": { "data": "{\"title\":\"Новое сообщение\",\"body\":\"Иван написал вам\"}", "token": ["hms_device_token_here"], "android": { "notification": { "title": "Новое сообщение", "body": "Иван написал вам", "click_action": { "type": 1, "intent": "myapp://message?id=123" } } } } } 

לפי Huawei, Push Kit מעביר יותר מ-99% מההודעות תוך 30 שניות במכשירים עם HMS Core.

שלב 5: טיפול בהתראות ברקע

HMS תומך בשני סוגי הודעות: תצוגה (מוצגות על ידי המערכת) ונתונים (בלתי נראות למשתמש). עבור הודעות נתונים ברקע, הגדירו https://push-api.cloud.huawei.com/v1/{appId}/messages:send ב-payload. זה מאפשר ל-https://oauth-login.cloud.huawei.com/oauth2/v3/token לקבל הודעות גם לאחר סגירת האפליקציה.

שלב 6: בדיקות על מכשירים

בדקו על מכשיר Huawei פיזי ללא GMS או על אמולטור מ-Huawei DevEco Studio. ב-AppGallery Connect → Push Kit → Test, השתמשו בממשק המובנה לשליחת push לבדיקה ל-token ספציפי. כמו כן, ודאו עיבוד הודעות נתונים כשהאפליקציה ברקע.

מלכודות נפוצות ופתרונותיהן

בעיה השלכה פתרון
APP_ID שגוי Token לא נוצר בדקו את agconnect-services.json
חסר OAuth2 token בקשות שרת מחזירות 401 הגדירו client_secret בקצה האחורי
HmsMessageService לא רשום Push לא מתקבל ברקע הוסיפו שירות ל-manifest עם intent filter נכון
intent שגוי ב-click_action ההתראה פותחת אקטיביטי שגוי ודאו את פורמט ה-intent URI

השוואה בין תכונות FCM ו-HMS

פרמטר FCM HMS Push Kit
מכשירים נתמכים כל אנדרואיד עם GMS Huawei/Honor ללא GMS (100M+ מכשירים)
SDK client_id client_secret
קובץ הגדרות { "message": { "data": "{\"title\":\"Новое сообщение\",\"body\":\"Иван написал вам\"}", "token": ["hms_device_token_here"], "android": { "notification": { "title": "Новое сообщение", "body": "Иван написал вам", "click_action": { "type": 1, "intent": "myapp://message?id=123" } } } } } com.google.firebase:firebase-messaging
REST API Firebase Admin SDK HMS REST + OAuth2
תמיכה בנושאים כן כן (HMS Topics)
דגל push שקט com.huawei.hms:push google-services.json
עלות תשלום לפי שימוש חינם (עם AppGallery) – זול פי 3 משירותי צד שלישי

תוצרי שילוב ולוחות זמנים אופייניים

שילוב בסיסי של HMS Push Kit אורך יום אחד. עם זיהוי GMS/HMS בזמן ריצה, מחזור חיים מלא של token ושליחה מצד השרת — יומיים. התוצרים כוללים:

  • רישום ב-AppGallery Connect, הגדרת Push Kit
  • agconnect-services.json וחיבור HMS SDK
  • content_available: true עם טיפול בהודעות נתונים
  • זיהוי GMS/HMS בזמן ריצה ורישום
  • עדכון token בשרת עם ציון ספק
  • שליחה מצד השרת באמצעות HMS REST API (או שילוב עם ספק כמו OneSignal)
  • בדיקות על מכשיר HMS פיזי

עם ניסיון מוסמך של למעלה מ-5 שנים בשילוב push ו-15+ פרויקטים מוצלחים, אנו מבטיחים הגדרה אמינה המותאמת לקהל שלכם.