Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在使用布尔运算时,向某些主题发送FCM通知时,如何避免超过5个主题的限制?_Laravel_Firebase_Push Notification_Firebase Cloud Messaging - Fatal编程技术网

Laravel 在使用布尔运算时,向某些主题发送FCM通知时,如何避免超过5个主题的限制?

Laravel 在使用布尔运算时,向某些主题发送FCM通知时,如何避免超过5个主题的限制?,laravel,firebase,push-notification,firebase-cloud-messaging,Laravel,Firebase,Push Notification,Firebase Cloud Messaging,我们正在开发一个应用程序,该应用程序本身是用爱奥尼亚(Angular)制作的,服务器是在AmazonEC2实例上用Laravel(PHP)运行的。应用程序使用接收来自FCM的通知,服务器使用发送通知 在应用程序中,注册用户可以选择几个选项,例如年龄范围、地址(地区)、性别等。让我们假设我们有年龄 10岁~20岁=1岁 30岁=2岁 40岁=3岁 50岁=4岁 和地址区域 亚洲=1区 欧洲=区域2 美洲=第3区 澳大利亚=第4区 性别 女性=性别-1 男性=性别-2 应用程序根据用户选

我们正在开发一个应用程序,该应用程序本身是用爱奥尼亚(Angular)制作的,服务器是在AmazonEC2实例上用Laravel(PHP)运行的。应用程序使用接收来自FCM的通知,服务器使用发送通知

在应用程序中,注册用户可以选择几个选项,例如年龄范围、地址(地区)、性别等。让我们假设我们有年龄

  • 10岁~20岁=1岁
  • 30岁=2岁
  • 40岁=3岁
  • 50岁=4岁
和地址区域

  • 亚洲=1区
  • 欧洲=区域2
  • 美洲=第3区
  • 澳大利亚=第4区
性别

  • 女性=性别-1
  • 男性=性别-2
应用程序根据用户选择的选项订阅主题,例如,如果用户选择30岁、美国和男性,则他将订阅年龄2、领域3和性别2的主题

这就是问题所在

我们需要从服务器向订阅特定主题的用户发送通知

首先,我们尝试使用布尔运算,以便我们可以向订阅了主题(2岁或3岁)和(1区或2区或4区)以及(性别-1)的人发送通知。问题是,FCM不允许在条件中指定超过5个主题,在这种情况下,指定了6个。(实际上,我们一次发送最多可以达到17个主题)

由于失败,我们尝试分批发送,这样(age-2或age-3)和(area-1或area-3)将分批发送

  • (2岁)和(1区)
  • (2岁)和(3区)
  • (3岁)和(1区)
  • (3岁)和(3区)
但我们很快意识到,这意味着有些人会多次收到通知(因为有些字段是多选的,例如,用户可能同时选择亚洲和美洲),这当然是不可取的


除了使用设备令牌向个人发送通知外,我们已经没有其他选择了,但我们最多可以有50000个用户。我们担心向个人发送通知可能需要一些时间。我们使用在后台处理通知的发送,但是我们仍然担心如果我们单独发送通知会发生什么。此外,这种实现听起来很肮脏,远不是最佳的,这让我认为应该有更好的方法

我想问一下,是否有人知道解决这种情况的方法。我们确实考虑过使用Amazon SNS,但是SNS似乎缺少主题布尔条件,在应用程序和服务器上都很难实现。 我真的非常感谢任何想法、意见和指导。我尽了最大努力,但想不出更好的解决办法


提前非常感谢

对于Ionic应用程序,我也面临着完全相同的情况。如您所述,应用程序中的FCM 5主题限制和多主题选择导致一些用户多次收到相同的通知。另一方面,例如,不可能使用Apple推送通知服务向多个iOS设备令牌发送单个通知。似乎不使用FCM的公司必须有一个强大的基础设施来存储设备令牌和相关主题,并相应地发送通知。不幸的是,我还没有找到任何实现sush系统的指南。“除了使用设备令牌向个人发送通知外,我们已经没有其他选择了,但我们最多可以有50000个用户。我们担心向个人发送通知可能需要一些时间。”幕后Firebase的主题也只是分散到发送给单个令牌的调用。FCM的基础设施被数以百万计的应用程序用来每天发送数十亿条消息,因此它可以很好地处理规模问题。@Reqven我明白了。非常感谢您的回复!在服务器端,我们知道每个用户选择了什么,因此我们可以获得一个用户列表,该列表应该接收某个通知,并向这些用户的设备令牌发送通知,但我担心这不是最佳解决方案,所以我在考虑(或询问)或替代方案。也许这是唯一的办法。@FrankvanPuffelen我们并不担心通知延迟到达用户,而是更关心如果我们只发送通知到一堆可能达到10000~50000的设备令牌,是否会出现问题。比如,FCMAPI会在一定数量的调用后发送“太多请求”错误吗,或者可能是其他一些问题。。。这真的很难,抱歉。正如所说的:FCM的基础设施被数百万应用程序使用,每天发送数十亿条消息,因此它可以很好地处理规模问题。10K-50K对你的应用来说可能很多,但不是FCM。只要尽量减少API调用的次数(例如,在可能的情况下使用批处理发送),就可以了。对于Ionic应用程序,我也面临着完全相同的情况。如您所述,应用程序中的FCM 5主题限制和多主题选择导致一些用户多次收到相同的通知。另一方面,例如,不可能使用Apple推送通知服务向多个iOS设备令牌发送单个通知。似乎不使用FCM的公司必须有一个强大的基础设施来存储设备令牌和相关主题,并相应地发送通知。不幸的是,我还没有找到任何实现sush系统的指南。“除了使用设备令牌向个人发送通知外,我们已经没有其他选择了,但我们最多可以有50000个用户。我们担心向个人发送通知可能需要一些时间。”贝希说