SDK下載地址:https://dev.mi.com/mipush/downpage/
在WWW創建miPush,把SDK解壓到WWW/miPush
我這邊可能會有2種推送方法,使用 sendType 字段 實現,直接看代碼:(我創建的接口名:gsw_android_mipush)
<?php
use xmpush\Builder;
use xmpush\Sender;
use xmpush\Constants;
include_once(dirname(__FILE__) . '/autoload.php');
// http://127.0.0.1/mipush/gsw_android_mipush.php?sendType=0¬ifyId=0&userAccount=&title=標題111&desc=內容222&payload= // 給全部用戶發送
// http://127.0.0.1/mipush/gsw_android_mipush.php?sendType=1¬ifyId=0&userAccount=123,333&title=標題333&desc=內容444&payload= // 群發給123,333
$sendType = $_GET['sendType']; // 0→向所有設備發送消息 1→指定userAccount群發
$notifyId = $_GET['notifyId']; // 通知編號 相同編號的通知會互相覆蓋
$userAccount = $_GET['userAccount']; // 指定userAccount群發 的 userAccount數組 1000次/s 單條消息體最多攜帶1000個設備ID
$title = $_GET['title']; // 推送標題
$desc = $_GET['desc']; // 推送內容
$payload = $_GET['payload']; // 推送攜帶數據→鍵值對 暫時用不到
$push = new \push(); // 實例化下面的類
$push->pushFun($sendType, $notifyId, $userAccount, $title, $desc, $payload); // 調用函數
echo "<br><br>"."sendType = ".$sendType."<br>"."notifyId = ".$notifyId."<br>"."title = ".$title."<br>"."desc = ".$desc."<br>"."payload = ".$payload."<br><br>"; // 打印主要參數
var_dump($userAccount); // 打印 userAccount數組
class push
{
public function pushFun($style,$notifyId,$userAccount,$title,$desc,$payload)
{
$secret = 'xxxxxxxxxxxx'; // XX 小米推送秘鑰
$package = 'com.xxxxx'; // XX 包名
Constants::setPackage($package); // 常量設置必須在new Sender()方法之前調用
Constants::setSecret($secret); // 常量設置必須在new Sender()方法之前調用
$sender = new Sender();
$message1 = new Builder();
$message1->title($title); // 通知欄的title
$message1->description($desc); // 通知欄的descption
$message1->passThrough(0); // 這是一條通知欄消息,如果需要透傳,把這個參數設置成1,同時去掉title和descption兩個參數
$message1->payload($payload); // 攜帶的數據,點擊后將會通過客戶端的receiver中的onReceiveMessage方法傳入。
$message1->extra(Builder::notifyForeground, 1); // 應用在前台是否展示通知,如果不希望應用在前台時候彈出通知,則設置這個參數為0
$message1->notifyId((int)$notifyId); // 通知類型。最多支持0-4 5個取值范圍,同樣的類型的通知會互相覆蓋,不同類型可以在通知欄並存 左邊的官方文檔,實際測試,隨便取值0-9999999都可以。
$message1->build();
$id = (int)$style;
if ($id == 0) {
print_r($sender->broadcastAll($message1)->getRaw()); // 向所有設備發送消息。
}else if ($id == 1){
print_r($sender->sendToUserAccount($message1, $userAccount)->getRaw()); // 指定userAccount群發。userAccount:Android端自定義,10個設備可是使用相同的userAccount,第11個設備會頂掉第1個設備
}
}
}
