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

PHP*_*ver 8 php token push-notification apple-push-notifications pushwoosh

我是专业的PHP开发人员.所以,我对移动应用程序,iOS,Android等知识不太了解.所以,请尝试了解我.

我是一个由相应的开发团队使用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, true);
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, 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/'
            )
        )
    )
  );  
?>
Run Code Online (Sandbox Code Playgroud)

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

M. *_*bev 1

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

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

如果需要过期,那么服务器应该保存生成令牌时的时间戳并将其存储到数据库中。这还需要每当用户与应用程序/服务器交互时更新时间戳。

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

"devices":["dec301908b9ba8df85e57a58e40f96f523f4c2068674f5fe2ba25cdc250a2a41"]
Run Code Online (Sandbox Code Playgroud)

请注意,您最多可以在此处添加 1000 个推送令牌。

这样您就可以向具体用户的设备发送推送通知。

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

我希望我没有错过什么。