在前文中:Swift - JPush極光推送的使用1(配置、簡單的推送測試樣例)。介紹了移動用戶端如何配置使用 JPush SDK。當時是登入到極光控制台,來發送推送消息進行測試的。但通常在實際項目中,我們會有專門的應用伺服器來管理所有的使用者,裝置、消息等。
極光提供了完善的 REST API 接口,以及各個伺服器語言專用的 SDK(JAVA、Python、C#、PHP、Nodejs、Ruby)。我們伺服器背景隻要調用一下相應的接口就可以進行消息推送了。
下面示範背景使用 PHP SDK,給所有人發送消息。(用戶端還是使用前文那個,這裡就不再說明了。)
1,使用PHP SDK推送廣播消息
雖然我們使用REST API來推送也是可以的,但使用 JPush PHP SDK的話會更加友善快捷。
(2)将壓縮包解壓,裡面除了接口檔案外還提供了樣例代碼。我們使用時,隻需要把壓縮包裡的 src 檔案夾,以及 autoload.php 檔案上傳到伺服器項目目錄下。(我這裡是放到 JPush檔案夾下。)
(3)在需要使用 JPush 的檔案中,引入“autoload.php”即可。
require 'JPush/autoload.php';
(4)下面是一個完整的頁面代碼
注意:setOptions 方法裡的第四個參數。用來指定 APNs 是否是生産環境。true 表示推送到生産環境,false 表示推送到開發環境。
//引入代碼
require 'JPush/autoload.php';
use JPush\Client as JPush;
if(isset($_POST["message"])){
//初始化
$app_key = "7b528331738ec719165798fd";
$master_secret = "32da4e2c06ac7b55da2c9228";
$client = new JPush($app_key, $master_secret);
//簡單的推送樣例
$result = $client->push()
->setPlatform('ios', 'android')
->addAllAudience()
->setNotificationAlert($_POST["message"])
->options(array(
"apns_production" => true //true表示發送到生産環境(預設值),false為開發環境
))
->send();
echo 'Result=' . json_encode($result);
}
?>
推送廣播通知
2,運作測試
(1)将上面的 php 頁面上傳到伺服器并通路,頁面顯示如下:
(2)在輸入框中填寫需要發送的通知消息,點選“推送廣播通知”按鈕。即可調用JPust API接口,将消息推送到所有的裝置上。同時推送完畢後,頁面上會顯示接口調用的傳回結果。
(3)推送完畢後,手機這邊也成功地顯示出通知消息。
3,更完整的推送示例
上面示範的隻是 php 調用 sdk 的一個最簡單的樣例。其實 JPush SDK提供的 API 接口配置還是很豐富的,比如下面是一個完整的推送示例。其中包含指定 Platform,指定 Alias,Tag,指定 iOS,Android notification,指定 Message 等。
(對于向指定的 Alias、Tag 裝置推送通知,後面我還會寫兩篇相關文章來說明。)
//簡單的推送樣例
$result = $client->push()
->setPlatform('ios', 'android')
->addAlias('alias1')
->addTag(['tag1', 'tag2'])
//->addAllAudience()
->setNotificationAlert('Hello, JPush')
->iosNotification('hello', [
'sound' => 'sound',
'badge' => '+1',
'extras' => [
'key' => 'value'
]
])
->androidNotification('hello', [
'title' => 'title',
'extras' => [
'key' => 'value'
]
])
->message('Hello JPush', [
'title' => 'Hello',
'content_type' => 'text',
'extras' => [
'key' => 'value'
]
])
->options(array(
"apns_production" => true,
'sendno' => 100,
'time_to_live' => 100,
//'big_push_duration' => 5
//'override_msg_id' => 100,
))
->send();