【问题标题】:Prevent @hmscore to show initial popup if missing HMS on device如果设备上缺少 HMS,则防止 @hmscore 显示初始弹出窗口
【发布时间】:2021-07-27 12:19:59
【问题描述】:

我正在开发一个带有 react native 的移动应用程序。

该应用已针对 iOS 和 Android 平台准备就绪并完成。但是,我必须实现新功能才能使我的应用在华为设备(使用 HMS)上运行。

我目前正在实施@hmscore/react-native-hms-push。该插件在华为设备上正常工作,但是在三星等安卓设备上,它给我带来了以下问题:当我在三星上启动我的应用程序时,出现一个提示,告诉我 HMS 服务未安装,并询问我是否是否要安装它们(是/否)。

我希望此提示永远不会出现在非华为设备上。用户应该永远不会看到此提示并继续使用 FCM Push。

事实上,如果三星上安装了 HMS Services,我在管理不同的 Push Token 和其他逻辑时会遇到问题。

如何防止@hmscore插件在启动App时出现这个提示?

【问题讨论】:

    标签: android react-native mobile huawei-mobile-services


    【解决方案1】:

    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(主级别)中覆盖此属性。

    最后的解决方法是将此代码 sn-p 放入 AndroidManifest.xml(主级别):

            <meta-data
                    tools:replace="android:value"
                    android:name="push_kit_auto_init_enabled"
                    android:value="false" />
    

    希望这可以帮助您防止在应用启动时出现提示。

    【讨论】:

      【解决方案2】:

      显示这个提示是因为你在GMS手机上调用了HMS接口。您可以在GMS手机上使用HMS服务。当手机上的GMS不可用时,您可以下载HMS Core使该服务可用。

      请参考:How to check Google Mobile Services enable in device or not?

      华为为 React native 提供了一些 HMS Core 套件插件:

      Reference documents

      Push Kit plugins for React Native

      Huawei Availability React Native Plugin 提供了在安卓设备上检测HMS Core APK 的能力。如果没有,插件会提供导航到 AppGallery 以安装 HMS Core。

      详情可关注Docs

      【讨论】:

        猜你喜欢
        • 2018-06-22
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2014-05-13
        • 2018-04-23
        • 1970-01-01
        • 2017-10-19
        • 2017-02-20
        相关资源
        最近更新 更多