位置:首页 » 技术2 » php APNS苹果推送通知服务的服务器端公共类

php APNS苹果推送通知服务的服务器端公共类

日期:2016-05-23 阅读:1num
Advertisement

APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务。[1] 该技术由苹果公司提供的APNS服务,下面来看一个比较完善的苹果推送通知服务的php服务器端公共类

前段时间开发的一套APNS推送平台效率很差,通过再次深入研究苹果的消息推送服务,总结了不少经验。同时也参考了网上一些技术blog的博文,重新完善了此前写过的一个PHP类,代码如下:

代码如下 复制代码

<?php
/**
* ApplePush 苹果消息推送公共类
*/
class ApplePush
{

const STATUS_CODE_INTERNAL_ERROR = 999;
const ERROR_RESPONSE_SIZE = 6;
const ERROR_RESPONSE_COMMAND = 8;

protected $_errorResponseMessages = array(
0 => 'No errors encountered',
1 => 'Processing error',
2 => 'Missing device token',
3 => 'Missing topic',
4 => 'Missing payload',
5 => 'Invalid token size',
6 => 'Invalid topic size',
7 => 'Invalid payload size',
8 => 'Invalid token',
self::STATUS_CODE_INTERNAL_ERROR => 'Internal error'
);

/**
* APNS server url
*
* @var string
*/
protected $apns_url = 'ssl://gateway.push.apple.com:2195'; //沙盒地址:ssl://gateway.sandbox.push.apple.com:2195

/**
* 推送数据
*
* @var string
*/
private $payload_json;

/**
* 数据流对象
*
* @var mixed
*/
private $fp;

/**
* 设置APNS地址
*
* @param string $url
*/

public function setApnsUrl($url)
{
if (empty($url)) {
return false;
} else {
$this->apns_url = $url;
}
return true;
}

/**
* 设置推送的消息
*
* @param string $body
*/
public function setBody($body)
{
if (empty($body)) {
return false;
} else {
$this->payload_json = json_encode($body);
}
return true;
}

/**
* Open 打开APNS服务器连接
*
* @param string $pem 证书
* @param string $passphrase 证书密钥
*/
public function open($pem, $passphrase)
{
if (empty($pem)) {
return false;
}
if (empty($passphrase)) {
return false;
}
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $pem);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
$fp = stream_socket_client($this->apns_url, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp) {
return false;
}
$this->fp = $fp;
return true;
}

/**
* Send 推送
*
* @param string $token
*/
public function send($token, $id)
{
$msg = pack('CNNnH*', 1, $id, 864000, 32, $token) . pack('n', strlen($this->payload_json)) . $this->payload_json;
// Send it to the server
$result = fwrite($this->fp, $msg, strlen($msg));
return $result;
}

public function readErrMsg()
{
$errInfo = @fread($this->fp, self::ERROR_RESPONSE_SIZE);
if ($errInfo === false || strlen($errInfo) != self::ERROR_RESPONSE_SIZE) {
return true;
}
$errInfo = $this->parseErrMsg($errInfo);
if (!is_array($errInfo) || empty($errInfo)) {
return true;
}
if (!isset($errInfo['command'], $errInfo['statusCode'], $errInfo['identifier'])) {
return true;
}
if ($errInfo['command'] != self::ERROR_RESPONSE_COMMAND) {
return true;
}
$errInfo['timeline'] = time();
$errInfo['statusMessage'] = 'None (unknown)';
$errInfo['errorIdentifier'] = $errInfo['identifier'];
if (isset($this->_aErrorResponseMessages[$errInfo['statusCode']])) {
$errInfo['statusMessage'] = $this->_errorResponseMessages[$errInfo['statusCode']];
}
return $errInfo;
}

protected function parseErrMsg($errorMessage)
{
return unpack('Ccommand/CstatusCode/Nidentifier', $errorMessage);
}

/**
* Close APNS server 关闭APNS服务器连接
*
*/
public function close()
{
// Close the connection to the server
fclose($this->fp);
return true;
}
}
?>

相关文章
  • php APNS苹果推送通知服务的服务器端公共类

    APNS(英文全称:Apple Push Notification Service),中文翻译为:苹果推送通知服务.[1] 该技术由苹果公司提供的APNS服务,下面来看一个比较完善的苹果推送通知服务的php服务器端公共类 前段时间开发的一套APNS推送平台效率很差,通过再次深入研究苹果的消息推送服务,总结了不少经验.同时也参考了网上一些技术blog的博文,重新完善了此前写过的一个PHP类,代码如下: 代码如下 复制代码 <?php /** * ApplePush 苹果消息推送公共类 */ cla

  • JAVA APNS苹果推送

    最近在做苹果推送,找到了一个比较好的开源项目,国人写的 下载地址为:https://github.com/RamosLi/dbay-apns-for-java 调用代码如下: import java.io.InputStream; import java.util.List; import com.dbay.apns4j.IApnsService; import com.dbay.apns4j.impl.ApnsServiceImpl; import com.dbay.apns4j.model.

  • Windows Phone 7推送通知服务范例

    推送服务端代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; namespace PushNotifica

  • iPhone应用中APNS推送通知流程代码实现案例

    iPhone应用中APNS推送通知流程代码实现案例是本文要介绍的内容,主要是如何来实现APNS的推送通知,具体内容来看本文详细代码. 1. 将app注册notification里面, 并从APNS上获取测试机的deviceToken. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UIApplication share

  • 移动设备和SharePoint2013-第3部分:推送通知 移动设备和SharePoint2013-第3部分:推送通知

    推送通知 可以在SharePoint站点启用推送通知服务来发送设备更新如瓷砖或吐司通知到Windows Phone设备. 通知包含发生在网站的事件,比如当用户将一个条目添加到一个列表中或更新一个条目. 它并没有取代报警Alert功能(电子邮件通知),是一个额外的功能. SharePoint Server 2013支持移动设备上的应用程序从一个SharePoint站点接收通知. 移动设备必须和一个SharePoint站点注册来接收这样的通知.一旦注册,你就可以编写事件处理代码来和微软推送服务(MP

  • 移动设备跟SharePoint 2013 - 第3部分:推送通知 移动设备跟SharePoint 2013 - 第3部分:推送通知

    移动设备和SharePoint 2013 - 第3部分:推送通知 博客地址:http://blog.csdn.net/foxdave 原文地址 在该系列文章中,作者展示了SharePoint 2013最显著的新功能概观--对移动设备的支持. 该系列文章: 移动设备和SharePoint 2013 - 第1部分:概述 移动设备和SharePoint 2013 - 第2部分:设备管道和SharePoint页面模型 移动设备和SharePoint 2013 - 第3部分:推送通知 移动设备和Share

  • Windows Phone 7编程实践—推送通知(剖析推送通知实现架构) Windows Phone 7编程实践—推送通知(剖析推送通知实现架构)

    xuesong 作品目标:Windows Phone 7 开发的实用手册 推送通知的工作流 Window Phone客户端应用程序请求与微软推送通知服务(Microsoft Push Notification Services)建立通道连接,微软推送通知服务(Microsoft Push Notification Services)使用通道URI响应. Window Phone客户端应用程序向监视服务(Web Service或者Cloud Application)发送包含推送通知服务通道URI以

  • Windows Phone 7 开发 31 日谈——第19日:推送通知 Windows Phone 7 开发 31 日谈——第19日:推送通知

    第19日. 昨天,我介绍了WebBrowser控件,以及如何在程序中使用它.今天,我们来谈谈可能是这个系列中最重要的话题:推送通知. 可能你对推送通知这个概念还不是很熟悉,其实很简单:不用强制你的应用程序每几分钟就去检查一下服务器,服务器在有新数据的时候可以通知你的手机. 为什么要使用推送通知? 第一个原因,节省用户的电池电量.检测服务器数据很耗电,而在手机中,电池绝对是稀缺资源.你永远不会有足够的电量,并且不论你的电池能撑多久,都要尽量避免会使电池续航时间变短的通知. 第二,你可以通过推送通知

  • 再次深入研究苹果消息推送服务(APNS) 完善PHP版服务器端公共类

    再次深入研究苹果消息推送服务(APNS) 完善PHP版服务器端公共类 十二月 18, 2014 前段时间开发的一套APNS推送平台效率很差,通过再次深入研究苹果的消息推送服务,总结了不少经验.同时也参考了网上一些技术blog的博文,重新完善了此前写过的一个PHP类,代码如下: PHP 'No errors encountered', 1 => 'Processing error', 2 => 'Missing device token', 3 => 'Missing topic', 4

  • 苹果推送机制APNs(1) 苹果推送机制APNs(1)

    苹果推送机制APNs(一) 推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台"个推"(非广告).今天要学习的是苹果提供的推送服务APNs(Apple Push Notification services)基本原理和工作流程. 苹果的推送服务APNs基本原理简单来说就是苹果利用自

  • IOS学习笔记33—苹果推送机制APNs(一) IOS学习笔记33—苹果推送机制APNs(一)

    推送是解决轮询所造成的流量消耗和电量消耗的一个比较好的解决方案,在Android上,虽然Google提供了GCM(之前为C2DM),但在国内基本等于没用,各大Android应用基本都自己架设推送Server或是使用第三方推送平台,例如新浪微博使用第三方推送平台"个推"(非广告).今天要学习的是苹果提供的推送服务APNs(Apple Push Notification services)基本原理和工作流程. 苹果的推送服务APNs基本原理简单来说就是苹果利用自己专门的推送服务器(APNs

  • 苹果iPhoneSE锁屏不显示推送通知怎么设置 苹果iPhoneSE锁屏不显示推送通知怎么设置

    苹果iPhoneSE锁屏不显示推送通知怎么设置?相信很多小伙伴们都不想被人看到自己的应用消息给别人看到吧,这就需要我们关闭锁屏显示通知了,防止隐私泄露,下面小编将为你们讲下苹果iPhoneSE锁屏不显示推送通知教程! 1)首先我们先打开[设置],然后找到[通知],打开后我们再选择自己要进行设置的应用软件.(如下图) 2)最后将[在锁定屏幕上显示]那栏右边的椭圆 往左拉关闭即可.(如下图)

  • 苹果6sPlus怎么关闭应用推送通知 苹果6sPlus怎么关闭应用推送通知

    苹果6sPlus关闭应用推送通知教程.最近常常能听到网友抱怨,说自己下载的应用软件老是推送一些自己不敢兴趣的东西来,相当烦躁,到底怎样才能关闭这些应用软件的推送通知呢,下面就让小编来教你们苹果6sPlus如何关闭应用推送通知吧! 1)首先我们先打开[设置],然后找到[通知].(如下图) 2)然后挑选你需要关闭通知的应用软件并点击,打开后我们再把[允许通知]那栏右边的[椭圆]往左拉关闭即设置成功.(如下图)

  • 苹果iPhoneSE应用推送通知怎么关闭 苹果iPhoneSE应用推送通知怎么关闭

    苹果iPhoneSE应用推送通知怎么关闭?相信很多小伙伴们都有为一些不常用的应用软件所推送的消息通知搞得相当烦躁吧,那么我们应该如何关闭掉这些应用推送通知呢,下面就让小编来教你们苹果iPhoneSE应用推送通知关闭教程吧! 1)首先我们先打开[设置],然后打开[通知].(如下图) 2)打开后我们再点击自己需要设置的应用,最后再把[允许通知]那栏右边的椭圆往右拉打开即可.(如下图)

  • 苹果推送APNS有关问题总结

    苹果推送APNS问题总结 苹果推送APNS问题总结 iOS边城之推送APNS详解

  • 基于C++ 的苹果apns消息推送实现(二)

    基于C++ 的苹果apns消息推送实现(2) 1.本模块使用C++ 和 Openssl 代码 实现了一个简单的apns客户端 2.本文的姐妹篇:基于boost 的苹果apns消息推送实现(1) 3.最初使用的sslv23/sslv2/sslv3只能和apple 建立连接,但一直是handshake失败, 最后换tls连接,握手成功! original_ssl_client.h #ifndef original_ssl_client_h #define original_ssl_client_h

  • 苹果iPhone6S怎么关闭应用推送通知 苹果iPhone6S怎么关闭应用推送通知

    因为工作原因,大猫手机里装了很多软件,所以,每天有一半的电量会消耗在应用推送通知上,但是,大猫想到了一个办法可以关闭这些烦人的通知,想知道的话就随大猫来学习以下这篇教程吧! 1)点击[设置]进入,然后点击[通知]一栏.(如下图) 2)接着选择要关闭的[应用],最后关闭[允许通知]右边滑块即可.(如下图)

  • iOS网络推送通知

    推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端. 推送通知的过程可以分为以下几步: 应用服务提供商从服务器端把要发送的消息和设备令牌(device token)发送给苹果的消息推送服务器APNs. APNs根据设备令牌在已注册的设备(iPhone.iPad.iTouch.mac等)查找对应的设备,将消息发送给相应的设备. 客户端设备接将接收到的消息传递给相应的应用程序,应用程序根据用户设置弹出通知消息. 1.应

  • 浅谈iPhone 中Push 效能原理 推送通知(收藏) 浅谈iPhone 中Push 效能原理 推送通知(收藏)

    浅谈iPhone 中Push 功能原理 推送通知(收藏) iPhone 中Push 功能原理 推送通知是本文要介绍的内容,主要讲述了PUSH的一些功能,具体内容先来看本文讲述. Push原理 (以下绝大多数内容参考自.图片来自iPhone OS Reference Library) 机制简介 Push 的工作机制可以简单的概括为下图 图中, Provider是指某个iPhone软 件的Push服务器. APNS 是Apple Push Notification Service(Apple Pus

  • iphone推送通知java 实现

    前提准备, 在编写push notification之获取device token中拿到device token以后,需要把token字符串发送给应用的服务器端,即provider. 对于越狱手机获取不到device token的可以通过cydia安装pushdoctor,安装方法可以google一下在这就不多说了,我的越狱手机通过安装push补丁可以获取token了. provider将token号.通知内容.通知形式(比如是否弹出提示窗口.是否发声等)发送给苹果的服务器(apns). 最简单

最新文章
  • 如何在已安装好的centos下创建swap partion?

    服务器有两块硬盘,组成了hardware raid1. 分区如下: /dev/sda1 -- /boot /dev/sda2 -- /,创建了vg,lv为lv-root 已经通过cfdisk创建了/dev/sda3,并且格式化为swap. # vim /etc/fstab dev/mapper/vg_root-lv_root / ext4 defaults 1 1 UUID=0be9d86f-9377-4199-8f23-9cc8d0663f7b /boot ext3 defaults 1 2

  • 单反相机入门教程: 单反相机菜单的调节 单反相机入门教程: 单反相机菜单的调节

    本文出自<跟我学摄影:数码单反实战入门手册>一书,由(英)Digital Camera杂志著作.<影像视觉>杂志编译,本文由世界图书出版公司·后浪出版咨询(北京)有限责任公司授权发布,未经允许请勿转载. 掌控菜单:按照我们的操作指南,设置好你的数码单反相机,让它为拍摄做好准备. 如何对数码单反相机进行设置,会对你最终拍的照片产生很大影响.在这里,我们将向你解释,拍摄漂亮照片所需要的一些正确设置.正确选择图像质量是按下快门之前最重要的工作,它决定了照片是用多大分辨率拍摄的,并会影响照

  • 900出24寸1080P LED电视,只用了一天

    前天在京东买了台Pangoo/盘古24英寸LED液晶电视/显示器 http://www.360buy.com/product/1000333071.html 本来是想当显示器用的,到货发现当显示器字太虚了,没法用. 不过当电视还是不错的,有HDMI口,1080P分辨率,可以用来接Dish之类的.做工也还不错.但是家里不缺电视--就出了吧. 只用了一天,遥控器和线缆还没拆包,发票全.电视整机保修一年,屏幕保修三年. 上海面交,900出. --cut-- cloudream在2012-06-28 2

  • 简单的补肝养肾茶

    年纪轻轻就白发苍苍,应从精神层面去找出原因,恐慌.忧虑.精神过度紧张.长期劳累都可能引起早生白发.民间故事中,"伍子胥过昭关,一夜愁白了头,"就是一个很好的例子.一般人在过35岁以后,也容易出现白发,依中医说法这与肝肾功能衰退有关,可以及早作预防.至于拔一根白发会长十根是骗人的,当发现白发像杂草一样拔不完时,久而久之就懒得去理它了. 组成:熟地黄20克,何首乌10克,枸杞子15克,菊花5克. 做法:1.将熟地黄.何首乌撕碎,用纱布袋包好.2.取一茶碗,放入药包.枸杞子和菊花,冲入350

  • 怎样使用美图秀秀巧妙处理偏色照片? 怎样使用美图秀秀巧妙处理偏色照片?

    同学们在日常拍照的时候肯定有遇到过照片偏色问题,在不同的光线下,尤其是也玩,很容易拍出偏色的照片,影响了照片画质.所以今天,我就来跟大家分享一个用"美图秀秀"软件简单处理偏色照片的方法,希望对同学们有帮助. 以这幅刘惜君的舞台照为例,色偏调节后的照片效果明显更好看很多! 步骤/方法 用"美图秀秀"打开要处理的偏色照片,点击"美化"菜单. 利用不同色调进行微调以达到色彩平衡.比如照片偏红色则往青色调节,偏紫则往绿色方向调节,以此类推直到做出最满意的

  • 曝iPhone7后壳将采用熔融玻璃制作工艺 曝iPhone7后壳将采用熔融玻璃制作工艺

    正在国产智能手机纷纷推出全金属外壳,各种工艺炫目登场后,近日有消息称,苹果下一代手机后壳将抛弃金属回归玻璃.但是并非普通玻璃,而是一项申请了专利的全新材质玻璃. 据消息人士透露,苹果已为下一代手机后壳材质申请专利,并把它命名为"熔融玻璃设备外壳(Glass Fusion Device Housings)"这项技术不光会用在iPhone上面,iPad.Mac以及Apple TV等产品都会采用这种全新材质的后壳. 据悉,熔融玻璃设备外壳通过玻璃熔融工艺将多块玻璃拼接到一起,而外围玻璃熔融到

  • Photoshop绘制立体效果的电吉他 Photoshop绘制立体效果的电吉他

    最终效果 绘画所需的所有素材我已经下载整理打包上传到网盘上了!想学习这个教程的可以自行选择下载! 素材下载:(点击下面的箭头即可下载) #FormatImgID_2# 1.在Photoshop中打开素材照片,选择裁剪工具 2.放大画布区域,并保存文件 3.在Illustrator中打开该文件,并在选项栏里,单击"Document Setup"文档设置 4.单击"Edit Artboards"编辑面板 5.拖动画布边界框,使其符合画布大小相等的图像 6.选择钢笔工具,

  • 曝光补偿:自动模式下的手动控制 曝光补偿:自动模式下的手动控制

    数码单反今日的辉煌 数码相机是非常智能和强大的工具.它们可以自动测量和计算光线,决定曝光值,调整白平衡,寻找焦点,以及在后台做了很多我们都没注意到的事情.数码单反如此智能,以至于有些新晋摄影师认为只用自动功能就足够了.关于这一点我可以写一篇完整的论述来说明为何它是错误的,不过这并不是本文的主题. 手动模式是很多摄影师(包括专业的)会感到恐惧的东西.使用手动模式拍摄,你基本上关闭了相机的大部分系统.测光表还在工作,但曝光的决定权已经交给了你.光圈和快门现在都由你来决定了. 每个摄影师的习惯都不同,

  • 开学耀好礼 荣耀X2全系精品引爆“荣耀平板周” 开学耀好礼 荣耀X2全系精品引爆“荣耀平板周”

    转眼又是一年开学季!即将到来的九月,是莘莘学子回归校园的日子,在充满期待的新学期里,一款称心的数码产品也要排上消费日程.8月24日,由荣耀联合京东在开学季推出的"开学耀好礼荣耀平板周"活动正式拉开帷幕,荣耀平板家族精品全数亮相,展开为期一周的狂欢大趴;而作为荣耀在2015年推出的一款7英寸跨界神器,荣耀X2霸气领衔,携全系列产品参与活动.更令人振奋的是,成功购买产品的消费者还将有机会参与抽奖.秒杀.晒单等活动,更多优惠.更多惊喜等着你. 值得一提的是,本次"开学耀好礼荣耀平板

  • 淘宝图片广告幻灯片js代码

    文章为你提供一款精美的淘宝图片广告幻灯片js代码,可以自动切换的js效果代码哦. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <he

热门推荐
  • Windows7系统Aero特效问题 Windows7系统Aero特效问题 首先,点击开始菜单,在搜索栏内输入Aero,在搜索结果中选定"查找和解决Aero及其他视觉效果的问题"链接. 然后,单击下一步执行修复程序.如果还是没有效果,可以选择系在新的显卡驱动. 点评:对于某些品牌电脑的系统定制商将Aero特效关闭了,用户可以在注册表中修改: 找到 HKEY_CURRENT_USERSoftwareMicrosoftWindowsDWM,右键属性中,值为1代表启用,0代表禁止.
  • 用Painter把照片处理成漂亮漫画效果 用Painter把照片处理成漂亮漫画效果 教程教本站的朋友们用Painter把照片处理成漂亮漫画效果,教程有点老了,应该是属于painter8时代的,但是这并不影响我们学习作者的方法,转发过来,和大家分享下,先来看看效果图吧: 原图: 具体的制作步骤如下: 1.打开Painter8,按[Ctrl+O]的组合键打开一张数码照片.执行[File]/[Clone](文件/克隆)的菜单命令.(图2.5.1.1和图2.5.1.2所示)
  • 美国死亡谷惊现存活3.4万年的远古细菌 美国死亡谷惊现存活3.4万年的远古细菌 据媒体报道,美国研究人员在挖掘东加州死亡谷下的盐晶时,意外挖出一些存活3.4万年的细菌,这些远古细菌是在盐晶充满液体的微小空腔里发现的. 这些盐晶是在东加州死亡谷国家公园的沙漠下发现的 据报道,获此发现的布莱恩-斯库伯特说:"发现令人吃惊,这些细菌竟然还活着,但是不用任何能量四处游动,也不繁殖或复制,它们除了保持自己的生命外不做任何事情."斯库伯特现在是夏威夷大学的助理研究人员,他表示,这些细菌可以收缩变小,通过冬眠形式中止任何活动. 这些细菌之所以能够存活这么长时间,显然是因为它们被
  • 北科建无锡科技创新园邀企业家迎智能时代 北科建无锡科技创新园邀企业家迎智能时代 "物联网大到我们无法忽略,不管我们喜欢不喜欢,都一定要往物联网走."统管全美电信业的美国联邦通信委员会资料长(Chief Data Officer)Tony Summerlin表示,连他都不得不正视物联网带来的冲击,因为"物联网有潜力可以改变我们的世界,就如同网际网路改变我们的世界一样.无锡是"感知中国中心"和中国物联网的发祥地,物联网产业已形成一定规模,物联网技术在国内乃至国际处于领先地位.无锡中关村科技创新园作为无锡新区发展新兴产业.建设科技新城的重要