华为手机上没有谷歌服务会反应原生工作吗?

Mac*_*cki 20 android google-play-services react-native huawei-mobile-services

很快,新的华为手机将停止支持 Google Play 和 Google 移动服务。

华为正在准备自己的名为 HMS 的生态系统https://developer.huawei.com/consumer/en/service/hms/developer.html

他们的应用商店叫做“Huawei App Gallery”,这里有它的文档:https : //developer.huawei.com/consumer/en/doc/30202

他们现在正在向开发人员(包括我)发送消息,鼓​​励他们向他们的商店发布应用程序。他们声称他们只需要一个 APK 文件,不需要对应用程序进行任何更改。

我的问题是:

  • react-native 应用程序可以在不更改代码的情况下工作吗?
  • Firebase SDK 会起作用吗?
  • 在另一个 Android 生态系统中维护应用程序的真正隐性成本是多少?

dil*_*813 9

华为已经发布了华为移动服务,目前正在逐步更新其服务,以与谷歌和苹果紧密匹配。至于你问的问题

  1. react-native 应用程序可以在不更改代码的情况下工作吗?

是的,只要你能生成一个apk上传到他们的华为应用程序库。您不必进行任何代码更改。

  1. Firebase SDK 会起作用吗?

这取决于您尝试整合到应用程序中的服务类型,例如,如果您尝试使用 Firebase 提供的身份验证模块使用 Google 登录,那么它不会仅在不包含 GMS(Google 移动服务)的手机上受支持) 这是华为 Mate 30 Pro。

但是,如果您正在查看通知。谷歌有 Firebase Cloud Messaging,华为有华为推送通知。您可以使用任何一种,因为这取决于后端服务的架构,并且将在所有 android 设备上受支持。

  1. 在另一个 Android 生态系统中维护应用程序的真正隐性成本是多少?

这完全取决于您如何构建系统和应用程序中所需的服务。假设您希望将华为登录纳入您的应用程序中,并且您还需要包含 HMS,但是这些您希望在华为应用程序库中维护,对于 Google,您已经实现了 FCM 和 Google 登录和地图,那么您将拥有维护两个不同的分支,这些分支共享共同的核心功能,这既费时又费钱。

如果应用程序只使用纯粹依赖逻辑的裸功能,并且很少或没有 GMS/HMS,那么您不必为您的项目维护单独的分支,一个就足够了。您只需要向您的 Google Play Publish 和华为应用程序库提交一个版本。

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

对于 GMS

val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
Run Code Online (Sandbox Code Playgroud)

对于 HMS

val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
Run Code Online (Sandbox Code Playgroud)

所以当尝试使用谷歌登录或华为登录或任何其他服务时,它会。

if gmsAvailable {
   // execute GMS Code
} else if hmsAvailable {
   // execute HMS Code
}
Run Code Online (Sandbox Code Playgroud)

注意* 以上代码在 Kotlin 中