相关疑难解决方法(0)

FCM:onNewToken vs FirebaseInstanceId

Firebase已弃用此com.google.firebase:firebase-messaging:17.1.0版本中的一些消息传递调用.这篇文章很好地解决了这些变化.

问题:有人可以告诉我,如果不实施这是不好的做法onNewToken,而只是在每个应用程序启动时调用下面的块这对于Android人来说可能看起来过分,但从iOS的角度来看感觉就像家一样.

FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener(this) { instanceIdResult ->
    // Just use this call 
    val newToken = instanceIdResult.token
    Log.i("newToken", newToken)
}



@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    // Leave this unimplemented
}
Run Code Online (Sandbox Code Playgroud)

我更熟悉iOS,它onNewToken每个应用程序发布时调用它.因此,对于iOS,我在那里放置逻辑以确定我的后端是否需要更新.

getInstanceId()文档说This generates an Instance ID if it does not exist yet, which starts periodically sending information to the Firebase backend.这让我想我可以调用FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener每次启动.

android firebase firebase-cloud-messaging

9
推荐指数
3
解决办法
2万
查看次数

如何在google-services.json中放置多个project_number/sender id

我希望能够在我的Android应用程序中添加多个发件人ID.

来自https://developers.google.com/cloud-messaging/concept-options

GCM允许多方向同一客户端应用程序发送消息.例如,假设客户端应用程序是具有多个贡献者的文章聚合器,并且每个人都应该能够在发布新文章时发送消息.此消息可能包含URL,以便客户端应用程序可以下载该文章.GCM不必将所有发送活动集中在一个位置,而是让您能够让每个贡献者发送自己的消息.

如何使用google-services.json配置文件实现这一目标?

android firebase google-cloud-messaging firebase-cloud-messaging

7
推荐指数
1
解决办法
6403
查看次数

多个sender id的情况下如何判断是否需要刷新token?

我的应用程序正在接收来自 2 个 firebase 项目的推送通知。我通过分别调用“getToken(StringauthorizedEntity, Stringscope)”来获取每个发件人 ID 的令牌。

String token1 = FirebaseInstanceId.getInstance().getToken("authorizedEntity1", "FCM");
String token2 = FirebaseInstanceId.getInstance().getToken("authorizedEntity2", "FCM");
Run Code Online (Sandbox Code Playgroud)

根据onTokenRefresh文档

当系统确定需要刷新令牌时调用。应用程序应该调用 getToken() 并将令牌发送到所有应用程序服务器。这不会被频繁调用,它是密钥轮换和处理实例 ID 更改所必需的,因为:

应用程序删除实例ID

应用程序已在新设备上恢复

用户卸载/重新安装应用程序

用户清除应用数据

由于onTokenRefresh已被弃用,我已经检查了onNewToken,根据文档

在生成默认 Firebase 项目的新令牌时调用。在应用程序安装后首次生成令牌时会调用此函数,如果令牌发生更改,则会再次调用此函数。

Q1. 如果有多个发件人 ID,如何知道哪个是默认的 Firebase 项目?

Q2。假设如果“authorizedEntity1”与默认的 firebase 项目关联,那么是否意味着仅当 token1 发生更改时才会调用 onNewToken ?或者当 token2 改变时它也会被调用?如果它对 token2 不起作用那么如何知道token2需要刷新?

Q3。参考此,我的理解是,只要需要刷新任何令牌(不仅对于默认项目),就会调用 onTokenRefresh 。这种理解正确吗?

每当系统确定token1token2需要刷新时,我想将更新的令牌发送到服务器。

注意:当我处理多个发件人 ID 时,我正在应用程序类中初始化 firebase。

android firebase firebase-cloud-messaging

5
推荐指数
1
解决办法
660
查看次数

辅助应用程序的 FirebaseMessaging.getInstance(firebaseApp) 应该是公开的,但它是私有的?

我正在尝试为辅助 Firebase 应用订阅 FCM(Firebase 云消息传递)主题,根据文档,这可以通过getInstance将辅助 FirebaseApp 实例作为参数的重载来完成:

https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/messaging/FirebaseMessaging#public-static-synchronized-firebasemessaging-getinstance-firebaseapp-app

public static synchronized FirebaseMessaging getInstance (FirebaseApp app)
Run Code Online (Sandbox Code Playgroud)

获取指定 FirebaseApp 的 FirebaseMessaging 实例。

我正在使用 Kotlin,我正在build.gradle像这样拉入包:

implementation "com.google.firebase:firebase-messaging:20.2.0"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试FirebaseMessaging使用重载的实例化 时getInstance,我收到一个错误,指出它不可访问。当我查看包源时,反编译表明重载的构造函数不像无参数的那样是公开的getInstance

implementation "com.google.firebase:firebase-messaging:20.2.0"
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

android kotlin firebase firebase-cloud-messaging

3
推荐指数
2
解决办法
2431
查看次数