Skip to main content

ماژول HMS پوشه

v2.4.0

مقدمه

همانطور که می‌دانیم پوشه برای ارسال نوتیفیکیشن به دستگاه اندرویدی از Firebase (Google play services) استفاده می‌کند.

مدتی‌ست برخی برندها همچون هواوی به دلیل تحریم توسط گوگل دیگر امکان استفاده از Google services را ندارند.

با توجه به اینکه Google play services در این گوشی‌ها وجود ندارد، فایربیس نیز کار نخواهد کرد و امکان ارسال پوش از طریق پوشه با استفاده از فایربیس به این دستگاه‌ها ممکن نخواهد بود.

HMS

هواوی از سرویسی به نام HMS (Huawei mobile services) برای رفع این کمبود استفاده می‌کند. مجموعه‌ی HMS دارای سرویسی به نام PushKit است که مشابه Firebase cloud messaging مسئولیت ارسال پوش‌نوتیفیکیشن به دستگاه را بر عهده دارد.

note

لایبرری پوشه در نسخه‌ی ۲.۳.۰ سرویس ارسال نوتیفیکیشن فایربیس را بعنوان یک ماژول جدا استفاده می‌کند (pushe:fcm).

در نسخه‌ی ۲.۴.۰ نیز ماژول جدیدی به نام hms به مجموعه اضافه‌شد. این ماژول مسئولیت ارسال پوشه به دستگاه‌هایی که GPlay ندارند اما در عوض HMS Core (مشابه Google play services برای HMS) دارند، را بعهده دارد.

نحوه‌ی کار Hms و Fcm

پوشه هنگام رجیستر وجود Google play services و Hms Core را بررسی کرده و هر کدام که ممکن باشد بعنوان سرویس دریافت پوش‌نوتیفیکیشن استفاده خواهد شد. (در صورتی که هردو موجود باشند، اولویت قابل تغییر است و پیش‌فرض با fcm خواهد بود)

افزودن ماژول

در کنار ماژول base برای استفاده از سرویس هواوی در پوشه بایستی ماژول hms را نیز اضافه کنید.

project/build.gradle
allprojects {
repositories {
// Needed for Huawei libraries
maven {url 'https://developer.huawei.com/repo/'}
}
}
app/build.gradle
dependencies {
def pushe_version = '2.5.0'
implementation("co.pushe.plus:hms:$pushe_version")
}

Pushe_Token و Huawei appid

برای استفاده از سرویس فایربیس پوشه بایستی در مانیفست pushe_token قرارداده شود و این کلید برای تمامی حالات نیاز است. اطلاعات بیشتر

برای استفاده از سرویس پوشه در گوشی‌های هواوی (وابسته به HMS) نیاز به کلیدی به نام appid دارید.

بدست آوردن کلید appid برای هواوی

در حال حاضر کنسول هواوی برای کاربران ایرانی قابل استفاده نیست و برای ثبت نام نیاز به شماره تلفن غیرایرانی دارید. به همین دلیل برای استفاده از سرویس هواوی در پوشه بایستی به پشتیبانی پوشه (hi [at] pushe.co) ایمیل بزنید و کلید مورد نظر را دریافت کنید.

هنگام درخواست موارد زیر را بایستی ضمیمه کنید:

  • مطابق این آموزش هش SHA-256 مربوط به SignKey اپلیکیشن را تولید کنید.

  • Package name برنامه

افزودن Manifest

AndroidManifest.xml
<manifest>

<application>

<!-- Pushe TOKEN -->
<meta-data
android:name="pushe_token"
android:value="${PUSHE_TOKEN}" />

<!-- HMS -->

<meta-data
android:name="com.huawei.hms.client.appid"
android:value="appid=${app_id}" />
</application>

</manifest>

به جای ${PUSHE_TOKEN} توکن پوشه را قرار داده و به جای ${app_id} نیز app id پروژه‌ی هواوی را قرار دهید.

اجرای برنامه

پس از انجام موارد لازم،‌ برنامه را اجرا کنید و لاگ‌کت را بررسی کنید.

تست روی گوشی هواوی

برای اینکه رجیستریشن هنگام اجرای برنامه انجام گیرد نیاز است که آن‌را با کلیدی که ثبت کردید امضا کنید (در حالت دیباگ از این کلید استفاده نمی‌شود)

پرمیشن REQUEST_INSTALL_PACKAGES در نسخه‌ی 2.5.0

در صورت استفاده از ماژول hms پرمیشن REQUEST_INSTALL_PACKAGES به برنامه اضافه خواهد شد.
این پرمیشن توسط لایبرری huawei-pushkit به برنامه اضافه می‌شود و درنسخه‌ی 2.4.2 از ماژول برداشته خواهد شد.

در صورتی که مارکت مورد هدف از این پرمیشن ایراد گرفت می‌توانید آنرا از مانیفست اصلی حذف کنید

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove"/>

نکته: آیا حذف این پرمیشن مشکلی ایجاد می‌کند؟ خیر (پاسخ توسعه‌دهنده‌ی هواوی در استک‌اور‌فلو)

  • دلیل اضافه‌شدن این پرمیشن چیست؟ ماژول pushkit نیاز به HMS-Core دارد. در صورتی که این اپلیکیشن وجود نداشته باشد این پرمیشن به نصب این اپلیکیشن کمک خواهد کرد.