1. 程式人生 > 其它 >PHP直播原始碼關於谷歌FCM推送和iOS原生推送的接入和使用說明

PHP直播原始碼關於谷歌FCM推送和iOS原生推送的接入和使用說明

技術標籤:技術類javaphpandroidmysqljs

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原生推送進行簡單介紹,如有類似需求可進行簡單參照,如有其他問題可另行溝通或進行其他途徑的查詢。
宣告:以上內容為雲豹科技作者本人原創,未經作者本人同意,禁止轉載,否則將追究相關法律責任