PHP技术来查询APNs反馈服务器

有人可以澄清什么APNs(苹果推送通知)要求您如何查询它?

文档说,一旦build立连接就开始发送。 这是否意味着我不做一个fread()呢?

这是我目前的代码来尝试阅读它。 我没有把fread()放在一个循环中,因为我不知道什么响应表示“没有更多的logging要读取”,我不希望在我的服务器上出现无限循环。

到目前为止,我所得到的是一个空回复。 没有错误,所以它正在连接。

我不知道是否空回答意味着没有数据,或者我的fread()是做错的方法。

谢谢

以下是我第一次尝试连接时遇到的困扰:APNS反馈服务器只会返回自上次反馈请求以来 “已过期”的设备令牌。 这意味着大多数情况下你会得到一个NULL响应,除非你已经处理了大量的应用程序用户。

因此,请确保将过期的设备标记存储到磁盘或分贝,因为在您的反馈查询后,它们已经消失。 这使得testing痛苦至less可以说!

这是一个完整的function,从APNS反馈服务器获取设备令牌(很多感谢上面的答案,帮助我把它们放在一起):

function send_feedback_request() { //connect to the APNS feedback servers //make sure you're using the right dev/production server & cert combo! $stream_context = stream_context_create(); stream_context_set_option($stream_context, 'ssl', 'local_cert', '/path/to/my/cert.pem'); $apns = stream_socket_client('ssl://feedback.push.apple.com:2196', $errcode, $errstr, 60, STREAM_CLIENT_CONNECT, $stream_context); if(!$apns) { echo "ERROR $errcode: $errstr\n"; return; } $feedback_tokens = array(); //and read the data on the connection: while(!feof($apns)) { $data = fread($apns, 38); if(strlen($data)) { $feedback_tokens[] = unpack("N1timestamp/n1length/H*devtoken", $data); } } fclose($apns); return $feedback_tokens; }

如果一切正常,这个函数的返回值就像这样(通过print_r()):

Array ( Array ( [timestamp] => 1266604759 [length] => 32 [devtoken] => abc1234..............etcetc ), Array ( [timestamp] => 1266604922 [length] => 32 [devtoken] => def56789..............etcetc ), )

该代码看起来是正确的,但是您需要循环并检查stream结束以读取所有设备代码。

while (!feof($apns)) { $devcon = fread($apns, 38); }

然而我的问题是实际的数据解包。 有谁知道如何解压缩刚刚读取的二进制数据以获得实际的设备ID(string)以及时间戳等?

我从苹果论坛得到了解决scheme,这是为了开发。 试试这也用于生产。

“好吧,听起来很愚蠢,我find了一个解决办法:

在程序门户中创build一个虚拟应用程序ID,在其上启用开发推送通知创build并下载关联的供应configuration文件创build一个新的xcode项目,并在启动时调用registerForRemoteNotificationTypes方法。 在您的设备上安装虚拟应用程序。 此时,您应该在设备上运行两个“开发”应用程序:原始应用程序和虚拟应用程序。 两者都应该注册以接收推送通知。 卸载原来的应用程序,并尝试发送推送通知到该应用程序。 调用反馈服务,你应该收到数据。“

这终于为我工作。

$arr = unpack("H*", $devconts); $rawhex = trim(implode("", $arr)); $feedbackTime = hexdec(substr($rawhex, 0, 8)); $feedbackDate = date('Ymd H:i', $feedbackTime); $feedbackLen = hexdec(substr($rawhex, 8, 4)); $feedbackDeviceToken = substr($rawhex, 12, 64);

然后你只需根据时间戳检查设备标记!

apns 服务器 php,PHP技术来查询APNs反馈服务器相关推荐

  1. cmd显示服务器对区域没有权威,查询dns解析服务器地址cmd命令

    查询dns解析服务器地址cmd命令 内容精选 换一换 一次完整的HTTP请求包括域名解析.建立TCP连接.发起请求.服务器接收到请求进行处理并返回处理结果.浏览器对HTML代码进行解析并请求其他资源, ...

  2. 刀片服务器仿真项目,技术详解:刀片服务器I/O的课题

    刀片服务器扩展能力历来遭人诟病,率先发难的是虚拟化.由于通过虚拟化的整合,更多的应用被集中到少数的物理服务器,如此,I/O瓶颈的问题将更加突出.在机架式服务器的解决方案中,可以通过增加网卡,通过链路汇 ...

  3. dcs系统opc服务器,用DCOM技术实现DCS与其OPC服务器的通信.PDF

    用DCOM技术实现DCS与其OPC服务器的通信.PDF <工业控制计算机> 年 卷第 期 -$ !""# $% & 用'()* 技术实现'(+ 与其),( 服务 ...

  4. sql server服务器位置,SQL语句实现查询SQL Server服务器名称和IP地址

    获取服务器名称: SELECT SERVERPROPERTY('MachineName') select @@SERVERNAME select HOST_NAME() 获取IP地址可以使用xp_cm ...

  5. 服务器系统报错如何查询日志,WSUS服务器日志报错,请大家帮忙看看。

    日志查看器中持续报错,但是系统却看不到有什么异常情况,大家看看怎么回事: 事件类型: 错误 事件来源: crypt32 事件种类: 无 事件 ID: 8 日期:  2010-9-26 事件:  16: ...

  6. 什么是服务器集群技术,有哪些优缺点?

    对于服务器朋友们了解多少呢?而服务器集群技术又是什么服务器?朋友们都了解吗?今天这篇文章华纳云小编就给大家介绍一下 什么叫服务器集群技术? 就是抱团取暖,服务器集群技术是将若干台服务器集中起来进行某一 ...

  7. 深入了解 cometd的服务器推送技术

    简介:服务器推送技术已经出来一段时间了,业界上也有不少基于这种技术(应该说是设计模式)的开源实现,但是要移植或者说应用到自己的项目上都比较麻烦.Dojo 这样一个大型的 Web2.0 开发框架提供了一 ...

  8. 用友服务器文件如何查找,如何查询用友t3服务器地址

    如何查询用友t3服务器地址 内容精选 换一换 本节介绍如何查看云服务器的mac地址.云服务器的mac地址不支持修改.登录Linux云服务器.执行以下命令,查看云服务器的mac地址.ifconfig查看 ...

  9. 如何找同服务器下网站,利用bing查询同一服务器IP下的所有网站

    如何利用bing必应搜索引擎查询同一服务器IP下驻扎的所有网站. 早晨在搜索引擎周边看到了这篇帖子,发现bing必应搜索引擎原来也是一个不错的SEO工具,觉得很有价值,于是将这个技术应用方式也分享给本 ...

最新文章

  1. pandas怎么选取dataframe中几列
  2. pycharm 远程调试图文_Pycharm配置远程调试的图文步骤
  3. 能否向函数传递一个数组?
  4. python内置json模块的作用_json和simplejson Python模块之间有什么区别?
  5. ITM_win_agentCPU内存占用较高
  6. python判断正数和负数教案_正数和负数 教学设计
  7. 详解javascript中的call, apply
  8. transition动画与transform变换(了解
  9. 【剑指offer】面试题15:二进制中1的个数(Java)
  10. 理解复杂的C/C++声明 const, typedef , 函数指针(转贴)
  11. 停滞数年后,ElasticJob 携首个 Apache 版本 3.0.0-alpha 回归!
  12. 搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(四)
  13. 模块讲解----XML模块
  14. linux内核打印%us,linux-kernel-使用us计时器跟踪Linux内核,按功能(仅最大)
  15. C和指针 (pointers on C)——第十章:结构体和联合(上)
  16. kb2999226此更新不适用你的计算机,Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机...
  17. loadRunner之中文语言包安装
  18. 元学习—MAML模型Pytorch实现
  19. html盒子模型 正方形嵌套,div盒子模型实例
  20. 【Python打卡2019】20190421之52周存钱挑战

热门文章

  1. python KeyError: 4
  2. 证明sinx/x的极限等于1(x趋向于0)
  3. opencv reduce函数
  4. android使用okthtp
  5. 十、Redis五大数据类型之二List
  6. 计算机处理文献信息 需要,科学素养与科研方法 考试85.doc
  7. Linux内核ipsec密码库,关于2.6.18 ipsec内核支持(NETKEY)的问题
  8. ignite windows无法访问linux ignite集群_Linux常见命令
  9. 需要氪金吗_《天堂2:血盟》到底需不需要氪金?玩家:可以但是没有必要
  10. Redis入门教程(一)