PHP网页编程之ios开辟:用PHP完成IOS推送
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的工具其实并不多,离当一个真正的程序员,还有很大的差距。ios推送动静是个十分有效的功效,很多使用程序都具有了这个功效,成为及时使用的数据流中心.那末我们怎样用php为ios做推送服务呢?上面本文章将为您举行具体解说。ios动静推送机制能够参考ios动静推送机制完成与切磋。
起首,必要一个pem的证书,该证书必要与开辟时署名用的分歧。详细天生pem证书办法以下:
1.登录iPhoneDeveloperConnectionPortal(http://developer.apple.com/iphone/manage/overview/index.action)然后点击AppIDs
2.创立一个AppleID。通配符ID不克不及用于推送关照服务。如,com.itotem.iphone
3.点击AppleID旁的“Configure”,依据“导游”的步骤天生一个署名上传,然后下载天生的允许证。
4.双击.cer文件将你的aps_developer_identity.cer导进Keychain中。
5.在Mac上启动Keychain助手,然后在loginkeychain当选择Certificates分类。看到一个可扩大选项“AppleDevelopmentPushServices”
6.扩大此选项然后右击“AppleDevelopmentPushServices”>Export“AppleDevelopmentPushServicesID123”。保留为apns-dev-cert.p12文件。
7.扩大“AppleDevelopmentPushServices”对“PrivateKey”做一样操纵,保留为apns-dev-key.p12文件。
8.经由过程终端命令将这些文件转换为PEM格局:opensslpkcs12-clcerts-nokeys-outapns-dev-cert.pem-inapns-dev-cert.p12
opensslpkcs12-nocerts-outapns-dev-key.pem-inapns-dev-key.p12
9.最初,你必要将键和允许文件分解为apns-dev.pem文件,此文件在毗连到APNS时必要利用:
catapns-dev-cert.pemapns-dev-key-noenc.pem>apns-dev.pem
PHP代码以下:
[*]<?php
[*]$deviceToken=$_POST;//获得Token
[*]$body=array(“aps”=>array(“alert”=>‘message’,“badge”=>2,“sound”=>’default’));//推送体例,包括内容和声响
[*]$ctx=stream_context_create();
[*]//假如在Windows的服务器上,寻觅pem路径会有成绩,路径修正成如许的办法:
[*]//$pem=dirname(__FILE__).‘/’.‘apns-dev.pem’;
[*]//linux的服务器间接写pem的路径便可
[*]stream_context_set_option($ctx,“ssl”,“local_cert”,“apns-dev.pem”);
[*]$pass=”123123“;
[*]stream_context_set_option($ctx,‘ssl’,‘passphrase’,$pass);
[*]//此处有两个服务器必要选择,假如是开辟测试用,选择第二名sandbox的服务器并利用Dev的pem证书,假如是恰是公布,利用Product的pem并选用正式的服务器
[*]$fp=stream_socket_client(“ssl://gateway.push.apple.com:2195“,$err,$errstr,60,STREAM_CLIENT_CONNECT,$ctx);
[*]$fp=stream_socket_client(“ssl://gateway.sandbox.push.apple.com:2195″,$err,$errstr,60,STREAM_CLIENT_CONNECT,$ctx);
[*]if(!$fp){
[*]print“Failedtoconnect$err$errstrn”;
[*]return;
[*]}
[*]print“ConnectionOK
”;
[*]$payload=json_encode($body);
[*]$msg=chr(0).pack(“n”,32).pack(“H*”,str_replace(‘‘,”,$deviceToken)).pack(“n”,strlen($payload)).$payload;
[*]print“sendingmessage:”.$payload.“
”;
[*]fwrite($fp,$msg);
[*]fclose($fp);
[*]?>
然后,
到这里证书已筹办终了,接上去,我们在xcode中新建一个测试工程,注重设置工程的BundleIdentifier必需与下面建的APPID里的不异
在didFinishLaunchingWithOptions中到场一下代码
-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
;
[registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadgeUIRemoteNotificationTypeSoundUIRemoteNotificationTypeAlert];
returnYES;
}
-(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)pToken{
NSLog(@"regisgersuccess:%@",pToken);
}
-(void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfo{
UIAlertView*alert=[initWithTitle:@"推送关照"message:@"信息"delegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:nil,nil];
;
;
}
-(void)application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error{
NSLog(@"Registfail%@",error);
}
接上去我们会见http://localhost/push/push.php
ios设备就会吸收到一条推送动静了
别的往除标志的办法为,在viewDidApper中到场
intbadge=.applicationIconBadgeNumber;
if(badge>0)
{
badge--;
.applicationIconBadgeNumber=badge;
}
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了) 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 Ps:以上纯属原创,如有雷同,纯属巧合 当然这种网站的会员费就几十块钱。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
页:
[1]