php验证百度云doc,百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端...
搞了一個(gè)下午,發(fā)送通知終于成功了,分享一下
比客戶端好多了,客戶端都沒有文檔的。
將PHP ?SDK下載后放到網(wǎng)站某目錄
發(fā)送消息很簡單的
$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',
));
最難的是發(fā)送通知,文檔中說
$messages參數(shù)可以是string,array 或 json string,實(shí)際上,你被坑了
官方文檔:
//推送通知,必須指定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格式,相當(dāng)于是一個(gè)字符串拼接格式,也就是偽json格式,因?yàn)閖son轉(zhuǎn)碼中,中文會進(jìn)行處理,但是百度不會還原,所以程序會報(bào)錯(cuò)。
$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!!!!
' );
echo ( 'ERROR NUMBER: ' . $channel->errno ( ) . '
' );
echo ( 'ERROR MESSAGE: ' . $channel->errmsg ( ) . '
' );
echo ( 'REQUEST ID: ' . $channel->getRequestId ( ) . '
' );
}else{
echo ( 'result: ' . print_r ( $return, true ) );
}
這里的字符串拼接必須是單引號,否則也會報(bào)錯(cuò)
user_id和channel_id都是客戶端生成的
還可以自定義一些在百度云推送操作中心支持的操作,比如打開url等,詳細(xì)文檔地址:
總結(jié)
以上是生活随笔為你收集整理的php验证百度云doc,百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php pdo参数化,php – 如何正
- 下一篇: 王者荣耀韩信和赵云谁厉害