对于使用PHP和Pushwoosh开发的推送通知服务的功能,适当的系统流程应该是什么?

对于使用PHP和Pushwoosh开发的推送通知服务的功能,适当的系统流程应该是什么?,php,push-notification,apple-push-notifications,token,pushwoosh,Php,Push Notification,Apple Push Notifications,Token,Pushwoosh,我是一名PHP开发人员。所以,我对移动应用、iOS、Android等诸如此类的东西不太了解。所以,请试着理解我 我有一个应用程序由各自的开发团队使用iOS开发。现在,我必须使用Pushwoosh为这个应用程序提供推送通知 我已经理解了推送通知的含义,并使用了Pushwoosh。此外,我还可以使用从Pushwoosh控制面板获得的app\u id和auth\u键发送示例推送通知。当我从服务器运行相应的PHP文件时,会收到带有正确状态代码的“成功消息” 我的问题是如何从服务器端的角度在应用程序中实现

我是一名PHP开发人员。所以,我对移动应用、iOS、Android等诸如此类的东西不太了解。所以,请试着理解我

我有一个应用程序由各自的开发团队使用iOS开发。现在,我必须使用Pushwoosh为这个应用程序提供推送通知

我已经理解了推送通知的含义,并使用了Pushwoosh。此外,我还可以使用从Pushwoosh控制面板获得的app\u id和auth\u键发送示例推送通知。当我从服务器运行相应的PHP文件时,会收到带有正确状态代码的“成功消息”

我的问题是如何从服务器端的角度在应用程序中实现推送通知服务

现在,让我们来考虑更具动态性和实用性的事情。

实际上,MySQL数据库中有一个表包含通知。一旦任何新条目被插入到该表中,我就必须检查它(通知)是否是针对登录用户的。如果有/有为登录用户生成的任何新通知,我必须通过'Pushwoosh'将推送通知发送给相关用户到其各自的设备

现在我的问题是,应该从应用程序端调用包含检查新通知并将其作为推送通知发送的代码的PHP文件,还是有其他方法

换句话说,我的疑问是,是否应该仅在收到应用程序的请求时才对新通知执行此检查

我与移动应用程序开发团队讨论了同样的问题,他们告诉我,我们不会向您发送任何请求,您只需向我们发送推送通知即可。他们告诉我推送通知的含义是,应用程序从不向服务器发送任何请求,服务器本身应该在可用时向应用程序发送通知

那么在这种情况下,既然没有收到请求,那么应该如何执行包含代码的PHP文件呢

这里的另一个问题是,如果应用程序不向PHP文件发送任何请求,那么我如何知道哪个用户登录并请求为他/她生成的新通知(如果有的话)

假设,如果请求是针对PHP文件的,那么我是否需要在PHP代码中为该特定用户进行基于令牌的身份验证,或者在应用程序端进行身份验证,并且只有在成功验证用户后,他们才会将请求发送到PHP文件

此外,应每隔两分钟检查一次新通知(轮询)。这张支票应该从哪里开出?我的意思是PHP文件会每隔两分钟收到应用程序的请求吗

请帮我解决这些繁琐的问题

谢谢

以下是我的示例代码(出于安全目的,已更改了身份验证令牌和应用程序ID):



仅在上面的代码中,我将集成用于检查和发送新通知(如果可用)的代码

让我们从安装iOS应用程序开始。iOS团队应注意在安装后将设备注册到Apple推送通知服务器(APNS)并获得推送令牌

登录时,他们应该将这个推送令牌发送到PHP服务器,服务器应该注意将其与用户数据一起存储。通常(但不是强制性的)在成功登录后,服务器应生成一些唯一的令牌并将其发送回设备,该设备随后将用于它们之间的通信。如果没有过期要求,则此令牌足以知道用户已登录

如果需要过期,则服务器应保存生成令牌时的时间戳,并将其存储到DB。这还需要在用户与应用程序/服务器交互时更新时间戳

cron作业可以设置为每2分钟运行一次,这将调用一个PHP脚本。这个PHP脚本遍历数据库中的表,检查是否有新的通知,如果发现了,应该尝试发送推送通知。如果需要“已登录”检查,脚本应检查用户的令牌,成功后应向Pushwoosh发送带有相应设备推送令牌的
/createMessage
API请求。JSON请求中的参数应类似于以下内容:

"devices":["dec301908b9ba8df85e57a58e40f96f523f4c2068674f5fe2ba25cdc250a2a41"]
请注意,您最多可以在此处添加1000个推送令牌

这样,您将向具体用户的设备发送推送通知

请注意,1个用户可以在多个设备上安装应用程序。在这种情况下,在发送推送通知时,应存储并使用所有推送令牌


我希望我没有错过任何东西。

推送通知通常用于在用户有一段时间没有登录或正在进行某些活动或促销时将用户带入应用程序。正因为如此,大多数推送通知实现不能依赖于来自应用程序本身的请求

在本例中,MySQL数据库中的一个新条目是发送推送通知的条件,因此我将创建一个PHP文件,该文件将按常规计划运行,以检查MySQL数据库中新的、未发送的行。按计划请求PHP脚本的最佳方法是在服务器上设置一个cron作业,每两分钟运行一次。关于在internet上设置cron作业,有很多信息,大多数ops团队都可以为您提供这些信息。但如果您需要/想要自己设置,基本步骤如下:

  • SSH连接到将运行脚本的服务器
  • 运行
    crontab-e
    编辑cron配置文件
  • 添加cron命令。它会像这样:

    */2 * * * * cd /absolute/script/path && php script_name.php
    
  • */2 * * * * cd /absolute/script/path && php script_name.php