今天花了好几个小时做这个推送,前几次一直是失败,没有做对,网上看过很多教程,有几个地方要值得注意。

这篇blog写得比较清楚:http://zxs19861202.iteye.com/blog/1532460
   http://www.mobiledevor.com/post/100.html

1. deviceToken 是从ios 中得到

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {NSLog(@"regisger success:%@", pToken);//注册成功,将deviceToken保存到应用服务器数据库中

}

2.  步骤

1. 登录 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action ) 然后点击 App IDs
2. 创建一个 Apple ID 。通配符 ID 不能用于推送通知服务。如, com.itotem.iphone
3. 点击Apple ID旁的“Configure”,根据“向导” 的步骤生成一个签名上传,然后下载生成的许可证。
4. 双击.cer文件将你的 aps_developer_identity.cer 导入Keychain中。
5. 在Mac上启动 Keychain助手,然后在login keychain中选择 Certificates分类。看到一个可扩展选项“Apple Development Push Services”
6. 扩展此选项然后右击“Apple Development Push Services” > Export “Apple Development Push Services ID123”。保存为 apns-dev-cert.p12 文件。(这里要注意的是在Certificates分类中)
7. 扩展“Apple Development Push Services” 对“Private Key”做同样操作,保存为 apns-dev-key.p12 文件。
8. 通过终端命令将这些文件转换为PEM格式:openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
9. 最后,你需要将键和许可文件合成为apns-dev.pem文件,此文件在连接到APNS时需要使用:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

3. php调用

$deviceToken= '2bf6e8f97942b07e3dd790d70f52x18a4d50338b5bb00f6f14d8bb6f775a6d98'; //没有空格
$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 = "xxxxxx";
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) {
echo "Failed to connect $err $errstrn";
return;
}
print "Connection OK\n";
$payload = json_encode($body);
$msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
echo "sending message :" . $payload ."\n";
fwrite($fp, $msg);
fclose($fp);

转载于:https://www.cnblogs.com/hubj/archive/2012/06/14/2549816.html

ios 推送消息 php推送相关推荐

  1. 友盟小米收不到推送消息_Android 推送集成华为,小米,友盟

    在小米推送运营平台创建应用,地址点这里, 获取到 AppID , AppKey 把从小米下载的 jar 放到 libs 下 在 AndroidManifest.xml 中添加权限 配置推送服务需要的s ...

  2. 【已解决】Java 项目中利用 Redis 配合 Lua 脚本对短信推送消息做推送限制

  3. iOS 推送,删除指定推送消息或者撤回某条推送

    iOS 推送,删除指定推送消息 远程推送经常会出现收到重复推送的问题,或者想删除某条推送消息的问题,本文将详细说明 静默推送 在 iOS10 之后 Apple 新增了静默推送的功能,使 App 可以在 ...

  4. APP推送消息测试点分析

    APP推送消息测试点分析 1.虽然以前学测试的时候接触一点消息推送测试点,但是自己理解和掌握的测试点还不够深,由于工作需求,这两天深入了解和学了一下APP推送消息是什么,怎么测的问题 设计好的推送消息 ...

  5. Android端推送消息之极光推送

    推送方式 轮询 --实现方式: 周期性主动获取网络中的数据; --缺点: 费电, 费流量; SMS --实现方式: 服务器端向手机端发送短信, 手机监听短信广播, 将拦截的短信信息进行显示; --优点 ...

  6. JAVA程序推送消息到企业微信

    关于消息推送,相信大家都或多或少的接触过. 今日小胡在这里给大家分享下关于如何企业微信应用如何将消息推送到企业微信. 官方开发文档链接如下企业微信开发文档 首先我们要知道的是,企业微信应用推送消息,只 ...

  7. iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解...

    什么是消息推送 举一个常见的例子,我们的手机上经常会有弹出一些信息,例如QQ信息.微信信息等等,这就是常见的消息推送. 例如: 消息推送的类型: 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出 ...

  8. BUI框架中 使用Jpush极光推送,单推跟群推,尽量让小白都能看懂

    1.先贴一下自己使用的Cordvoa版本 2.再贴一下自己使用的极光推送版本 3.极光推送GitHub地址:点击打开 4.小白常见问题 Crodova打包,编译出错. Crodova打包后,提示JPu ...

  9. iOS点击推送消息跳到应用指定页面

    现在的推送用的越来越频繁,几乎每个应用都开始用到了.其实又有几个用户会去看推送消息呢?没办法,产品经理最大啊,只是苦了我们这一帮程序员啊!闲话少说,进入正题.兄弟我用的是极光推送,自然是以极光推送为例 ...

最新文章

  1. 蓝桥杯练习系统习题-基础训练
  2. SPOJ - BALNUM Balanced Numbers(数位dp+进制转换)
  3. oracle中时间加减一年的写法
  4. django进阶07用户模块与权限系统
  5. 谷歌披露利用 Windows 和安卓双平台的高阶攻击活动
  6. [Android] AsyncTask详解
  7. 如何优化js代码(2)——for循环
  8. cartographer探秘第四章之代码解析(五) --- 后端优化 --- 闭环约束2 --- FastCorrelativeScanMatcher2D
  9. jdbc mysql url写法_Springboot项目连接MySql写了一个bug你也可能遇到
  10. js图片url反转file文件
  11. 1005 Spell It Right (20)
  12. 百度AI的2020:新基建铺路,硬实力出圈
  13. 51单片机+L298N控制步进电机【T型】加减速
  14. 法国计算机与技术先进学校,法国计算机专业大学排名(2020年泰晤士)_快飞留学...
  15. 网站页面制作教程[纯萌新]
  16. Flink HA配置
  17. imagin.vmem取证
  18. 隐私数据保护的两大途径
  19. 【scratch】class_6_植物大战僵尸(一)
  20. 【思维与逻辑】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?

热门文章

  1. linux vscode配置HBuilderX雅蓝主题
  2. 大数据集群启停shell脚本:hadoop(hdfs、yarn)、hbase集群启停
  3. 【收藏】nvm的下载,安装与使用(nodejs版本管理)
  4. scala函数定义示例
  5. Hadoop MapReduce实例:按手机上网总流量降序排序代码实现及结果演示
  6. Python Django 请求重定向的三种方式
  7. Java NIO示例:多人网络聊天室完整代码
  8. SpringMVC一个Controller处理所有用户请求的并发问题
  9. spring boot整合mybatis+通用mapper+pagehelper分页插件
  10. 使用dubbo需要导入的jar包