React Native 在华为手机上是否可以在没有 Google 服务的情况下工作?

20
很快新的华为手机将停止支持谷歌播放和谷歌移动服务。
华为正在准备自己的生态系统,称为HMS https://developer.huawei.com/consumer/en/service/hms/developer.html
他们的应用商店被称为“华为应用商店”,文档在这里:https://developer.huawei.com/consumer/en/doc/30202
他们现在正在向开发人员(包括我在内)发送消息,鼓励他们将应用发布到他们的商店。他们声称只需要一个APK文件,不需要对应用程序进行任何更改。
我的问题是:
  • React Native应用是否能够无需代码更改地正常运行?
  • Firebase SDK是否可用?
  • 在另一个Android生态系统中维护应用程序的真正隐藏成本是什么?
3个回答

11
华为已经发布了华为移动服务,并正在逐步更新其服务以与谷歌和苹果密切匹配。至于你提出的问题:
  1. React Native应用程序是否需要更改代码才能工作?

是的,只要您可以生成一个apk文件上传到他们的华为应用商店即可。您无需进行任何代码更改。

  1. Firebase SDK会工作吗?

这取决于您尝试将哪种类型的服务纳入您的应用程序中。例如,如果您想使用Firebase提供的身份验证模块进行Google登录,则仅不支持不包括GMS(Google移动服务)的手机,例如华为Mate 30 Pro。

但是,如果您正在查看通知。 Google有Firebase云消息传递,华为有其华为推送通知。您可以使用其中任何一个,这取决于后端服务架构并将在所有Android设备上受到支持。

  1. 在其他Android生态系统中维护应用程序的真实隐藏成本是什么?

这完全取决于您如何设计系统以及应用程序所需的服务。假设您希望将华为登录纳入到应用程序中,您还需要包含HMS,但这些服务将维护在华为应用商店中,而对于Google,您已经实现了FCM、Google登录和地图。那么,您将不得不维护两个不同的分支,它们共享共同的核心功能,这需要时间和费用。

如果应用程序只使用纯粹基于逻辑的最基本功能,非常少或根本没有GMS/HMS,则您无需为项目维护单独的分支,只需要一个分支即可。您只需要向您的Google Play发布和华为应用商店提交版本。

如果您想为GMS和HMS使用一个单一的存储库,则必须检查可用的服务以启用功能。

对于GMS

val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)

为HMS

val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)

因此,在尝试使用Google登录、华为登录或任何其他服务时,应该这样做。

if gmsAvailable {
   // execute GMS Code
} else if hmsAvailable {
   // execute HMS Code
}

注意* 上面的代码是用 Kotlin 编写的


对于第二个问题,如果我的应用程序目前在Play Store中使用FCM进行推送通知,如果我将相同的APK上传到华为应用商店,FCM是否仍然有效? - Compaq LE2202x
不,FCM在HMS设备上无法使用。您需要使用此ReactNative插件来实现HMS推送通知:https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides-V1/integraternmodule-0000001050157791-V1 - Adi B

3
华为已开始构建 HMS 生态系统,使顶级应用程序在其新设备上无需访问 GMS(例如 Mate 30 和 P40 设备),从而提高这些设备的用户体验。建议如果设备有GMS访问权限,则使用GMS,否则使用HMS。
至于您的问题:
1. 如果 React-Native 应用程序没有进行代码更改是否可行?
如果您的应用程序使用任何针对 React Native 的 GMS 插件,例如 Google Sign-in 和 Firebase Cloud Messaging,则您的应用程序可能无法在没有访问 GMS 的设备上正常工作。因此,您需要对应用程序进行一些代码更改。 华为已为 React Native 提供了一些 HMS Core kit 插件。有关详细信息,请访问以下链接:

Firebase SDK 能用吗?

这取决于您使用哪个 GMS 服务。例如,如果您的应用程序使用了 GMS 的推送通知/位置/地图服务,则您的应用程序可能无法正常工作。在这种情况下,您需要使用相关的 HMS SDK。您可以选择要使用的 HMS Core 服务。

3.

在另一个 Android 生态系统中维护应用程序的隐藏成本是什么?

确实有一些隐藏的工作量,例如维护代码、将您的应用程序发布到 HUAWEI AppGallery 并修改 GMS 和 HMS 来提供新功能。当然,这取决于您的应用程序的复杂程度。如果您的应用程序使用了许多 GMS 服务,则工作量相对较高。如果您的应用程序使用的 GMS 服务很少,则工作量相对较低。为了减少工作量,建议您在项目中同时使用 GMS 和 HMS。方法如下:

检查设备是否 支持 GMS

检查设备是否支持HMS

在您的应用中,您可以使用以下伪代码同时使用GMS和HMS:

if isGMSAvailable {
   // execute GMS Code
} else if isHMSAvailable {
   // execute HMS Code
}

通过这样做,您可以减少维护代码和添加新功能的后续工作量。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接