我是一个由相应的开发团队使用iOS开发的应用程序.现在,我必须使用Pushwoosh为此应用程序提供推送通知.
我已经理解推送通知和Pushwoosh的用法是什么意思.此外,我可以使用从Pushwoosh控制面板获得的app_id和auth_key发送示例推送通知.当我从服务器运行相应的PHP文件时,我收到了正确的状态代码的“成功消息”.
我的查询实际上是关于如何从服务器端角度将此推送通知服务实现到应用程序中?
现在,让我们考虑更有活力和实用的东西.
实际上MysqL数据库中有一个包含通知的表.只要任何新条目插入到该表中,我就要检查它是否(通知)是否为登录用户.如果存在为登录用户生成的任何新通知,我将通过“Pushwoosh”将推送通知发送给相关用户到他/她的相应设备.
现在我的问题是,应该从应用程序端调用包含用于检查新通知并将其作为推送通知发送的代码的PHP文件,还是有其他方法?
换句话说,我怀疑是否应该仅在来自应用程序的请求时才检查新通知?
我与移动应用程序开发团队讨论了同样的问题,他们告诉我,我们不会向您发送任何类型的请求,您只需向我们发送推送通知即可.他们告诉我,推送通知的含义与app永远不会向服务器发送任何请求的含义相同,服务器本身应该在可用时将通知发送给应用程序.
那么在这种情况下,如果没有收到请求,那么包含代码的PHP文件应该如何执行呢?
这里的另一个问题是,如果应用程序不会向PHP文件发送任何请求,那么我应该如何知道哪个用户已登录并请求为他/她生成的新通知(如果有)?
假设,如果PHP文件的请求已经到来,那么我是否需要在PHP代码中为该特定用户进行基于令牌的身份验证,或者它将在应用程序端完成,并且只有在成功验证用户后才会将请求发送到PHP文件?
此外,每两分钟间隔(轮询)应检查新通知.应该从哪里进行检查?我的意思是PHP文件每隔两分钟从应用程序接收请求还是什么?
请帮我解决这些繁琐的问题.
谢谢.
以下是我的示例代码(出于安全目的,已更改了Auth Token和App ID):
<?PHP define('PW_AUTH','XXXXXXXXXXX'); define('PW_APPLICATION','XXXXXXXXXXX'); define('PW_DEBUG',true); function pwCall($method,$data) { $url = 'https://cp.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]); $ch = curl_init($url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,CURLOPT_ENCODING,'gzip,deflate'); curl_setopt($ch,CURLOPT_HEADER,CURLOPT_POST,CURLOPT_POSTFIELDS,$request); $response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request\n"; print "[PW] response: $response\n"; print "[PW] info: " . print_r($info,true); } } pwCall('createMessage',array( 'application' => PW_APPLICATION,'auth' => PW_AUTH,'notifications' => array( array( 'send_date' => 'now','content' => 'test','data' => array('custom' => 'json data'),'link' => 'http://pushwoosh.com/' ) ) ) ); ?>
登录时,他们应该将此推送令牌发送到PHP服务器,服务器应该注意将其与用户的数据一起存储.成功登录后,通常(但不是强制性的)服务器应生成一些唯一令牌并将其发送回设备,然后将用于它们之间的通信.如果没有到期要求,则此令牌足以知道用户已登录.
如果需要到期,则服务器应保存生成令牌的时刻的时间戳并将其存储到DB.这还需要在用户与app /服务器交互时更新时间戳.
可以将cron作业设置为每2分钟运行一次,这将调用PHP脚本.此PHP脚本遍历数据库中的表并检查新通知,如果发现,则应尝试发送推送通知.如果需要’登录’检查,脚本应该检查用户的令牌,并且成功时应该向Pushwoosh发送/ createMessage API请求以及相应的设备推送令牌. JSON请求中的参数应类似于:
"devices":["dec301908b9ba8df85e57a58e40f96f523f4c2068674f5fe2ba25cdc250a2a41"]
请注意,您最多可以添加1000个推送令牌.
请注意,1位用户可以在多台设备上安装该应用.在这种情况下,所有推送令牌都应在发送推送通知时存储和使用.
我希望我没有错过任何东西.