仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 760|回复: 6
打印 上一主题 下一主题

[学习教程] PHP网页编程之ios开辟:用PHP完成IOS推送

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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&Prime;,$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;
}
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)
活着的死人 该用户已被删除
沙发
发表于 2015-1-23 05:02:37 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
小魔女 该用户已被删除
板凳
发表于 2015-1-31 14:17:03 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-18 11:36:15 | 只看该作者
当然这种网站的会员费就几十块钱。
再见西城 该用户已被删除
5#
 楼主| 发表于 2015-3-6 05:58:56 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
兰色精灵 该用户已被删除
6#
发表于 2015-3-12 21:23:52 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
不帅 该用户已被删除
7#
发表于 2015-3-20 04:00:02 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 22:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表