我目前正在尝试以下操作,已有一定的成功,但尚未完全测试或扩展。
应用程序使用Firebase作为后端,并添加了FCM以实现推送通知。
我需要分组来处理当用户可能在不同设备或多个设备上时的情况。
我将返回的notification_key值和每个设备的registration_id(令牌)与个人资料存储。
profiles
-profile_id
-FCM
-notification_key:value
-registration_ids
-device_1_uuid:token_for_device_1
-device_2_uuid:token_for_device_2
当用户首次登录时,FCM节点下没有数据,即没有通知键和注册ID。
每次用户登录时,它们都会连接到其profile_id。
我获取FCM令牌,然后:
如果没有通知键(即第一次在任何设备上使用),我将使用profile_id作为notification_key_name创建组并存储返回的通知键。
如果有通知键(返回登录或在新设备上的第一次登录),我查看当前设备是否有注册ID,如果没有(在新设备上的第一次登录),则将device_uuid:token对添加到registration_ids中。
如果有(返回登录),我从FCM组中删除存储的令牌,并使用刚刚获得的令牌替换我的存储registration_ids中的旧令牌。
现在,我可以通过向他们的profile_id发送消息来向该用户(profile)使用的所有设备发送消息,并且我不应该泄漏令牌,因为我会删除旧令牌。
然而,由于似乎没有API可以仅读取组和令牌,因此我无法知道。这样,可以偶尔清理组。
此外,我的早期代码出现了错误,我没有捕获通知键,因此现在我无法添加,删除或执行任何操作以处理我的某个组。我讨厌这个想法,因为我必须永远留下在Firebase云中烧毁的组。
我认为FCM应该提供更多API访问权限,以帮助我们保持整洁。