华为已经发布了华为移动服务,目前正在逐步更新其服务,以与谷歌和苹果紧密匹配。至于你问的问题
- react-native 应用程序是否可以在不更改代码的情况下运行?
可以,只要你能生成一个apk上传到他们的华为App Gallery。您不必更改任何代码。
- Firebase SDK 能正常工作吗?
这取决于您尝试合并到您的应用程序中的服务类型,例如,如果您尝试使用 Firebase 提供的身份验证模块使用 Google 登录,那么它将仅在不包含 GMS 的手机上受支持( Google 移动服务),即华为 Mate 30 Pro。
但是,如果您正在查看通知。谷歌有 Firebase Cloud Messaging,华为有华为推送通知。您可以使用其中任何一种,因为这取决于后端服务的架构,并且所有安卓设备都支持。
- 在另一个 Android 生态系统中维护应用的真正隐性成本是多少?
这完全取决于您如何构建系统以及应用程序中所需的服务。假设您希望将华为登录包含在您的应用程序中,并且您还需要包含 HMS,但是您希望在华为应用程序库中维护这些,而对于 Google,您已经实现了 FCM 和 Google 登录和地图,那么您将拥有维护两个不同的分支,它们共享共同的核心功能,这既费时又费钱。
如果应用程序仅使用纯粹依赖于逻辑且很少或没有 GMS/HMS 的裸功能,那么您不必为您的项目维护单独的分支,一个就足够了。您只需向 Google Play Publish 和 Huawei App Gallery 提交版本即可。
如果您想为 GMS 和 HMS 使用一个存储库,那么您必须检查可用的服务以启用该功能。
对于 GMS
val gmsAvailable = GooglePlayServicesUtil.getInstance().isGooglePlayServicesAvailable(mContext)
对于 HMS
val hmsAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(mContext)
所以当尝试使用谷歌登录或华为登录或任何其他服务时,它会是。
if gmsAvailable {
// execute GMS Code
} else if hmsAvailable {
// execute HMS Code
}
注意*以上代码是在 Kotlin 中