|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
通过这段时间的学习实践,对软件开发有了更多新的认识,不在局限于之前的片面性。当然,现在所学到的工具其实并不多,离当一个真正的程序员,还有很大的差距。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
[quote][/quote]PHP代码以下:
- <?php
- $deviceToken=$_POST[token];//获得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
{
[self.windowmakeKeyAndVisible];
[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadgeUIRemoteNotificationTypeSoundUIRemoteNotificationTypeAlert];
returnYES;
}
-(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)pToken{
NSLog(@"regisgersuccess:%@",pToken);
}
-(void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfo{
UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"推送关照"message:@"信息"delegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:nil,nil];
[alertshow];
[alertrelease];
}
-(void)application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error{
NSLog(@"Registfail%@",error);
}
接上去我们会见http://localhost/push/push.php
ios设备就会吸收到一条推送动静了
别的往除标志的办法为,在viewDidApper中到场
intbadge=[UIApplicationsharedApplication].applicationIconBadgeNumber;
if(badge>0)
{
badge--;
[UIApplicationsharedApplication].applicationIconBadgeNumber=badge;
}
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了) |
|