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

时间:2017-10-03 21:24:05

标签: android firebase push-notification notifications

我在IOS中使用了一段时间后,在我的应用中实现了推送通知。

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

为此,我使用

获取令牌
FirebaseInstanceId.getInstance().getToken()

,在用户登录时将推送令牌发送到我们的服务器,并在注销时将其删除。

所有功能都可以注册令牌,发送令牌等等。但是,有可能出现这种情况不起作用的情况,例如,如果用户注销了飞行模式,那么我们的服务器仍然有令牌并且认为它应该仍然发送它们。

在IOS上,有两个本地功能,即注册/取消注册远程注销,基本上可以打开/关闭通知,无论是否可以联系我的服务器。我可以在登录/注销时调用这些,IOS不会显示我的应用程序的任何远程通知,我很安全。

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

我发现最好的事情是始终发送'数据'通知, as described in this question, 所以我的通知服务总是被调用,即使在后台,也检查我是否已登录,如果不是,则不显示通知。

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

Sooo,我的问题是,有没有办法在通过Firebase注销时禁用通知?

我希望这很有道理,非常感谢!

2 个答案:

答案 0 :(得分:0)

是的,您所做的就是创建自己的登录和注销API。 在您的登录中,您应该存储您的令牌以进行PUSH通知。

然后无论数据触发器需要什么,PUSH都会循环并为已知的注册令牌构建推送。

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

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

我已经完成了这个确切的场景,以避免错误的人获得推送,但我支持我的场景中的前景和后台,所以只有注销或过期令牌才会禁用我的应用程序上的PUSH。

答案 1 :(得分:0)

有两种方法: -

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

  2. 您的应用支持单个用户: - 您只需在登录帐户之前删除firebase实例ID即可。这将考虑到其他用户已离线注销并且您无法从您的服务注册的情况。

  3. 您还可以处理何时根据已登录用户的accountId或用户ID显示通知的方案。