Laravel 华为推送
代码如下(示例):
/**
* 推送消息
*/
public static function push($data){
self::getAccessToken();
$url="https://push-api.cloud.huawei.com/v1/".self::$config['appId']."/messages:send";
$Authorization="Bearer ".self::$accessToken;
$header=['Content-Type: application/x-www-form-urlencoded','Authorization:'.$Authorization];
$return = self::curPost($url,$data,$header);
return $return;
}
//调用示例
$data=[
'message'=>[
'notification'=>[
'title'=>'message title',
'body'=>'message body',
],
'android'=>[
'notification'=>[
'click_action'=>[
'type'=>1,
'intent'=>''
]
]
],
'token'=>[
''
]
]
];
$data=json_encode($data);
$class::push($data);
获取access_token
代码如下(示例):
/**
* 获取accessToken
* @return false|mixed
*/
public static function getAccessToken()
{
$key="HUAWEI_PUSH_ACCESSTOKEN";
$accessToken = Cache::get($key);
if(empty($accessToken)){
//接口地址
$url = "https://oauth-login.cloud.huawei.com/oauth2/v3/token";
$data=[
'grant_type'=>'client_credentials',
'client_id'=>self::$config['appId'],
'client_secret'=>self::$config['appSecret'],
];
//发起请求
$return = self::curPost($url,$data);
if(!empty($return['access_token'])){
Cache::put($key,$return['access_token'],$return['expires_in']);
}
return $return['access_token']??"";
}
self::$accessToken=$accessToken;
return $accessToken;
}
public static function curPost($url,$data,$header=['Content-Type: application/x-www-form-urlencoded'])
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);//不抓取头部信息。只返回数据
curl_setopt($curl, CURLOPT_TIMEOUT,1000);//超时设置
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//1表示不返回bool值
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//重点
if(is_array($data)){
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
}else{
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
$response = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
$response=json_decode($response,true);
curl_close($curl);
return $response;
}