首頁 >後端開發 >php教程 >教學:使用Curl、APNS+FCM等擴充實現PHP應用的全球訊息推播功能

教學:使用Curl、APNS+FCM等擴充實現PHP應用的全球訊息推播功能

WBOY
WBOY原創
2023-07-25 23:52:561521瀏覽

教學:使用Curl、APNS FCM等擴展實現PHP應用的全球訊息推送功能

在今天的數位化時代,全球訊息推送功能已成為許多應用程式的核心需求。無論是社群媒體應用程式、電商平台或新聞用戶端,都需要能夠向用戶發送即時通知和訊息推播。本教學將介紹如何使用PHP以及Curl、APNS和FCM擴充功能來實現全球訊息推播功能。

第一步:準備工作
首先,確保你的伺服器上已經安裝了PHP以及Curl擴充。 Curl是一個用於與伺服器進行通訊的工具,我們將使用它來發送推播請求到蘋果和谷歌的訊息推播服務。你可以透過以下指令來安裝Curl擴充功能:

sudo apt-get install php-curl

接下來,我們需要準備APNS和FCM所需的憑證和金鑰。 APNS(Apple Push Notification Service)用於向蘋果設備發送推播通知,而FCM(Firebase Cloud Messaging)則用於向安卓裝置發送推播通知。

對於APNS,你需要在Apple開發者網站上建立一個推送證書,並將證書下載到你的伺服器。然後,你需要使用openssl指令將.p12格式的憑證轉換成.pem格式的文件,以便在PHP中使用。使用下列指令將.p12憑證轉換成.pem憑證:

openssl pkcs12 -in cert.p12 -out cert.pem -nodes

對於FCM,你需要在Firebase控制台上建立一個項目,並取得一個用於身份驗證的伺服器金鑰。你還需要安裝FCM PHP擴充功能。你可以透過以下命令來安裝FCM PHP擴充:

composer require brozot/laravel-fcm

第二步:寫PHP程式碼
接下來,我們將編寫PHP程式碼來實現全球訊息推播功能。我們將使用Curl擴充功能來傳送請求到APNS和FCM的推播服務。

首先,我們需要在PHP檔案的頂部引入Curl擴充:

...
// 引入Curl扩展
...

然後,我們需要建立一個函數來發送推送請求到APNS。這個函數將接收裝置的令牌(token)、推送標題(title)和內容(body)作為參數,並將推播請求傳送給APNS伺服器:

function sendAPNSPush($token, $title, $ body) {

// 创建推送通知数组
$data = [
    'aps' => [
        'alert' => [
            'title' => $title,
            'body' => $body,
        ],
        'sound' => 'default'
    ]
];

// 加载.pem证书文件
$cert = __DIR__ . '/cert.pem';
$passphrase = 'your_certificate_passphrase';

// 创建Curl实例
$ch = curl_init();

// 设置Curl选项
curl_setopt($ch, CURLOPT_URL, 'https://api.development.push.apple.com/3/device/' . $token);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $cert . ':' . $passphrase,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 执行Curl请求
$result = curl_exec($ch);

// 关闭Curl实例
curl_close($ch);

// 返回结果
return $result;

}

接下來,我們需要建立一個函數來傳送推播請求到FCM。這個函數將接收裝置的令牌(token)、推送標題(title)和內容(body)作為參數,並將推播請求傳送給FCM伺服器:

function sendFCMPush($token, $title, $ body) {

// 创建推送通知数组
$data = [
    'notification' => [
        'title' => $title,
        'body' => $body,
    ],
    'to' => $token,
];

// 创建Curl实例
$ch = curl_init();

// 设置Curl选项
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: key=your_fcm_server_key',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行Curl请求
$result = curl_exec($ch);

// 关闭Curl实例
curl_close($ch);

// 返回结果
return $result;

}

第三步:呼叫函數發送推播請求
現在,我們可以在我們的PHP應用程式中呼叫這些發送推播請求的函數來實現全球訊息推送功能。以下是一個例子:

...
// 引入Curl扩展和APNS、FCM发送函数
...

// 设备令牌
$deviceToken = 'xxxxx';
// 推送标题
$pushTitle = '消息推送';
// 推送内容
$pushBody = '你收到一条新的消息';

// 发送APNS推送
$apnsResult = sendAPNSPush($deviceToken, $pushTitle, $pushBody);

// 发送FCM推送
$fcmResult = sendFCMPush($deviceToken, $pushTitle, $pushBody);

// 输出结果
echo 'APNS推送结果:' . $apnsResult;
echo 'FCM推送结果:' . $fcmResult;

這樣,我們就成功地實現了使用Curl、APNS和FCM擴充功能來實現PHP應用的全球訊息推送功能。現在,我們可以向蘋果設備和安卓設備發送推播通知和訊息推播了。

結語
在本教學中,我們學習如何使用Curl、APNS和FCM等擴充功能來實現PHP應用的全球訊息推播功能。我們首先準備了所需的伺服器環境和憑證金鑰,並將其與PHP程式碼進行了整合。然後,我們編寫了發送推送請求的函數,並實際呼叫這些函數來完成全球訊息推送功能。有了這些知識和技巧,你可以為你的應用程式添加強大的訊息推播功能,提升使用者體驗。

以上是教學:使用Curl、APNS+FCM等擴充實現PHP應用的全球訊息推播功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn