相关疑难解决方法(0)

Firebase FCM强制onTokenRefresh()被调用

我正在将我的应用程序从GCM迁移到FCM.

当新用户安装我的应用程序时,onTokenRefresh()会自动调用该应用程序.问题是用户尚未登录(无用户ID).

如何onTokenRefresh()在用户登录后触发?

android firebase-cloud-messaging

107
推荐指数
2
解决办法
12万
查看次数

Firebase中的FCM令牌是什么?

在新的Firebase中,在通知下,他们提到开发人员可以向特定设备发送通知.为此,在控制台中它要求一个FCM令牌.究竟是什么,我如何获得该令牌?

android firebase firebase-cloud-messaging firebase-notifications

47
推荐指数
4
解决办法
10万
查看次数

通过取消注册限制GCM/FCM通知

有没有办法限制Firebase推送通知注册?不寻找主题.假设我有登录功能.我希望登录用户订阅推送通知.然后令牌可以发送到服务器并存储.

在用户注销的同时,用户也应该是未注册的.

那么目前有一种机制吗?我浏览了Firebase API文档但我找不到任何内容.

只是想知道我是否遗漏了任何东西.

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

11
推荐指数
1
解决办法
5246
查看次数

何时为用户注册FCM令牌

我对在我的应用中实施Firebase云消息传递有一些疑问.

我的应用程序是类似于whatsappfacebook messenger的聊天.现在,每当有人登录时,我都会注册令牌并将其与用户联系起来.因此,如果有人想要与用户聊天,应用程序会在Db中搜索用户ID,并且我有他的令牌.

我可以注册设备令牌,但我不确定我该怎么做.

在我的聊天中,用户通过邮件/密码注册进行注册,并且用户可以在其他设备中登录.

例如: 用户Frehley使用Galaxy 8,并且能够使用令牌在他的设备中聊天和接收通知.但是,让我说他在另一台设备上.我需要再次注册令牌并将其与他联系起来吗?

所以,也许我错了,但是每次用户登录并在DB中替换它时,注册令牌的最佳时刻.对?

现在,假设有两个用户(Frehley和Stanley)使用相同的Galaxy 8登录,每次登录时令牌都会不同,或者每个设备的令牌都相同?

android firebase firebase-cloud-messaging

8
推荐指数
1
解决办法
2631
查看次数

如何在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
查看次数

管理多个用户的 Firebase Cloud Messaging 令牌

查看 Firebase 文档,它建议为每个客户端实例生成一个 FCM 令牌 - 然后必须手动存储该令牌。如果我将每个令牌链接到 Firestore 数据库中的用户文档,那么在用户注销时我是否需要手动删除设备特定的令牌?

例如,用户 A 启动应用程序,并且他们的 FCM 令牌(例如“ABC”)被存储到他们的用户文档中。然后,用户 A 注销,B 登录。FCM 令牌不会刷新**,因此我需要从 A 的用户文档中删除该令牌并将其移动到 B 的用户文档中。否则,任何发往 A 的通知都将发送至 B(全部在同一设备上)。

这种想法正确吗?这似乎是一种管理代币的棘手方法,但据我所知,这是必要的吗?

** 根据 Firebase 文档,令牌仅在以下情况下刷新:

  1. 该应用程序已在新设备上恢复
  2. 用户卸载/重新安装应用程序
  3. 用户清除应用程序数据。

阅读更多文档,首先在本地处理通知是否是更好的解决方案 - 决定它是否发往登录帐户,然后呈现它?即不向通知添加任何低级敏感数据(例如聊天消息),而只是提供“获取新消息的通知”?

apple-push-notifications firebase-cloud-messaging google-cloud-firestore

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

将Firebase主题消息与Android通知通道一起使用

我有一个应用程序,它可以接收不同的通知类型(例如NewsPodcast).目前,它有两个简单的开关,用户可以启用和禁用这些不同的通知类型.它只需订阅和取消订阅相应的Firebase主题即可.明显的优点是设备只接收用户想要的通知,而不必在本地过滤它们=>电池和数据有效.

问题是,我想将它与新的Android O通知渠道结合起来.我是否正确地假设唯一的方法是只订阅Firebase中的所有主题并让用户在Android设置中手动禁用不需要的主题?

有没有更好的方法可以节省更多的电池寿命(通过不接收所有通知)?

android android-notifications firebase firebase-cloud-messaging android-8.0-oreo

6
推荐指数
1
解决办法
745
查看次数

Firebase云消息传递设备ID:同一设备中同一应用中的多个用户

有没有办法创建一个具有登录用户范围的注册ID.我有一个应用程序,允许用户以不同的用户身份登录(比如一个用户作为学生,另一个用户作为父母).用户可以在用户之间切换.Case有点类似于gmail应用程序,其中可以同时登录多个电子邮件ID.

问题是我们打电话的时候

 FirebaseInstanceId.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)

它将为该应用实例提供设备ID.因此,如果我要定位登录的特定用户,我不能.

我可以实现针对用户的一种方式是user_id明确地作为数据发送,在我的情况下,这是无效的,因为它将为每个用户发送一个FCM发送请求.无论如何,这可以实现.想知道gmail如何处理用户特定的通知.

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

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

如何在用户注销时刷新FCM令牌?

我第一次获得FCM并将其保存到我的userDefaults.现在当用户注销时,如何再次刷新FCM令牌?我搜索了文档和许多其他问题,但没有找到更好的解决方案.

提前致谢.

objective-c ios firebase firebase-cloud-messaging

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

重置推送通知/设备注册/实例 ID - 通过 TestFlight 或 App Store 进行应用程序更新 - Firebase 云消息传递 iOS/React Native Firebase

关于这个问题做了很多研究,首先是我的设置:

我的问题非常简单直接,尽管我似乎无法找到解决问题的明确方法。

我部署了应用程序的 4.2 版本。iOS 中的 Firebase 云消息传递 (FCM) 运行得非常好。然后我将 4.3 部署到 TestFlight 开始测试。通过 TestFlight 安装 4.3,FCM 停止工作,没有推送通知。如果我删除该应用程序并通过 TestFlight 推送通知再次安装 4.3,则该设备已注册。

我还可以重现此问题,更新最新发布的 App Store 中我的应用程序的安装版本,这并不奇怪。

我知道 InstanceId/设备令牌基于应用程序构建+设备,因此当应用程序更新时令牌发生变化是有意义的,但当我从 4.2 更新到 4.3 时我的令牌是相同的:

const fcmToken = await firebase.messaging().getToken(); //same whether 4.2 or 4.3
Run Code Online (Sandbox Code Playgroud)

是的, firebase.messaging().getToken() 在初始创建时被缓存。

所以我准备监听令牌更改事件:

firebase.messaging().onTokenRefresh(async () => {
  console.log('======onTokenRefresh=========');
  AsyncStorage.removeItem(FCM_TOKEN_KEY);
  await getToken();
});
Run Code Online (Sandbox Code Playgroud)

那似乎永远不会火。我什至在我的应用程序中添加了一个按钮,以尝试强制使用新的 InstanceId 并在从 TestFlight 或 AppStore 更新版本后向 FCM 注册,但这没有帮助:

export async function forceRefresh() {
  console.log('================force a new registration!!!==========');
  AsyncStorage.removeItem(FCM_TOKEN_KEY);
  firebase.messaging().deleteToken(); …
Run Code Online (Sandbox Code Playgroud)

ios firebase reactjs react-native react-native-ios

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