我是专业的 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,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/'
            )
        )
    )
  );  
?>

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

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

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

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

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

"devices":["dec301908b9ba8df85e57a58e40f96f523f4c2068674f5fe2ba25cdc250a2a41"]

请注意,您最多可以添加1000个推送令牌.

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

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

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

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

  1. ios – 使用Firebase实现推送通知的最佳方式

    是否有第三方或API可能无法实现此功能?我尝试过的一个解决方案是使用Zapier将Firebase连接到Pushover.在这一点上,我已经能够在应用程序中观察到我正在编码的事件,然后在我的iphone上的pushover应用程序中获得通知.但是,理想情况下,我希望在我的应用程序中收到通知,而不是在pushover应用程序中收到通知,因为我不希望用户需要pushover才能使用我的应用程序,因为我希望用户能够收到他们自己的通知,而不是所有人的通知.有没有人对如何处理这个问题提出建议?

  2. ios – 我可以使用Apple的推送通知服务发送图像吗?

    每当我的应用程序收到通知时,我都需要显示图像.Apple是否推送通知支持图像发送?更新如果上面的东西不可能的话,在收到通知的时候能在UIAlertview上显示url的图像.解决方法不可以.通知有效负载最长可达256个字节.只有当编码图像大小加上有效载荷的其余部分不大于那个时,您才能发送图像……没用.但是,您可以使用来自alertapn字典的launch-image属性来指定将在应用程序启动时使用的应用程序包中的图像.或者,您可以发送可在应用程序中下载图像的URL.请看一下AppleDocs

  3. Swift学习第十三枪-使用Swift开发IOS中蓝牙4.0的开发流程

    前面总结了几篇关于Swift的使用,今天要讲的是关于使用Swift开发IOS中蓝牙4.0的开发流程,我以前只是会搞android的蓝牙开发,最近开始了Swift的学习,作为一个swift爱好者,想把蓝牙4.0的这个装逼神器在swift中使用一下。使用Swift开发IOS中蓝牙4.0的开发流程有如下的几个步骤:建立桥接文件案例的实现1.建立桥接文件1.1在用Swift使用OC中得类文件的时候,需要进行桥接,首先建一个.h的头文件。

  4. 微信支付的开发流程详解

    这篇文章主要介绍了微信支付的开发流程的相关资料,需要的朋友可以参考下

  5. 使用PHP处理Apple推送通知服务的设备令牌的方法

    我在一些例子中看过它,但不是全部.>我无法让它为有意的坏设备令牌发出错误.为什么?>此解决方案是否可扩展到数千台设备?

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

    现在,让我们考虑更有活力和实用的东西.实际上MysqL数据库中有一个包含通知的表.只要任何新条目插入到该表中,我就要检查它是否(通知)是否为登录用户.如果存在为登录用户生成的任何新通知,我将通过“Pushwoosh”将推送通知发送给相关用户到他/她的相应设备.现在我的问题是,应该从应用程序端调用包含用于检查新通知并将其作为推送通知发送的代码的PHP文件,还是有其他方法?我的意思是PHP文件每隔两分钟从应用程序接收请求还是什么?

  7. php – 推送通知Drupal模块 – 删除设备(Web服务)

    我开始使用这个模块,我已经设法注册设备.现在我正在尝试取消注册设备但是当我发送http删除请求时,我获得的消息是“HTTP/1.1301永久移动”,我不知道发生在这里.我一直在网上冲浪,但我没有发现任何与此有关的事情……

  8. php – Microsoft推送通知服务403 – 禁止访问:拒绝访问

    当我从服务器调用不安全的请求时,一切正常.您需要允许在Apache的目录中进行访问.假设您具有超级用户访问服务器的权限,并且我不知道您的服务器是如何设置的,但您需要设置如下目录:

  9. php – Apple推送通知服务:证书安装服务器端?

    我已经没有调试想法了.任何方向都会很棒.我的服务器上dev.pem的路径不正确.这些指令确实是生成.pem文件的正确方法.一旦创建,它就可以在任何机器上使用.

  10. OpenDaylight 铍版本开发环境搭建流程

    清除之前安装的maven:转入下载目录:下载maven-3.3.9:解压安装maven-3.3.9:配置环境变量:测试是否安装成功:可选:提高Maven可用RAM总量的方法:一些OpenDaylight项目可能十分大,其耗费资源也会很大,因此,可以增加Maven的可用RAM。具体方法如下:3安装Git略。。。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部