我正在做一个门铃项目,我想在客人来按门铃时向用户发送推送通知,它应该向用户(即房屋所有者)发送推送通知。 我想在我的安卓应用中使用Firebase Cloud Messaging 来实现这一点。
我们使用RaspberryPi作为硬件控制器。当有人按下门铃时,它会触发通知用户在其 android 设备上使用 FCM。(这不是一个关注点。
我的困惑是:
根据SO上的这篇文章,FCM会将推送通知发送到我们在应用程序中提到的预定义的"registration_ids"。 但就我而言,每个用户都会有不同的注册 ID。 此外,用户数量也不是固定的。
它可以是任意数量的用户。使用门铃的人将拥有自己的身份证。
因此,这将是一个可能的情况,例如:
-
假设我没有在应用程序中提到任何注册ID。 10个用户在家中安装了此门铃,并且房屋上的某个人按下门铃按钮,FCM将向所有10个用户发送推送通知。 原因是,从PlayStore安装应用程序的所有设备的注册ID将相同。
-
假设我在应用程序中提到了 3 个注册 ID。因此,3个用户将同时收到相同的推送通知。
如果我 没记错的话,如果我只输入 1 个注册 ID,即使按下 5 个不同房屋的门铃,也只有 1 个用户会收到通知,同一个用户会收到 5 次通知。
如果我声明要在服务器端通知的特定注册 ID(即 RaspberryPi),我必须随着应用程序中用户数量的增加定期添加新的注册 ID,并经常更新它。
那么我该如何解决这个问题呢?
直到现在我还没有开始开发这个应用程序,因为我对第一步本身感到困惑。
如果我在某处出错,请指导我,因为我是推送通知或 FCM 的新手。我可能不理解FCM的概念,这是可能的,但我不确定。 如果使用FCM无法实现此解决方案,请向我建议一些其他选项来实现此目的。
注册令牌对应于单个应用程序实例(请参阅此处的答案)。
在您的帖子中,您似乎将注册ID混淆为应用程序中的永久内容,但事实并非如此。
每当用户安装您的应用时,在第一次初始化时,它应该生成自己的注册令牌,您必须将该令牌保存到您的应用服务器,并确保将其与相应的用户详细信息相关联。
对于您的用例,您可以使用主题消息传递,您只需为用户订阅相应的门铃主题,每次触发特定门铃时,您都会向相应的主题发送消息。