位置:首页 » 技术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). 最简单

最新文章
  • ZBrush头发雕刻教程详解 ZBrush头发雕刻教程详解

    先建3个Z球,并将他的级别降到1级. 降级后网格的面变少了. 这样有利我们造型时更好的把握整体. 把它转网格后,使用SubTool导入到我的模型中,大小有可能不太适配,我们可以使用移动线工具调整,由于所做是一个有辫子的头发,我们可以使用Edge Loop挤出她的辫子和后发根,并使用了Move笔刷调整下大的形状. 做好大型的时候,要为它细分加面,如果直接细分,可以看到整个网格给平滑了,形状也不是我想要的,无疑增加了调整的工作量. 所以我把Smt 平滑细分去掉,再细分. 此时,我们只需要使用基本笔刷

  • [北京] 全球化游戏+互联网公司 最新产品 iOS/后台服务器高级开发/技术负责人

    以北京为全球研发中心的快速扩张游戏+互联网公司. 目前正在帮公司最新移动视频App项目招聘 Senior Server / Full Stack Engineer(Java/python). 研发团队成员均来自硅谷和中国技术大牛,竞争力的薪水+期权. CTO直接负责该项目,斯坦福硕士多年海外工作背景.产品负责人为风投出身. 有兴趣可以回复邮件到: [email protected],qq:2754797490 Senior Server/Full Stack Engineer(Python/J

  • 教育实习合同范本

    合作机关:__________大学(以下简称甲方) ______________(实习学校,以下简称乙方) 本合作契约依据师资培育法及其施行细则之规定办理. 1.经甲方审查合于教育实习资格的学生﹝简称实习生﹞,征得乙方同意在乙方的教育设施环境下,进行教学实习.导师(级务)实习.行政实习.研习活动. 2.双方同意有关对实习生各实习事项之辅导予成绩评量,依师资培育相关法令及甲方所定教育实习课程实施办法之规定办理.(另附) 3.甲方同意提供乙方在课程与教学.学生辅导.学校行政等方面的咨询.辅导,并尽可

  • 贴砖是个艺术活 超实用瓷砖粘贴攻略 贴砖是个艺术活 超实用瓷砖粘贴攻略

    瓷砖是家庭常用的装修材料,用以装饰房屋的地面和墙面.所以瓷砖铺贴的好坏直接影响了装修的成败,小编为大家汇总了瓷砖铺贴常见问题,希望能对大家的装修有所帮助. 贴瓷砖五大注意事项: 人员:一般需要瓦工1-2人. 顺序:先贴墙砖,后贴地砖. 时间:一个好的瓦工一天也就是贴5-6平方,不然很难保证质量.尤其是窗台一类需要细小对角的地方,很费时间. 1.铺贴彩色釉面砖类: 处理基层→弹线→瓷砖浸水湿润→摊铺水泥砂浆→安装标准块→铺贴地面砖→勾缝→清洁→养护. 2.铺贴陶瓷锦砖(马赛克)类: 处理基层→弹

  • 不惧资本寒冬,容联云通讯助力O2O企业高效节能

    年关将近,种种迹象表明互联网界又一个资本寒冬即将来袭,今年如雨后春笋般显现的各种O2O家政.出行.餐饮类APP将面临一次大考,谁能在冬天活下来,谁就有可能在开春后的决战中胜出.面对资本寒冬,规模较大的企业可以选择放弃部分业务.裁员等方式压缩成本,而今年刚刚崭露头角的O2O企业则没有这些条件,只能八仙过海各显神通,自己解决自己的问题. 容联云通讯作为语音产品的供应商,格外关注互联网行业的变化,它对使用自己产品的企业也做了一些回访和调研,希望了解自己旗下的产品对于节约企业成本,提升用户体验,有哪些实

  • CF刷枪软件屡试不爽 永久火麒麟手动刷教程 CF刷枪软件屡试不爽 永久火麒麟手动刷教程

    CF刷枪软件到底是不是真的?只有亲自试了才知道.事实上并不是所有玩家在试验后都成功获得了永久武器,因为该类软件成功率并没有你想象的那么高,甚至还有很多软件是披着刷枪外衣的木马,因此大家在使用时要格外小心. 现在为您介绍一种比较实用的刷枪方式,可以刷永久雷神同时也能够刷无限火麒麟.这种方法需要玩家们进行多次尝试. 首先进入商城的界面,在商城中找到自己想要刷的枪,然而点击收藏,把枪放在关注商品中,点击购买.当然不是真的购买,游戏会提示金额不够,现在立刻按住Ctrl加F5,按住不放!这中间时间间隔一定

  • 如何处理扫描出的病毒

    360杀毒扫描到病毒后,会首先尝试清除文件所感染的病毒,如果无法清除,则会提示您删除感染病毒的文件. 木马和间谍软件由于并不采用感染其他文件的形式,而是其自身即为恶意软件,因此会被直接删除. 在处理过程中,由于情况不同,会有些感染文件无法被处理,请参见下面的说明采用其他方法处理这些文件: 错误类型 原因 建议操作 清除失败(压缩文件) 由于感染病毒的文件存在于360杀毒无法处理的压缩文档中,因此无法对其中的文件进行病毒清除.360杀毒对于RAR.CAB.MSI及系统备份卷类型的压缩文档目前暂时无

  • 做主播平台的土豪们,为什麽要“养成”偶像女团? 做主播平台的土豪们,为什麽要“养成”偶像女团?

    繁星网打造的S .I.N .G女团 输入"女团"两个字,搜索结果有565万条,但几乎清一色是日韩偶像女团的信息,在相关人物栏目里,很难找到一个中国艺人的名字. 当然,你若不死心继续往下翻页,或许就能搜到SNH48---这是现今国内少有的一支拥有大众认知度的偶像女子组合.这样的情形不仅反映了中国造星机制的疲软,也让越来越多人发现---偶像女团这块鲜肉市场,目前仍是中国娱乐产业中的一片蓝海. 事实上,近年已经有不少娱乐巨头盯上了这片蓝海,但除了打造SNH48的久尚演艺之外,能成功抢滩的没有

  • 做一只风口上的猪:跟“综艺电影”学营销 做一只风口上的猪:跟“综艺电影”学营销

    最近冯导炮轰"综艺电影",人民日报发文批驳冯导是"乌鸦说猪黑".这个比喻可能不是很恰当,冯导怎么能是乌鸦呢,但是我想说"综艺电影"就是猪,是雷布斯说的"风口上的猪",而且它可以飞得比乌鸦高. "综艺电影"是如何站在"风口"上的?它的营销方式有什么值得学习和借鉴的地方?翼谋不才,试分析一二: 1.跟"综艺电影"学--"粉丝经济" 综艺电影的核心基础就

  • Windows Server 8 ADDS轻松几步搞定密码个性化设置 Windows Server 8 ADDS轻松几步搞定密码个性化设置

    在听到女人抱怨世上没有一个好男人时候,男人的感觉是五味杂陈的.听同事抱怨密码太复杂.太麻烦的时候,网管员的心是哇凉悲催的.在活动目录(Active Directory)中启用复杂性的密码策略,比如密码需要一定长度.需要经常更改管理员密码.不能使用上几次的密码--这些都可以提高整网络的安全防护能力.但有时候,如果是普通的用户可能并不需要这样强大的密码安全策略,而企业管理员的帐户却又需要用超强的密码策略提升安全性.另一方面,对于一些服务账户(比如Exchange server,SQL server系

热门推荐