我通常用这种方法得到令牌,但随着华为p40系列的到来,我无法用那些获得令牌
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
final String token = instanceIdResult.getToken(); // i can't get this
}
});
4条答案
按热度按时间owfi6suc1#
P40包含华为移动的服务。这些设备没有Google移动的服务,因此Firebase无法工作。有一种替代方案,称为Push Kit -https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/push-introduction
如果你想在一个平台上运行所有功能,你可以尝试:
他们正在与谷歌和华为合作。
jgovgodb2#
由于新的华为手机被禁止使用GMS,因此Firebase无法在新的华为手机上使用。华为已经提供了这样的通知服务,称为HMS Push Kit,以便在没有GMS的设备上提供推送通知,如mate30,mate30 pro,P40和其他华为新设备。如果你想让你的应用在这些手机上运行,请集成华为推送套件。
请参阅以下链接:
Development Guide
Sample Code on Github
wkftcu5l3#
对于Flutter项目:
我不喜欢使用像
OneSignal
这样的第三方来推送通知,原因有很多,其中一个原因是OneSignal
没有提供处理Flutter插件中后台数据的方法,比如**firebase_messaging中的FirebaseMessaging.onBackgroundMessage(...)
,或者huawei_push**中的Push.registerBackgroundMessageHandler(...)
...所以我更喜欢使用两个插件(在同一个项目中):
1-https://pub.dev/packages/firebase_messaging for Android without HMS and IOS...
2-https://pub.dev/packages/huawei_push它在Android上与HMS工作.
0ejtzxu14#
FCM是Firebase云消息服务。新一代华为设备(华为P40系列,Mate 30系列)不支持GoogleMap,FCM等Google服务。如果您想成功使用您的应用程序,您的应用程序提供商必须集成HMS服务或第三方解决方案,之后您可以使用相关应用程序没有任何问题。
我认为你可以用HMS推送工具包替换它,或者你可以使用第三方推送提供商。更多信息请访问link