PHP直播源码关于谷歌FCM推送和iOS原生推送的接入和使用说明
PHP直播源码需要接入能提供移动端APP推送的三方供应商,目前国内能提供这方便服务的供应商主要有腾讯、极光、友盟等,但是在国外谷歌FCM推送和iOS原生推送的使用度也比较普遍。PHP直播源码日常开发中也可能需要用到谷歌FCM推送和iOS原生推送,本文简单介绍一下关于PHP直播源码使用谷歌FCM推送和iOS原生推送的接入。
一、PHP直播源码关于谷歌FCM推送的接入和使用
1、注册一个谷歌账号,在firebase上面登录注册,然后生成一个应用,获取该应用的应用秘钥填写到firebase.php中。
$url='https://fcm.googleapis.com/fcm/send'; $headers=array( 'Authorization: key=【此处为需要更换为自己的应用密钥】', 'Content-Type: application/json' ); $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($fields)); $result= curl_exec($ch); if($result=== FALSE) { die('Curl failed: '. curl_error($ch)); } curl_close($ch); return $result;}
2、用户注册时app发送推送的id唯一标志作为web端进行推送的唯一标志,web端在数据库中进行存储;
3、根据PHP直播源码的实际需要进行内容推送,如果直播源码需要全部推送则进行业务遍历推送【此业务时间可能较长】,如果需要单个推送则直接获取对应的推送唯一标志进行单独推送;
//引入必要文件 require_once('/firebase.php'); require_once('/push.php'); $firebase=new \Firebase(); $push=new \Push(); //拼装要推送的信息 $title=''; $message='【要推送的信息】'; $include_image=FALSE; $push->setTitle($title); $push->setMessage($message); //进行推送 $json= $push->getPush(); $json= array( 'body' => $message, 'title' => '', 'icon' => 'myicon', 'sound' => 'mySound' ); $json1= array( 'data'=>array( type' => '1', 'type2' => '2', ) ); $regId= $v['pushid'];【用户推送唯一标志】 $response= $firebase->send($regId, $json, $json1);
注:在控制器和接口文件中使用方法相同;
二、PHP直播源码关于iOS原生推送的接入和使用
1、在iOS开发者账号上操作生成p12文件,使用命令:openssl pkcs12 -in 你的推送.p12 -out apns_production.pem -nodes生成.pem文件,将生成的.pem文件放到本地服务器,注意.pem文件会有生产和开发两个文件,调测阶段使用开发文件,上架后使用生产文件。建议再后台配置中进行配置可以根据自己的实际环境进行随意切换。另外生成.pem文件时需要一个密码,此密码需要保存服务端推送时会用到此密码;后台配置【根据需要获取然后进行不同的文件选择】:
.pem文件【文件可根据实际随意命名】:
2、用户注册时app发送推送的id唯一标志作为web端进行推送的唯一标志,web端在数据库中进行存储;
3、根据自己的实际需要进行内容推送;
//获取用户唯一标志拼装推送信息 $deviceToken=$v['pushid']【用户推送唯一标志】; $ctx = stream_context_create(); $message='【要推送的信息】'; $body=array( "aps"=>array( "alert"=>$message, "badge"=>1, "sound"=>'default' ) ); //根据环境因引入证书文件等 $pass="123456"; //密码 【生成证书文件的密码,可是任意字符串,只要与生成证书文件时一致即可】 if($configpri['jpush_sandbox']==0){ $path=''; //正式.pem文件存放的路径 }else{ $path=''; //测试.pem文件存放的路径 } stream_context_set_option($ctx,"ssl","local_cert",$path); stream_context_set_option($ctx,"ssl","passphrase",$pass); if($configpri['jpush_sandbox']==0){ $fp=stream_socket_client("【正式环境地址】",$err,$errstr,60, STREAM_CLIENT_CONNECT, $ctx); }else{ $fp=stream_socket_client("【测试环境地址】",$err,$errstr,60, STREAM_CLIENT_CONNECT, $ctx); } 注:连接服务器地址与证书文件需要一一对应,即开发(测试)证书-测试地址,生产(正式)证书-生产地址; //进行推送 $payload = json_encode($body); $msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload; fwrite($fp, $msg); fclose($fp);
本文对PHP直播源码使用谷歌FCM推送和iOS原生推送进行简单介绍,如有类似需求可进行简单参照,如有其他问题可另行沟通或进行其他途径的查询。
声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com