我无法从华为 p40 系列设备获取 Firebase 令牌

I can't get Firebase token from Huawei p40 series device

我一般都是用这个方法拿到token的,但是随着华为p40系列的到来,用那些就拿不到token了

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( this,  new OnSuccessListener<InstanceIdResult>() {
        @Override
        public void onSuccess(InstanceIdResult instanceIdResult) {
            final String token = instanceIdResult.getToken(); // i can't get this
        }
});

P40包含华为移动服务。这些设备没有 Google 移动服务,因此 Firebase 无法运行。有一个名为 Push Kit 的替代方案 - https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/push-introduction

如果你想让它在一个平台上运行,你可以尝试:

他们正在与 Google 和华为合作。

由于华为新机被禁止使用GMS,因此华为新机无法使用firebase。华为已经提供了这种通知服务,称为HMS Push Kit,以便在没有GMS的设备上提供推送通知,如mate30、mate30 pro、P40等华为新机。如果您希望您的应用在这些手机上 运行,请集成华为推送服务。

请参考链接:

Development Guide

Sample Code on Github

FCM 是 Firebase 云消息服务。新一代华为设备(华为 P40 系列、Mate 30 系列)不支持 Google 服务,如 Google 地图、FCM 等。如果您想成功使用您的应用,您的应用提供商必须集成HMS服务或第三方解决方案后即可正常使用相关APP

我认为您可以将其替换为 HMS 推送套件,或者您可以使用第 3 方推送提供商。 欲了解更多信息,请访问 link

对于 Flutter 项目:

我不喜欢使用像OneSignal这样的第三方推送通知有很多原因,其中之一例如OneSignal不提供方式在其 Flutter 插件中处理背景数据,例如 firebase_messaging, or Push.registerBackgroundMessageHandler(...) in huawei_push...

中的 FirebaseMessaging.onBackgroundMessage(...)

所以我最好使用两个插件(在同一个项目中):

1- https://pub.dev/packages/firebase_messaging 对于 Android 没有 HMS 和 IOS...

2- https://pub.dev/packages/huawei_push 它可以在 Android 上使用 HMS。