本文介绍的是iPhone 搭建PHP版Push服务器 实例操作,很详细的操作步骤,我们先来看内容。

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

iPhone 搭建PHP版Push服务器 实例操作(苹果手机搭建php服务器)  php Push 第1张

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.运行如下命令:

  1. opensslpkcs12-clcerts-nokeys-outcert.pem-inCertificates.p12
  2. opensslpkcs12-nocerts-outkey.pem-inCertificates.p12
  3. opensslrsa-inkey.pem-outkey.unencrypted.pem
  4. catcert.pemkey.unencrypted.pem>ck.pem

获得php Push Notification sender所需的设备令牌:

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

a.粘贴如下代码:

  1. -(void)applicationDidFinishLaunching:(UIApplication*)app{
  2. //othersetuptaskshere….
  3. [windowaddSubview:viewController.view];
  4. [selfalertNotice:@""withMSG:@"InitiatingRemoteNoticationssAreActive"cancleButtonTitle:@"Ok"otherButtonTitle:@""];
  5. [[UIApplicationsharedApplication]registerForRemoteNotificationTypes:
  6. (UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound)];
  7. }
  8. -(void)application:(UIApplication*)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
  9. //NSLog(@"devToken=%@",deviceToken);
  10. [selfalertNotice:@""withMSG:[NSStringstringWithFormat:@"devToken=%@",deviceToken]cancleButtonTitle:@"Ok"otherButtonTitle:@""];
  11. }
  12. -(void)application:(UIApplication*)appdidFailToRegisterForRemoteNotificationsWithError:(NSError*)err{
  13. NSLog(@"Errorinregistration.Error:%@",err);
  14. [selfalertNotice:@""withMSG:[NSStringstringWithFormat:@"Errorinregistration.Error:%@",err]
  15. cancleButtonTitle:@"Ok"otherButtonTitle:@""];
  16. }
  17. .-(void)alertNotice:(NSString*)titlewithMSG:(NSString*)msgcancleButtonTitle:(NSString*)cancleTitle
  18. otherButtonTitle:(NSString*)otherTitle{
  19. UIAlertView*alert;
  20. if([otherTitleisEqualToString:@""])
  21. alert=[[UIAlertViewalloc]initWithTitle:titlemessage:msgdelegate:selfcancelButtonTitle:cancleTitleotherButtonTitles:nil,nil];
  22. else
  23. alert=[[UIAlertViewalloc]initWithTitle:titlemessage:msgdelegate:selfcancelButtonTitle:cancleTitle
  24. otherButtonTitles:otherTitle,nil];
  25. [alertshow];
  26. [alertrelease];
  27. }

b.在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 方法中增加

  1. [selfalertNotice:@""withMSG:@"InitiatingRemoteNoticationssAreActive"cancleButtonTitle:@"Ok"otherButtonTitle:@""];
  2. [[UIApplicationsharedApplication]registerForRemoteNotificationTypes:
  3. (UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound)];

14.项目设置

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

修改

  1. identifier
  2. AppID
  3. b.Targets>$APP_NAME>contextmenu>Build>CodeSigning>CodeSigningIdentifier>AnyiPhoneOSDevice

指定 iPhone Developer 为开发用机,编译并运行后会在iPhone上显示设备令牌

php Push Notification sender代码如下:

  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. $fp=stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195",$err,$errstr,60,STREAM_CLIENT_CONNECT,$ctx);
  7. if(!$fp){
  8. print"Failedtoconnect$err$errstrn";
  9. return;
  10. }
  11. print"ConnectionOK\n";
  12. payload=json_encode($body);
  13. $msg=chr(0).pack("n",32).pack("H*",$deviceToken).pack("n",strlen($payload)).$payload;
  14. rint"sendingmessage:".$payload."\n";
  15. fwrite($fp,$msg);
  16. fclose($fp);
  17. ?>

小结:iPhone 搭建PHPPush服务器 实例操作的内容介绍完了,希望本文对你有帮助。

转载请说明出处
知优网 » iPhone 搭建PHP版Push服务器 实例操作(苹果手机搭建php服务器)

发表评论

您需要后才能发表评论