注意事项: 1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的); 2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间 3.返回的数据由三部分组成,请看下面的图 结

注意事项:

1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的);

2.获取的token是在上次你给你的应用发推送失败时加feedback服务的,里面会返回失败的具体时间

3.返回的数据由三部分组成,请看下面的图

结构中包含三个部分,第一部分是一个上次发推送失败的时间戳,第二个部分是device_token的长度,第三部分就是失效的device_token

下面是我的代码:

connect($param['host'],$param['port'])){

print "connect redis OK";

}else{

print "failed to connect redis server";

return false;

}

return $redis;

}

/**

* @desc 执行推送操作的主要代码

*/

function feedback(){

$count1 = 0;

$run_times = 0;

$redis_server = "tcp://localhost:6379";

$iostokenremoved= 'iostokenremoved';

$iostokenremoved_num = 'iostokenremoved_num';

$fp = connect_feedback();

$redis = connect_redis($redis_server);

//苹果建议provider和feedback服务维持一个长连接,如果频繁的建立连接可能会被当做攻击处理

$devcon ='';

while($run_times<2000){

$run_times++;

//socket连接检测

if($devcon ===FALSE){

print date('Ymd His').'|feedback server disconnected';

@fclose($fp);

unset($fp);

$fp = connect_feedback();

}

//redis连接检测

if(!is_resource($redis) OR !$redis->ping()==='+PONG'){

print date('Ymd His').'|redis server disconnected';

@$redis->close();

unset($redis);

$redis = connect_redis($redis_server);

}

//每次读取38个字段,这是保存的一个完整token 信息的长度

while ($devcon = fread($fp, 38)){

$count1 ++ ;

$arr = unpack("H*", $devcon);//解包传过来的二进制数据

$rawhex = trim(implode("", $arr));

$feedbackTime = hexdec(substr($rawhex, 0, 8));

$feedbackDate = date('Y-m-d H:i:s', $feedbackTime);

$feedbackDeviceToken = substr($rawhex, 12, 64);

//记录被删除的token

$redis->hSet($iostokenremoved,$feedbackDeviceToken,$feedbackDate);

//记录每天的卸载数量

$redis->hIncrBy($iostokenremoved_num,date('Y-m-d',$feedbackTime),1);

}

echo 'FeedBack:'. $count1 . PHP_EOL;

usleep(10000000);//sleep 10秒

}

$redis->close();

fclose($fp);

}

//可以通过命令行来执行这个脚本 php -f feedback.php feedback

if(isset($argc[1]) && function_exists($argv[1])){

$argv[1]();

}else{

die('invalid input');

}

java apns feedback_php从苹果apns的feedback服务器获取推送失败的token相关推荐

  1. ios5.1.1旧版软件下载_苹果iOS 14.1正式版推送 关闭旧版本降级通道

    上周,苹果正式发布了iOS14.1 正式版.而就在今天,苹果则停止了对iOS 14.0.1的验证.这样的举措意味着用户将无法再降级到这一版本. 苹果iOS 14.1正式版推送 关闭旧版本降级通道 iO ...

  2. 传腾讯计划出售美团全部股权,知情人士辟谣;苹果证实iOS 16要大量推送广告;Linux 6.0-rc1 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. 传腾讯计划出售美团全部股权,知情人士辟谣;苹果证实iOS 16要大量推送广告;Linux 6.0-rc1 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  4. 苹果服务器怎样推送消息,ios消息推送

    之前一篇说了ios推送证书的生成.这是开发推送的基础环境.这次介绍的是怎么去开发. 来几句废话: 苹果的推送相比于安卓的推送,显得更加清晰,简明许多.首先不必考虑那么多厂商配置,其次苹果的送达率要比安 ...

  5. 苹果4怎么越狱_来看iPhone迁移怎么用 除iOS12.4苹果还为旧款设备推送了更新

    北京时间今天凌晨,经过了多个beta版后,苹果推送了iOS 12.4正式稳定版,根据官方更新说明显示,在该版本中新增了 iPhone 迁移功能,可将数据直接从旧 iPhone 传输至新 iPhone, ...

  6. java以post发送方式实现百度链接提交主动推送(实时)

    SEO/JAVA技术学习,更多知识请访问https://www.itkc8.com 怎么实现百度sitemap实时推送,首先,得拥有自己的网站,然后在百度站长上验证通过之后,才有资格推送百度sitem ...

  7. java隔几秒发数据_java – 如何将数据推送到jsp而不是每2秒请求一次?

    使用Spring最好的办法是将计划查询的结果存储到内存中的bean中,然后让另一个请求范围bean将该结果存储在Web可访问的方法中,并将其作为文本(或JSON)返回.或者,您可以在每次请求更新时查询 ...

  8. java websocket修改为同步_服务端向客户端推送消息技术之websocket的介绍

    websocket的介绍 在讲解WebSocket前,我们先来看看下面这种场景,在HTTP协议下,怎么实现. 需求: 在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图: ​ 当发送私信的时候,如 ...

  9. 诺基亚106支持Java,如何使用诺基亚Java SDK 2.0在诺基亚40系列中实现推送通知?

    I want my app to be able to receive notification from the server while it is running in the backgrou ...

最新文章

  1. ASP.netcore MVC钉钉H5微应用(二)鉴权
  2. 【leetcode】974. Subarray Sums Divisible by K
  3. python3 读写中文文件
  4. 超实用!VLAN、TRUNK、VLAN间路由基础
  5. Xshell怎么把界面信息(终端信息)输出到log(打印到文本文件)
  6. 抢票 | AI未来说学术论坛第八期 深度学习特别专场
  7. Express 路由模块化以及 Express 应用程序生成器
  8. Java 解决采集UTF-8网页空格变成问号乱码
  9. Android开发笔记(四十八)Thread类实现多线程
  10. php查找二维数组值,根据二维数组某个字段的值查找数组
  11. JAVA容器_java集合容器之Stack
  12. shell基础之bus实战(if 练习)
  13. 树莓派怎么切换输入法_为树莓派安装Fcitx和谷歌拼音中文输入法
  14. 采样频率在频谱分析中的理解
  15. [笔记] Codeforces#274 Riding in a Lift (479E) DP
  16. 管理人员巡店用表-店长每日工作流程
  17. 抄袭/模仿/致敬的那些事:从《以父之名》说起(转)
  18. Speedoffice(excel)如何快捷隐藏表格内所有空行
  19. 使用Python 封装一个简单的Mysql工具类
  20. 谷歌SEO排名受哪些因素的影响?(一)

热门文章

  1. 乙女心,养的第一株多肉小植物
  2. 用C#WebClient+Server酱写一个监听网站通知的功能
  3. 返回多字段并用数组分割方式展示
  4. HTML5网页设计期末大作业 ~金福普洱茶叶网页设计成品6页面带视频留言验证(HTML+CSS+JS)~ 学生hbuilder网页设计作业成品源码
  5. 普鸥知产|亚马逊品牌备案被判“滥用行为”无法备案如何解决?
  6. PIA (Primary Interop Assembly) AIA (Alternate Interop Assembly)简介
  7. 赵小楼《天道》深度解析(75)客观是对现有事实的认可,嘴上认可可不行,得心里认,否则就是自欺
  8. c语言程序项目设计三角函数,《C语言及程序设计》实践参考——编制三角函数表...
  9. UE4 如何开启 EQS
  10. C++ 纯WIN32 API编程 悦读器实战示例