如果设备上缺少 HMS,防止@hmscore 显示初始弹出窗口
Prevent @hmscore to show initial popup if missing HMS on device
我正在使用 React Native 开发移动应用程序。
该应用程序已准备就绪并已完成 iOS 和 Android 平台。但是,我必须实现新功能才能使我的应用程序在华为设备(使用 HMS)上运行。
我目前正在实施 @hmscore/react-native-hms-push
。该插件在华为设备上正常工作,但是,在 Android 设备上,例如三星,它导致我出现以下问题:当我在三星上启动我的应用程序时,出现提示,告诉我 HMS 服务未安装并且它询问我是否要安装它们 (Yes/No)。
我希望这个提示永远不会出现在非华为设备上。用户应该永远不会看到此提示并继续使用 FCM 推送。
事实上,如果在三星上安装了 HMS 服务,我在管理不同的 Push Token 和其他逻辑时会遇到问题。
如何防止@hmscore
插件在启动应用程序时显示此提示?
出现这个提示是因为你在GMS手机上调用了HMS接口phone。您可以在GMS手机phone.And上使用HMS服务,当手机phone上的GMS不可用时,您可以下载HMS Core来使用该服务。
请参考:How to check Google Mobile Services enable in device or not?
华为已经为React native提供了部分HMS Core kit插件:
Push Kit plugins for React Native
Huawei Availability React Native Plugin 在android台设备上提供HMS Core APK检测能力。如果没有,插件提供导航到AppGallery以安装HMS Core。
详情可以关注Docs.
在AndoridManifest.xml(库级别,@hmscore/react-native-hms-push)你会发现如下代码片段:
<application>
<service android:name="com.huawei.hms.rn.push.services.MessagingHeadlessService" />
<service
android:name="com.huawei.hms.rn.push.remote.HmsPushMessageService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
</application>
改变这个:
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
对此:
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="false" />
提示消失。但是,这是在库级别(在 node_modules 内)进行的更改。根据 manifest merge(Android Developer) 中的描述,可以在 AndroidManifest.xml(主级别)中覆盖此 属性。
最终修复是将此代码片段放入 AndroidManifest.xml(主要级别):
<meta-data
tools:replace="android:value"
android:name="push_kit_auto_init_enabled"
android:value="false" />
希望本文能帮助您避免应用程序启动时出现提示。
我正在使用 React Native 开发移动应用程序。
该应用程序已准备就绪并已完成 iOS 和 Android 平台。但是,我必须实现新功能才能使我的应用程序在华为设备(使用 HMS)上运行。
我目前正在实施 @hmscore/react-native-hms-push
。该插件在华为设备上正常工作,但是,在 Android 设备上,例如三星,它导致我出现以下问题:当我在三星上启动我的应用程序时,出现提示,告诉我 HMS 服务未安装并且它询问我是否要安装它们 (Yes/No)。
我希望这个提示永远不会出现在非华为设备上。用户应该永远不会看到此提示并继续使用 FCM 推送。
事实上,如果在三星上安装了 HMS 服务,我在管理不同的 Push Token 和其他逻辑时会遇到问题。
如何防止@hmscore
插件在启动应用程序时显示此提示?
出现这个提示是因为你在GMS手机上调用了HMS接口phone。您可以在GMS手机phone.And上使用HMS服务,当手机phone上的GMS不可用时,您可以下载HMS Core来使用该服务。
请参考:How to check Google Mobile Services enable in device or not?
华为已经为React native提供了部分HMS Core kit插件:
Push Kit plugins for React Native
Huawei Availability React Native Plugin 在android台设备上提供HMS Core APK检测能力。如果没有,插件提供导航到AppGallery以安装HMS Core。
详情可以关注Docs.
在AndoridManifest.xml(库级别,@hmscore/react-native-hms-push)你会发现如下代码片段:
<application>
<service android:name="com.huawei.hms.rn.push.services.MessagingHeadlessService" />
<service
android:name="com.huawei.hms.rn.push.remote.HmsPushMessageService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
</application>
改变这个:
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="true" />
对此:
<meta-data
android:name="push_kit_auto_init_enabled"
android:value="false" />
提示消失。但是,这是在库级别(在 node_modules 内)进行的更改。根据 manifest merge(Android Developer) 中的描述,可以在 AndroidManifest.xml(主级别)中覆盖此 属性。
最终修复是将此代码片段放入 AndroidManifest.xml(主要级别):
<meta-data
tools:replace="android:value"
android:name="push_kit_auto_init_enabled"
android:value="false" />
希望本文能帮助您避免应用程序启动时出现提示。