`
sinaier
  • 浏览: 34934 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

iPhone 搭建PHP版Push服务器 实例操作

阅读更多
iPhone 搭建PHP版Push服务器 实例操作是本文介绍的内容。在应用里加入 Push 功能对于用户及时获取信息是非常有帮助的,以前介绍过 iPhone 的 Push (推送通知)功能原理浅析,里面提到要为自己的 App 添加推送功能,开发者先要搭建一个推送服务器。下面就介绍一个为 iPhone 应用搭建 php 版 push 服务器的流程。

0.在Mac OS X机器上安装好XCode, 连接一台正常的iPhone, 保持平和的心态

APP 开发基础设置

1.在iPhone Provisioning Portal中建立好APP ID和Device.

2. 在Keychain Access.app中生成证书请求CertificateSigningRequest.certSigningRequest(菜单 > Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority...).

3.在iPhone Provisioning Portal > Certificates中请求一个证书(点击Request Certificate,上传CertificateSigningRequest.certSigningRequest).

4.请求完成后,将证书文件(developer_identity.cer)下载,双击导入到Key Chain中.

5.在iPhone Provisioning Portal > Provisioning 中,新建一个Profile, 选择指定的APP ID和 Devices后生成.

6.将刚刚生成的Profile下载为*_profile.mobileprovision, 双击该文件, 将profile加载到iPhone中.

Push Notification service设置

7.在iPhone Provisioning Portal > App IDs,选择需要Push服务的App ID, 进入Configure.

8.确认 Enable for Apple Push Notification service ,配置 Development Push SSL Certificate, 上传第2步生成的证书请求.

9.下载生成的aps_developer_identity.cer, 完成Push服务配置.

10.双击aps_developer_identity.cer,保存到Key Chain.

生成php Push Notification sender需要的证书文件

11.在Keychain Access.app里选定这个新证书(Apple Development Push Services*),导出到桌面,保存为Certificates.p12.

12.运行如下命令:

openssl pkcs12 -clcerts -nokeys -out cert.pem -in Certificates.p12 
openssl pkcs12 -nocerts -out key.pem -in Certificates.p12 
openssl rsa -in key.pem -out key.unencrypted.pem 
cat cert.pem key.unencrypted.pem > ck.pem 获得php Push Notification sender所需的设备令牌:

13.新建一个View-based Application项目,在$PROJECT_NAMEAppDelegate.m中:

a.粘贴如下代码:
- (void)applicationDidFinishLaunching:(UIApplication *)app {
       // other setup tasks here….
      [window addSubview:viewController.view];
       [self alertNotice:@"" withMSG:@"Initiating Remote Noticationss Are Active"

cancleButtonTitle:@"Ok" otherButtonTitle:@""];
      [[UIApplication sharedApplication] registerForRemoteNotificationTypes:            

(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeSound)];
   }
   - (void)application:(UIApplication *)app

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
       //NSLog(@"devToken=%@",deviceToken);
       [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"devToken=%@",deviceToken]

cancleButtonTitle:@"Ok" otherButtonTitle:@""];
   }
   - (void)application:(UIApplication *)app

didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
      NSLog(@"Error in registration. Error: %@", err);
       [self alertNotice:@"" withMSG:[NSString stringWithFormat:@"Error in registration.

Error: %@", err]                         cancleButtonTitle:@"Ok" otherButtonTitle:@""];
   }  .
-(void)alertNotice:(NSString *)title withMSG:(NSString *)msg cancleButtonTitle:(NSString

*)cancleTitle                         otherButtonTitle:(NSString *)otherTitle{           

UIAlertView *alert;
     if([otherTitle isEqualToString:@""])
          alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self

cancelButtonTitle:cancleTitle otherButtonTitles:nil,nil];
      else
           alert = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self

cancelButtonTitle:cancleTitle               otherButtonTitles:otherTitle,nil];
       [alert show];
       [alert release];
   }
b.在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 方法中增加
[self alertNotice:@"" withMSG:@"Initiating Remote Noticationss Are Active" cancleButtonTitle:@"Ok" otherButtonTitle:@""];
  [[UIApplication sharedApplication] registerForRemoteNotificationTypes:          (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound)];

14.项目设置

a.Targets > $APP_NAME > context menu > Properties > Identifier

修改
identifier
   为
  App ID
  b.Targets > $APP_NAME > context menu > Build > Code Signing > Code Signing Identifier > Any iPhone OS Device
指定 iPhone Developer 为开发用机,编译并运行后会在iPhone上显示设备令牌

php Push Notification sender代码如下:

<?php
deviceToken = "设备令牌";
$body = array("aps" => array
("alert" => 'message', "badge" => 1, "sound" => 'received5.caf'));
$ctx = stream_context_create();
stream_context_set_option($ctx, "ssl", "local_cert", "ck.pem");
$fp = stream_socket_client
("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 
if (!$fp) {
print "Failed to connect $err $errstrn";
return;
}
print "Connection OK\n";
payload = json_encode($body);
$msg = chr(0) . pack("n",32) . pack("H*", $deviceToken) . pack("n",strlen($payload)) . $payload;
rint "sending message :" . $payload . "\n";
fwrite($fp, $msg);  fclose($fp);
?>
iPhone 搭建PHP版Push服务器 实例操作的内容介绍完
分享到:
评论
1 楼 CJSen 2011-12-15  
请问iphone push推送中,如果我想将同一条信息发给很多个设备,有没有接口或方法说:我从服务器“将要发的所有设备ID和一条信息”发到apns上,苹果服务器自动帮我为每一个设备发信息,而不用我自己在服务器上“一个设备ID加一条信息”一个个的发;

相关推荐

    Iphone FTP编程实例

    本实例主要关注如何在iPhone应用中实现FTP功能,包括文件的上传和下载。以下是关于这个主题的详细知识讲解。 首先,理解FTP的基本概念。FTP是一种网络协议,允许用户在Internet上从一台计算机向另一台计算机传输...

    iPhone开发环境搭建

    搭建iPhone开发环境是iOS应用开发的第一步,主要涉及到在特定的操作系统环境下安装必要的开发工具。由于iPhone应用只能在苹果公司的Mac OS X系统上开发,因此,你需要准备一个运行Mac OS X的环境。以下是详细的步骤...

    iPhone游戏编程实例

    《iPhone游戏编程实例》这本书是针对想要开发iPhone游戏的程序员们的一份宝贵资源。它深入浅出地介绍了如何利用Apple的iOS SDK(Software Development Kit)和Objective-C编程语言来创建吸引人的、交互性强的iPhone...

    IPHONE用户界面设计典型实例

    iPhone用户界面设计典型实例. 北京市:人民邮电出版社, 2011.06. 【内容提要】 本书介绍用户体验和好的外观的应用程序,以及iPhone用户界面设计的秘密。主要包括以下内容:优化使用有限的屏幕面积,让 屏幕上的元素...

    iPhone的Push(推送通知)功能原理浅析

    iPhone的Push(推送通知)功能是iOS设备上的一项重要特性,它允许应用程序在后台向用户发送提醒,即使应用并未在运行。这一功能依赖于Apple Push Notification Service (APNS) —— 苹果提供的推送服务。下面是Push...

    iphone开发中push实现

    ### iPhone开发中Push通知实现详解 #### 一、引言 在移动应用开发领域,Push通知(推送通知)是一项非常重要的功能,它可以帮助开发者更好地与用户互动,提高应用的活跃度和留存率。本文将详细介绍如何在iPhone...

    iPhone push功能源码

    本资源提供的"iPhone push功能源码"包括了"pushMe"服务器端和"pushTest"客户端两部分,帮助开发者深入理解并实践如何在iOS应用中实现这一功能。 首先,我们来详细了解一下推送通知的工作原理。苹果的推送通知服务...

    IOS开发环境搭建和简单实例

    本文将详细介绍如何搭建iOS开发环境,并提供一些简单的开发实例来帮助初学者快速入门。 ### iOS开发环境搭建 #### 注册Apple ID 为了下载开发所需的软件和工具,首先需要注册一个Apple ID。Apple ID是Apple服务的...

    iPhone上的txt阅读器实例

    iPhone上的TXT阅读器实例是一个很好的学习资源,可以帮助开发者了解如何在iOS环境中实现这样的功能。下面我们将深入探讨相关的知识点。 首先,我们需要知道iOS应用开发主要使用的是Swift或Objective-C编程语言,而...

    iphone推送实例

    "iPhone推送实例"着重讲解了如何在iPhone应用中实现和处理远程推送通知。下面将详细讨论这个主题。 一、Apple Push Notification Service (APNs) Apple Push Notification Service 是苹果公司提供的服务,允许...

    iPhone PushTest

    在iOS平台上,推送服务(Push Notification Service,简称PNP)是一项关键功能,它允许应用程序在未运行时接收来自服务器的通知。"iPhone PushTest"显然关注的是如何在iPhone上测试和实现这一服务。以下是对这个主题...

    iphone 本地通知实例

    本实例“iPhone 本地通知实例”旨在展示如何在iPhone上实现这一功能。下面我们将深入探讨本地通知的工作原理、创建过程以及相关的API。 1. **本地通知的基本概念**: - 本地通知是由应用程序本身安排的,不同于...

    群晖搭建 iTunes 影音服务器

    群晖搭建局域网内iTunes 影音服务器,使得局域网内家庭共享影音资源。

    iphone游戏编程实例pdf+源码

    《iPhone游戏编程实例》这本书是iOS游戏开发领域的一份宝贵资源,主要面向对游戏开发感兴趣的程序员,特别是那些希望进入iPhone游戏开发领域的初学者。通过实际的项目案例,它提供了深入理解游戏开发流程、掌握...

    搭建手机服务器

    ### 搭建手机服务器——以iPhone为例使用Mongoose实现 #### 一、引言 随着移动互联网技术的发展,智能手机不仅成为了人们日常生活中不可或缺的一部分,更因其强大的计算能力和丰富的功能而被广泛应用于各种场景。...

    全世界最强的软件——VSFTPD(把IPHONE变成FTP服务器和U盘)归纳.pdf

    VSFTPD将iPhone变成FTP服务器和U盘 VSFTPD是一款功能强大且免费的软件,可以将iPhone变成一个FTP服务器和U盘,使其可以随时随地地存储和共享文件。 VSFTPD的主要功能 VSFTPD可以将iPhone变成一个FTP服务器,使其...

    Iphone中的SQLite 可运行的实例

    "Iphone中的SQLite 可运行的实例"是一个很好的起点,帮助开发者理解如何在iPhone应用程序中集成和操作SQLite数据库。这个实例提供了完整的代码和步骤,使得初学者能够快速上手。 SQLite在iOS中的应用主要涉及以下几...

    iphone notification 使用实例

    本教程将基于“iphone notification 使用实例”这一主题,详细介绍如何在iPhone上实现通知功能。 首先,我们要了解iOS中的通知类型:本地通知(Local Notification)和远程通知(Remote Notification,通常与Apple ...

    Iphone 实例编程 有注释

    Iphone 实例编程 有注释 Iphone 实例编程 有注释

    iphone的Push实现.net代码

    标题 "iPhone的Push实现.NET代码" 涉及到的是苹果设备(iPhone)上的远程通知服务,即Apple Push Notification service (APNS) 的.NET后端实现。这一技术允许应用程序在后台接收来自服务器的通知,即使应用没有运行...

Global site tag (gtag.js) - Google Analytics