我已经制作了一款IOS多人回合制游戏。我的目标是让一名玩家轮到他们玩,然后向另一名玩家的设备发送推送通知,通知他们该轮到他们玩了。
我已经试用了Urban Airship,并在那里有一个示例应用程序,它能够向所有注册的设备或手动输入的设备广播推送通知。
有可能从我的应用程序中只向其他玩家触发城市飞艇推送通知吗?如果需要,我可以从Firebase数据库中提取对手的设备令牌。
如果这不可能,有人能引导我朝着正确的方向走吗?我做了相当多的研究,我发现的一切都指向Parse,当然它正在关闭。
谢谢。
如果您正在使用Firebase,您可以使用一个很棒的解决方案。有一个很好的服务叫Batch。Batch有助于发送推送通知,它与Firebase配合使用非常好。基本上,当用户登录应用程序时,您可以使用他的Firebase Auth Id将其注册到Batch服务中,现在您可以使用Batch提供的Firebase Auth-Id和REST API在他的设备上发送通知。
它对我来说很好。我有一个脚本来观察我的Firebase数据,并决定是否需要发送任何通知。如果是,它将使用Batch REST API来执行此操作,并立即发送通知。
您可以在此处找到有关如何将Batch与Firebase集成的更多信息:
https://batch.com/parse-replacement-with-firebase
哪种类型的通知以及何时发送取决于您和服务器端脚本。编写这样的服务器,其中包含一些逻辑,可以在需要的地方发送通知。
这更多的是一个一般的想法,因为问题中没有足够的信息来提供具体的答案:
我建议利用Firebase的内置功能,而不是通过推送来解决它。
Firebase事件是即时和实时的,提供了丰富的信息,不需要单独的服务器或主机来处理它们。
快速示例
users
uid_0
name: "Picard"
uid_1
name: "Riker"
以及游戏&转弯节点
games
game_id_1701
players
uid_0: true
uid_1: true
turns
turn_id_0
player_id: uid_0
event: "powered up weapons"
turn_id_1
player_id: uid_1
event: "engaged shields"
turn_id_2
player_id: uid_0
event: "fired photon torpedoes"
turn_id_3
player_id: uid_1
event: "shield impact, shields at 80%"
因此,使用这种结构,玩家登录并可以查询他们所参与的所有游戏,在这种情况下,玩家uid_0和uid_1正在玩游戏#1701
一旦他们确定了自己是哪个游戏的一部分,他们就可以观察到该游戏的转折节点。turns节点将向用户提供到目前为止发生的事情;转弯次数、事件等
然后,任何未来的事件,如uid_0进行turn_id_4并触发相位器时,都会将该事件通知uid_1。
有几十种不同的方法来设置它,例如
completed_turns
uid_0: true
uid_1: false
在这个超级简单的例子中,uid_0和uid_1都观察completed_turns节点,当它们完成回合时,将各自的子节点设置为true,并将另一个设置为false。另一名玩家会被通知该事件,并可以轮流上场。