(转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送
1,在iOS开发者中心: iOS Provisioning Portal 创建一个AppID,如图:
2,生成iOS Push Service证书,如图:



按照上述提示操作:




回到iOS Provisioning Portal:




点击“Download”下载iOS Push Service证书文件,如图:

3,导入证书文件到keychain:双击即可
4,生成ck.pem
导出cert.p12:


导出key.p12:


得到这样两个文件:

接下来打开终端:
输入命令:openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12

然后输入命令:openssl pkcs12 -nocerts -out key.pem -in key.p12

最后合并成一个ck.pem文件:
输入命令:cat cert.pem key.pem > ck.pem

得到一个ck.pem文件:

5, 生成并安装Profile文件:
6, 上传ck.pem到SAE, 如图:
7, 客户端程序:
设置profile:

在info.plist中设置Bundle identifier:

在合适的位置加入下面代码,将你的应用注册到消息中心:
- 1234567891011121314
- (IBAction)action:(id)sender {//注册到消息中心:[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeNewsstandContentAvailability)];} 在AppDelegate中加入下面代码:
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
#pragma mark -#pragma mark APNS- (void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {//获得 device tokenNSLog(@"deviceToken: %@", deviceToken);/*. . . . . .在这里把deviceToken和用户信息发送到服务器端. . . . . .*///获得 唯一标示NSLog(@"uniqueIdentifier: %@", [[UIDevicecurrentDevice]uniqueIdentifier]);}- (void)application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error {NSLog(@"Error in registration. Error: %@", error);}- (void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfo {/*收到消息自定义事件*/if([[userInfoobjectForKey:@"aps"]objectForKey:@"alert"] !=nil) {UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"通知"message:[[userInfoobjectForKey:@"aps"]objectForKey:@"alert"]delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];[alertshow];[alertrelease];}}
8, 服务器端程序:
- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
/**** 实例代码** SaeAPNS调用方法详见API文档:http://apidoc.sinaapp.com/sae/SaeAPNS.html** @author Bruce Chen**/header("Content-Type: text/html;charset=utf-8");include_once("saeapns.class.php");/* int $cert_id 许可证序号(1-10)*/$cert_id= 1;/* string $device_token 设备令牌 */$device_token='xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx';/* string $message 消息内容 */$message=date('Y-m-d H:i:s') .": \n".'测试消息 from SAE';/*array $body 消息体(包括消息、提醒声音等等),格式请参考示例和{@link http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1 Apple官方文档}*/$body=array('aps'=>array('alert'=>$message,'badge'=> 1,'sound'=>'in.caf'),'others'=>array());//实例化SaeAPNS$apns=newSaeAPNS();//推送消息$result=$apns->push($cert_id,$body,$device_token);if($result!== false) {echo'发送成功';}else{echo'发送失败';var_dump($apns->errno(),$apns->errmsg());}
9, 手机收到通知效果:
源码实例下载地址: http://vdisk.weibo.com/s/SbY2

转自:http://blog.csdn.net/wave_1102/article/details/7669152
(转)在SAE使用Apple Push Notification Service服务开发iOS应用, 实现消息推送的更多相关文章
- Provider Communication with Apple Push Notification Service
This chapter describes the interfaces that providers use for communication with Apple Push Notificat ...
- 陌陌架构分享 – Apple Push Notification Service
http://blog.latermoon.com/?p=878 先描述下基本概念,标准的iPhone应用是没有后台运行的,要实现实时推送消息到手机,需要借助Apple提供的APNS服务. iPhon ...
- (转)How to build an Apple Push Notification provider server (tutorial)
转自:https://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/ ...
- (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
转自:http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2 Upda ...
- (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
转自:http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 Upda ...
- (转)苹果推送通知服务教程 Apple Push Notification Services Tutorial
本文译自http://www.raywenderlich.com/.原文由iOS教程团队 Matthijs Hollemans 撰写,经原网站管理员授权本博翻译. 在iOS系统,考虑到手机电池电量,应 ...
- [Erlang 0106] Erlang实现Apple Push Notifications消息推送
我们的IOS移动应用要实现消息推送,告诉用户有多少条消息未读,类似下图的效果(笑果),特把APNS和Erlang相关解决方案笔记于此备忘. 上面图片中是Apple Notif ...
- Push:iOS基于APNS的消息推送
1. Push的三个步骤,如下图所示: (1)Push服务应用程序把要发送的消息.目的iPhone的标识打包,发给APNS: (2)APNS在自身的已注册Push服务的iPhone列表中,查找有相应标 ...
- [置顶] 手把手教你iOS消息推送证书生成以及Push消息
iOS推送消息是许多iOS应用都具备的功能,今天在给应用加推送功能,在生成证书的过程中,发生了各种令人蛋痛的事.下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provi ...
随机推荐
- linux定时任务2-at命令
定时执行命令: [root@rheltest1 ~]# at now + 1 minute //一分钟后执行下面的任务 at> date >> /tmp/test_date.log ...
- activeMQ总结
队列模式和发布订阅模式的区别 topic只有所有订阅者都消费了,这个消息才会消失.只要有一个订阅者没有消费(持久化模式),这个消息就会存在.订阅者下线然后上线也会读取到这个消息.而且队列的话,消费能力 ...
- 逆波兰表达式 java
描述 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系, 也不必用括号改变运算次序,例如(2 + 3) ...
- 关于C++的变量和类的声明和定义
什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...
- eclipse在当前项目里面批量替换所有单词
ctrl+f里面只能单个文件用,要整个项目批量替换. 1. 先选中你要替换字符串, 2. 再菜单栏中找到Search→Text→Project,这样就会在整个项目中查找单词. 3. 然后在Search ...
- table 自动换行
<table border=" align="center" style="table-layout:fixed;word-wrap:break-word ...
- php 魔术方法 __autoload()
PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类 ...
- 一个使用CSocket类的网络通信实例
http://www.cppblog.com/changshoumeng/archive/2010/05/14/115413.html 3.8 一个使用CSocket类的网络通信实例 本例采用CSoc ...
- 编程Tips集锦
以下是自己编程的一些小贴士,记录,总结提高自己. 1.python中集合类型的查找,尽量用dict or set类型. dict和set类型,在python内部的实现都是使用hash映射,查找的时间复 ...
- C++Primer charpter1.
一.输入输出流 endl:会刷新buffer.刷新之后你才能看到.不手动用endl的话,就只能依靠系统自动刷.程序崩溃的话,你看到的调试信息可能是错误的. >>: 两个连续的符号 ci ...








