不知道为什么,网站自从移到东京节点后,PR值一降再降。
或许,这也是一种激励,准备乘这个机会,将网站改版一次。
原来的内容也有点杂,我是不是该好好处理一下?去芜存精?不清楚,反正心是乱了。
Submitted by gouki on 2012, April 18, 9:50 PM
不知道为什么,网站自从移到东京节点后,PR值一降再降。
或许,这也是一种激励,准备乘这个机会,将网站改版一次。
原来的内容也有点杂,我是不是该好好处理一下?去芜存精?不清楚,反正心是乱了。
Submitted by gouki on 2012, April 18, 5:08 PM
Yii的behavior用起来是十分方便的,官方的文档也很多,我不多嘴一一解释,我只说一些简单的用法
如果你看过PHP5.4,你应该知道5.4多了个新功能traits。
那你可以对着手册看了,你就当yii的behavior就是5.4的traits。
在任何基于CComponents类扩展的类里,都可以用attachBehavior来附加一个行为,这就象5.4的在类里面 use traits类一样
附加行为后,直接可以$this->行为中的方法,嗯,这个与traits也一样。
好吧,来个简单的例子:
Yii的用法:
看看,是不是用法一样?不过这样也带来一个问题。。。TMD,没法在IDE里面自动识别了。
好吧,只能这样折腾自己了。。忍忍。
Submitted by gouki on 2012, April 17, 11:36 AM
Submitted by gouki on 2012, April 17, 9:37 AM
供应商与苹果推送通知服务器的沟通
翻译:tangly
供应商与苹果推送信息服务器通信
http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1
普通供应商的需求
作为一个供应商与苹果推送通知服务的通信。这个接口对于程序供应商是高速的、大容量的接口;它使用一个流TCP插座设计结合二进制的内容。二进制接口是异步的。
生产环境的二进制接口可以通过gateway.push.apple.com端口2195来连接;沙箱(发展)环境的二进制接口可以通过gateway.sandbox.push.apple.com端口2195来连接。您可能会建立多个并行连接到相同的网关或多个网关的实例。
对于每一个接口可以你应该使用TLS(或SSL),以建立一个安全通信通道。这些连接所需的SSL证书通过IOS服务器分配。 (细节见“配置和发展”。)要建立一个值得信赖可以供应商的身份,在连接的时候,你应该使用此证书点对点的验证连接到APNS
注:建立一个TLS与APNS的会话,委托安全的CA根证书必须安装提供商的服务器上。如果服务器是运行Mac OS X,这根证书已经在钥匙串中了。在其他系统中,证书可能无法使用。你可以下载来自委托SSL证书的网站的证书。
你也应该保留与APNs连接的多个通知。APNs可能会考虑,迅速,并多次作为一个拒绝服务攻击可以建立和撕裂可以连接。错误时,APNS会关闭发生错误连接。
你作为一个供应商,应该以下几个方面的推送通知负责:
l 您必须构建有效的通知(见“有效通知”)。
l 你必须负责提供标志(badge)号在应用程序图标上显示(右上角)。
l 您应该定期与反馈Web服务器连接,并获取目前那些已经多次报道过失败的传输的设备列表(清单)。然后,你应该停止向这些应用程序相关联的设备发送通知。更多信息可以见“反馈”服务。
如果您打算支持多种语言的通知消息,但不使用客户端获取的本地化提醒字符串APS有效载荷字典LOC键和LOC - ARGS属性,你需要本地化警报消息可以文本服务器端。要做到这一点,你需要找出目前的客户端应用程序的语言偏好。 “调度,登记,处理通知”可以说明为获得这一信息的方法。 LOC键和LOC- args的属性信息可以请可以“通知有效载荷”。
二进制接口和通知格式
二进制接口采用的二进制内容的信息流在本质上是一个普通的TCP套接字。为了获得最佳性能,你应该在单一的传输接口通过分批传输多个通知,明示或使用一个TCP / IP Nagle算法。
该接口支持两种格式的通知数据包,简单的格式和增强的格式,以解决一些简单的格式的问题:
l 通知的有效期:APNS有一个存储并转发的功能,它可以保证最近的通知发送到装有应用程序的设备上。如果该设备是在接收通知时掉线,当该设备下次联网时,APNS会再次提供通知。简单的格式,不管通知是否是已经发送过针对性的通知。换句话说,该通知可以随着时间的推移变得“过时”。增强的格式包含着一个有限期值来表示通知有效期。当通知期限值到时,APNS会丢弃存储和转发器里的通知。
l 错误的反馈回应:简单的格式,如果你发送一个通知数据包,在某种方面是畸形的,例如,发送的内容超过规定的限制, APNS会响应切断连接,而且它不会给明拒绝通知的原因。增强的格式,让一个供应商用一个任意的标识符来标记通知。如果有一个错误,APNS会返回一个与该错误代码相关联的标示符。这种应答使供应商能够查找和纠正畸形的通知。
大多数供应商推荐使用增强的格式。
让我们研究简单的通知格式,首先是因为这种格式被增强格式所共享。图5-1说明了这种格式。
Figure 5-1 Simple notification format
图5-1 简单通知格式
简单的格式中的第一个字节是0(零)的命令值。设备令牌和发送消息的长度必须是在网络字节序(即大端法)。此外,您应该使用二进制格式对设备令牌进行编码。发送的消息内容不得超过256字节,不得是null结尾的。
清单5-1给出了一个函数使用简单的通知格式发送一个推送通知 到APNS上的二进制接口的例子。该示例假定SSL优先连接gateway.push.apple.com(或gateway.sandbox..push.apple.com)和对等交换认证。 请看官网代码
清单5-1使用简单格式发送通知到二进制接口
图5-2描述了通知数据包的增强格式。这种格式,如果APNS上的遇到无法理解的命令,它会在断开连接之前返回一个错误应答。
图5-2 增强通知格式
增强通知格式的第一个字节是为1的命令值。这种格式中的两个新字段是标识符和通知的有效期。(其它的都和简单的通知格式相同。)
l 标识符----一个任意值用来标识此通知。如果是APNS无法理解的通知,则返回一个错误应答包,包含此标示符。
l 有效期----一个固定的UNIX纪元日期(UTC)以秒为单位标识通知不再有效,并且可以被丢弃的时候。有效期值应该是网络顺序(大端法)。如果有效期值为正数,APNS至少试图提供一次通知。您可以指定零或一个小于零的值请求APNS不存储通知。
如果你发送的通知在APNS上发现通知格式不完整或其他无法解析的,它会在断开之前返回一个错误应答数据包。(如果没有错误,APNS不返回任何内容。)
图5-3给出了错误应答数据包的格式。
图5-3 错误应答数据包格式
该数据包包含一个值为8的命令值,紧跟一个字节的状态代码,和一个供应商指定的通知相同的标示符。表5-1列出了可能的状态代码及其含义。
Invalid :无效的
表5-1 错误应答的编码
状态代码 |
表示 |
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 |
255 |
None (unknown) |
清单5-2修改清单5-1的代码然后构成增强格式的推送通知将其发送到APNS。依然假定SSL优先连接gateway.push.apple.com(或gateway.sandbox..push.apple.com)和对等交换认证。
清单5-2使用增强格式发送通知到二进制接口
注意,生产环境的设备令牌和发展环境(沙箱)的设备令牌是不一样的值。
------
最后一句很重要啊。否则会出问题。
不过,我在苹果服务器反馈服务提到的只是普通的令牌而不是加强型的
上述原文:http://hi.baidu.com/tangly888/blog/item/183a0e88432eb7c8fc1f106b.html
Submitted by gouki on 2012, April 17, 9:28 AM
如果供应商试图发送推送通知到一个应用程序,但应用程序已经不存在该设备中了,设备会报告一个信息给苹果推送通知服务器。这种情况经常发生,当用户卸载应用程序后。如果设备报告了尝试传递应用程序推送通知时的失败,APNS需要一些方法来通知供应商,以便它能够避免再次将通知发送到该设备。这样做可以降低不必要的消息开销和提高系统的整体性能。
为此苹果的推送通知服务器包括一个反馈服务,APNS不断更新每个应用程序的失效的设备令牌列表。该设备是识别设备令牌是否由二进制格式的编码的。供应商应定期查询反馈服务来获取他们的应用程序的设备令牌,以鉴别是否还存在(名单)。然后,验证应用程序是不是最近(被识别的设备)重新注册了,否者供应商应停止向这些设备发送通知。
反馈服务可以通过一个二进制接口来访问,和发送推送通知相类似。您可以通过feedback.push.apple.com端口2196访问反馈服务的结果; 您可以通过feedback.sandbox.push.apple.com端口2196访问沙盒的反馈服务的结果。至于二进制接口与推送通知一样,您必须使用TLS(或SSL)来建立一个安全的通信通道。这些连接所需的SSL证书是同一个是发送通知提供的。要建立一个值得信赖可以供应商的身份,你应该与APNS使用点对点的连接验证时提交此证书。
一旦连接,传输立即开始,你不需要发送任何命令到APN。开始读取反馈服务传输过来的数据流,直到没有数据流了。数据是具有以下格式的元组:
图5-4 反馈元组的二进制格式
Timestamp
A timestamp (as a four-byte time_t value) indicating when the APNs determined that the application no longer exists on the device. This value, which is in network order, represents the seconds since 1970, anchored to UTC.
Token length
The length of the device token as a two-byte integer value in network order. 设备令牌的长度为两个字节的整数值的网络字节序。
Device token
The device token in binary format.