百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端
来源:互联网 发布:万文数据库 编辑:程序博客网 时间:2024/06/05 18:39
搞了一个下午,发送通知终于成功了,分享一下
首先放一个百度PHP SDK的文档:http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/sdk/phpserver#pushMessage
比客户端好多了,客户端都没有文档的。
将PHP SDK下载后放到网站某目录
发送消息很简单的
$channel = new BaiduPush(self::APIKEY, self::SECRETKEY, array( CURLOPT_TIMEOUT => 30, CURLOPT_CONNECTTIMEOUT => 5 )); $return = $channel->pushMessage(3, '这是一条小气测试', 'msg_key', array( 'user_id'=>'xxxxx', 'channel_id'=>'xxxxx', ));
最难的是发送通知,文档中说$messages参数可以是string,array 或 json string,实际上,你被坑了
官方文档:
//推送通知,必须指定MESSAGE_TYPE为1 $optional[Channel::MESSAGE_TYPE] = 1;//通知必须按以下格式指定$message = "{ 'title': 'title','description': 'description' }"; $message_key = "msg_key"; $ret = $channel->pushMessage ( $push_type, $message, $message_key, $optional );
上面所说的$message格式,相当于是一个字符串拼接格式,也就是伪json格式,因为json转码中,中文会进行处理,但是百度不会还原,所以程序会报错。
$channel = new BaiduPush(self::APIKEY, self::SECRETKEY, array( CURLOPT_TIMEOUT => 30, CURLOPT_CONNECTTIMEOUT => 5 ));$optional['user_id'] = 'xxxxxx'; $optional['channel_id'] = 'xxxxxx'; $optional['message_type'] = 1;$message = "{'title': '测试','description': '这是一条通知测试'}"; $message_key = "msg_key"; $return = $channel->pushMessage(1, $message, $message_key, $optional); if ( false === $return ){ echo ( 'WRONG, ' . __FUNCTION__ . ' ERROR!!!!<br />' ); echo ( 'ERROR NUMBER: ' . $channel->errno ( ) . '<br />' ); echo ( 'ERROR MESSAGE: ' . $channel->errmsg ( ) . '<br />' ); echo ( 'REQUEST ID: ' . $channel->getRequestId ( ) . '<br />' ); }else{ echo ( 'result: ' . print_r ( $return, true ) ); }
这里的字符串拼接必须是单引号,否则也会报错
user_id和channel_id都是客户端生成的
还可以自定义一些在百度云推送操作中心支持的操作,比如打开url等,详细文档地址:
http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/faq
- 百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端
- 关于百度云推送点击通知的跳转问题
- Android推送 利用REST API实现从客户端推送(百度云推送)
- 百度消息推送REST API探究
- 百度推送REST API 签名组织方法
- [iOS 10] 新的通知推送 API
- IOS 推送通知和消息 php做推送服务端
- Android推送通知的实现--PHP+ANDROID做消息推送:基于IBM的MQTT协议的Tokudu项目测试
- 一个标准的REST API测试代码
- 提取谷歌坐标转百度坐标的javascript API用于PHP等服务端语言
- php 百度语音识别 REST API demo
- 百度推送收不到通知的查询步骤
- 关于百度推送点击通知,跳转的问题(Android)
- Android之百度云推送(三)如何启动服务端的定时任务
- 大大大大大大的当地人
- (4.2.12.2)浅谈第三方推送[API的不同]:百度推送、小米推送、华为推送
- 撒大大大大大大大大大大大大大的
- Amazon AWS S3 for PHP 的API使用测试
- jsp提交表单
- 安装unixodbc和freetds需要注意的几点
- Activity中UI框架基本概念
- 问问关于struts2 + ajax + json+hibrenate的问题...
- hdoj1016 Prime Ring Problem (入门回溯) 题解
- 百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端
- Android类似于滚动的通知栏实现
- java.util.Collections.copy()方法注意点
- HTML5 Audio/Video 标签,属性,方法,事件汇总
- 一道有趣的面试题
- Robot Motion (模拟题)
- Eclipse制作jar包
- Jsp添加strust2的标签
- 使用VS2005下自带的MSSQL 2005 EXPRESS