gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:38:42 24 4
gpt4 key购买 nike

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

我有一个由相应开发团队使用 iOS 开发的应用程序。现在,我必须使用 Pushwoosh 为这个应用程序提供 Push-Notifications

我已经理解推送通知和 Pushwoosh 的用法是什么意思了。此外,我还可以使用从 Pushwoosh 控制面板 获得的 app_id 和 auth_key 发送示例推送通知。当我从服务器运行相应的 PHP 文件时,我收到带有正确状态代码的“成功消息”。

我的问题是实际上如何从服务器端的角度将此推送通知服务实现到应用程序中?

现在让我们考虑更动态和更实际的事情。

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

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

换句话说,我的疑问是是否应该仅在应用发出请求时才执行新通知检查?

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

那么在这种情况下,包含代码的 PHP 文件应该如何执行,因为没有收到针对它的请求?

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

假设,如果请求是针对 PHP 文件的,那么我是否需要在 PHP 代码中为该特定用户进行基于 token 的身份验证,或者它将在应用程序端完成,只有在成功验证用户后,他们才会发送请求到 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/'
)
)
)
);
?>

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

最佳答案

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

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

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

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

"devices":["dec301908b9ba8df85e57a58e40f96f523f4c2068674f5fe2ba25cdc250a2a41"]

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

通过这种方式,您将向具体用户的设备发送推送通知。

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

我希望我没有遗漏任何东西。

关于php - 使用 PHP 和 Pushwoosh 开发的推送通知服务功能的适当系统流程应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30634232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com