PHP直播源码关于谷歌FCM推送和iOS原生推送的接入和使用说明

发布来源:云豹科技
发布人:云豹科技
2020-12-14 10:05:49

PHP直播源码需要接入能提供移动端APP推送的三方供应商,目前国内能提供这方便服务的供应商主要有腾讯、极光、友盟等,但是在国外谷歌FCM推送和iOS原生推送的使用度也比较普遍。PHP直播源码日常开发中也可能需要用到谷歌FCM推送和iOS原生推送,本文简单介绍一下关于PHP直播源码使用谷歌FCM推送和iOS原生推送的接入。

一、PHP直播源码关于谷歌FCM推送的接入和使用

1、注册一个谷歌账号,在firebase上面登录注册,然后生成一个应用,获取该应用的应用秘钥填写到firebase.php中。


图片1.png


      $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文件时需要一个密码,此密码需要保存服务端推送时会用到此密码;后台配置【根据需要获取然后进行不同的文件选择】:

图片2.png

.pem文件【文件可根据实际随意命名】:

图片3.png

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

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任
立即查看