Запретить @hmscore показывать начальное всплывающее окно, если на устройстве отсутствует HMS

Я разрабатываю мобильное приложение с React Native.

Приложение готово и готово для платформ iOS и Android. Однако мне нужно реализовать новые функции, чтобы мое приложение работало на устройствах Huawei (которые используют HMS).

В настоящее время я реализую @hmscore/react-native-hms-push. Плагин правильно работает на устройствах Huawei, однако на устройствах Android, таких как Samsung, он вызывает у меня следующую проблему: когда я запускаю свое приложение на Samsung, появляется сообщение о том, что службы HMS не установлены, и спрашивает, если я хотите их установить или нет (да / нет).

Я бы хотел, чтобы это сообщение никогда не появлялось на устройствах сторонних производителей. Пользователь никогда не должен видеть это приглашение и продолжать использовать FCM Push.

На самом деле, если на Samsung установлены службы HMS, у меня возникают проблемы с управлением разными push-токенами и другой логикой.

Как я могу запретить плагину @hmscore отображать это приглашение при запуске приложения?


person shogitai    schedule 05.05.2021    source источник


Ответы (2)


В AndoridManifest.xml (уровень библиотеки, @ hmscore / response-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). В соответствии с тем, что описано в слияние манифеста (разработчик Android), можно переопределите это свойство в AndroidManifest.xml (основной уровень).

Последнее исправление - это фрагмент кода, помещенный в AndroidManifest.xml (основной уровень):

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

Надеюсь, это поможет вам предотвратить появление запроса при запуске приложения.

person speak94    schedule 06.05.2021

Это сообщение отображается потому, что вы вызвали интерфейс HMS на мобильном телефоне GMS. Вы можете использовать сервис HMS на мобильном телефоне GMS. А когда GMS на мобильном телефоне недоступен, вы можете загрузить HMS Core, чтобы сделать эту услугу доступной.

Пожалуйста, обратитесь к этому: Как проверить, включены ли на устройстве мобильные службы Google?

Huawei предоставила несколько плагинов HMS Core kit для React native:

Справочные документы

Плагины Push Kit для React Native

Плагин Huawei Availability React Native обеспечивает возможность обнаружения HMS Core APK на устройствах Android. Если нет, плагин обеспечивает навигацию к AppGallery для установки HMS Core.

Подробнее см. Документы.

person shirley    schedule 06.05.2021