Android 我可以通过Firebase禁用推送通知吗?

Android 我可以通过Firebase禁用推送通知吗?,android,firebase,push-notification,notifications,Android,Firebase,Push Notification,Notifications,在IOS上使用推送通知一段时间后,我正在应用程序中实现推送通知 用例:我有用户登录,并且帐户存储在我们的服务器上。我只想在用户登录时发送推送通知,并且只针对当前登录的用户。通知针对单个用户 为此,我使用 FirebaseInstanceId.getInstance().getToken() ,在用户登录时将推送令牌发送到我们的服务器,并在注销时将其删除 就注册令牌、发送令牌等而言,一切都是有效的,但是,在某些情况下,这可能不起作用,例如,如果用户以飞行模式注销,那么我们的服务器仍然拥有令牌,并

在IOS上使用推送通知一段时间后,我正在应用程序中实现推送通知

用例:我有用户登录,并且帐户存储在我们的服务器上。我只想在用户登录时发送推送通知,并且只针对当前登录的用户。通知针对单个用户

为此,我使用

FirebaseInstanceId.getInstance().getToken()
,在用户登录时将推送令牌发送到我们的服务器,并在注销时将其删除

就注册令牌、发送令牌等而言,一切都是有效的,但是,在某些情况下,这可能不起作用,例如,如果用户以飞行模式注销,那么我们的服务器仍然拥有令牌,并且认为它仍然应该发送令牌

在IOS上,有两个本地函数register/unregisterforremotenotifications,它基本上可以打开/关闭通知,而不管是否可以联系我的服务器。我可以在登录/注销时调用这些,IOS不会显示我的应用程序的任何远程通知,我很安全

但是,使用Firebase,我可以在登录时将令牌发送到服务器- 然而,对于注销来说,它更复杂,因为我找不到可调用的“本地”系统函数

我发现最好的办法就是总是发送“数据”通知, , 这样,即使在后台,我的通知服务也会被调用,并检查我是否已登录,如果未登录,则不显示通知

然而,对于错误用户的通知仍然会发送到手机,这是一个风险,例如,如果我,上帝禁止将有一个错误。。。或者通知会记录在系统的某个地方

Sooo,我的问题是,是否有任何方法可以禁用通过Firebase注销时的通知


我希望这是有意义的,非常感谢

是的,您要做的是创建自己的登录和注销API。 在您的登录中,您应该存储用于推送通知的令牌

然后,任何需要推送的数据触发器都会执行一个循环,并为已知的已注册令牌构建一个推送

注销时,只需从数据库中删除该令牌,循环将不再包含它以进行推送。你们是正确的,使用数据标签只能在前台工作,但可能是错误的用户,这是正确的

如果您没有后端,请更清楚地说明您在何处/如何存储和使用代币进行推送,以便我可以进一步帮助您

我这样做是为了避免错误的人获得推送,但我在我的场景中支持前台和后台,因此只有注销或过期的令牌才会禁用我的应用上的推送功能。

有两种方法:-

  • 您的应用程序支持多用户同时登录场景:- 您可能可以使用布尔标志将设备令牌存储在共享首选项中,当用户重新启动应用程序时,检查是否设置了删除标志,然后您可以尝试从服务器上的服务注销。 如果失败了,那么你也可以这样做,所以这就像在每次应用程序启动时检查删除帐户的布尔标志,以确保取消注册

  • 您的应用程序支持单个usr:- 您只需在登录帐户之前删除firebase实例Id即可。这将解决另一个用户脱机注销,而您无法从服务中注销的情况

  • 您还可以处理基于登录用户的accountId或用户Id显示通知的场景