打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iPhone消息推送服务实现
userphoto

2012.06.15

关注

iPhone消息推送服务实现

1656人阅读 评论(0) 收藏 举报

一、开通“Apple Push Notification service”

1.进入 Provisioning Protal

2.选择App IDs

3.选择要开通“Apple Push Notification service”的AppID,点击“Configure”链接

4.点击“Enable for Apple Push Notification service”复选框

5.点击“Configure”按钮,选择CSR文件上传

6.点击“Download”按钮,下载CER文件,双击导入。

7.选择“Provisioning”,重新生成Provisioning Profile,下载,导入到XCode。(很重要)

 

二、生成PHP端推送消息到Apple服务器时需要的证书文件

1.选定推送服务证书(Apple Development Push Services*),导出到桌面,保存为Certificates.p12。

2.在终端中运行如下命令:

  1. openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificates.p12  
  2. openssl pkcs12 -nocerts -out key.pem -in Certificates.p12  
  3. openssl rsa -in key.pem -out key.unencrypted.pem  
  4. cat cert.pem key.unencrypted.pem > ck.pem  

ck.pem文件则是PHP推送消息时所使用的证书文件。

三、iPhone中获取DeviceToken代码

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
  2.   [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert |    UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound)];  
  3. }  
  4. - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {  
  5.   [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"Error in registration. Error: %@", err] cancleButtonTitle:@"Ok" otherButtonTitle:@""];  
  6. }  
  7. - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
  8.   NSLog(@"devToken=%@",deviceToken);  
  9.   [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"devToken=%@",deviceToken] cancleButtonTitle:@"Ok" otherButtonTitle:@""];  
  10. }  

四、项目设置

Targets > $APP_NAME > context menu > Properties > Identifier
    修改 identifier 为App ID

五、PHP端推送消息代码

  1. <?php  
  2.   $deviceToken = "设备令牌";    
  3.   $body = array("aps" => array("alert" => 'message'"badge" => 1, "sound" => 'received5.caf'));   
  4.   $ctx = stream_context_create();  
  5.   stream_context_set_option($ctx"ssl""local_cert""ck.pem");  
  6.      
  7.   $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195"$err$errstr, 60, STREAM_CLIENT_CONNECT, $ctx);  
  8.   if (!$fp) {  
  9.     print "Failed to connect $err $errstrn";  
  10.     return;  
  11.   }  
  12.   print "Connection OK/n";  
  13.   $payload = json_encode($body);  
  14.   $msg = chr(0) . pack("n",32) . pack("H*"$deviceToken) . pack("n",strlen($payload)) . $payload;  
  15.   print "sending message :" . $payload . "/n";  
  16.   fwrite($fp$msg);  
  17.   fclose($fp);  
  18. ?>  
 

六、注意事项

1.DeviceToken要去掉-

2.发布版本使用“gateway.push.apple.com”

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
分分钟搞定IOS远程消息推送
IOS消息推送之APNS
iOS推送小结(证书的生成、客户端的开发、服务端的开发)
手把手教你配置苹果APNS推送服务|钿畑的博客 | 钿畑的博客
苹果推送APNS总结
IOS 本地和远程推送通知详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服