基於Codeigniter的個推 PUSH 服務
原創,原載於:https://www.skiy.net/201605064018.html
其實很簡單,只需要在將個推的 SDK 解壓到application/libraries/Getui/
目錄下即可。
然後新建檔案application/libraries/Getui.php
。
再將Getui/IGt.Push.php
引入即可。
使用方式和sdk下的demo一樣。
新建Getui.php的程式碼如下方式如下:
require "Getui/IGt.Push.php";
class Getui {}
我擴充套件封裝好的版本如下:
<?php
/**
*
* Getui.php
* @author : Skiychan <dev@skiy.net>
* @link : http://www.zzzzy.com
* @created : 5/4/16
* @modified:
* @version : 0.0.1
*/
require "Getui/IGt.Push.php";
class Getui {
private $_appid = "";
private $_appkey = "";
private $_title = "";
private $_message = "";
public function __construct() {}
/**
* 設定 app 資訊
* @param $appid
* @param $appkey
*/
public function setKey($appid, $appkey) {
$this->_appid = $appid;
$this->_appkey = $appkey;
}
/**
* 設定模板型別
* @param $type
* 1.通知透傳模板
* 2.通知連結模板
* 3.透傳模板
* 4.通知彈框下載模板
*/
public function setTemplate($type) {
switch ($type) {
case 1: //通知透傳模板
return $this->IGtNotificationTemplate();
break;
case 2: //通知連結模板
return $this->IGtLinkTemplate();
break;
case 3: //透傳模板
return $this->IGtTransmissionTemplate();
break;
case 4: //通知彈框下載模板
return $this->IGtNotyPopLoadTemplate();
break;
default: //通知透傳模板
return $this->IGtNotificationTemplate();
}
}
/**
* 設定訊息內容
* @param $title
* @param $message
*/
public function setInfo($title, $message) {
$this->_title = $title;
$this->_message = $message;
}
/**
* 個推資訊體
* @param string $template 設定推送訊息型別
* @param int $pushtype 推送型別 預設1(單個使用者),2(多個使用者), 3(單個應用下的所有使用者)
* @param bool $online 是否離線
* @param int $expire 離線時間
* @param int $worktype 設定是否根據WIFI推送訊息
* @return IGtSingleMessage
*/
public function setMessage($template, $pushtype=1, $online=false, $expire=3600*12*1000, $worktype=0) {
switch ($pushtype) {
case 2: //支援對多個使用者進行推送,建議為50個使用者
$message = new PushMessageToList();
break;
case 3: //對單個應用下的所有使用者進行推送,可根據省份,標籤,機型過濾推送
$message = new pushMessageToApp();
break;
default: //支援對單個使用者進行推送
$message = new IGtSingleMessage();
}
$message->set_isOffline($online); //是否離線
($online == true) && $message->set_offlineExpireTime($expire); //離線時間
$message->set_data($template); //設定推送訊息型別
$message->set_PushNetWorkType($worktype); //設定是否根據WIFI推送訊息,1為wifi推送,0為不限制推送
return $message;
}
/**
* 接收方
* @param $client_id 裝置id
* @return IGtTarget
*/
public function setTarget($client_id, $alias="") {
$target = new IGtTarget();
$target->set_appId($this->_appid);
$target->set_clientId($client_id);
empty($alias) || $target->set_alias($alias);
return $target;
}
/**
* 通知彈框下載功能模板
* @return IGtNotyPopLoadTemplate
*/
public function IGtNotyPopLoadTemplate(){
$template = new IGtNotyPopLoadTemplate();
$template ->set_appId($this->_appid);//應用appid
$template ->set_appkey($this->_appkey);//應用appkey
//通知欄
$template ->set_notyTitle($this->_title);//通知欄標題
$template ->set_notyContent($this->_message);//通知欄內容
$template ->set_notyIcon("");//通知欄logo
$template ->set_isBelled(true);//是否響鈴
$template ->set_isVibrationed(true);//是否震動
$template ->set_isCleared(true);//通知欄是否可清除
//彈框
$template ->set_popTitle($this->_title);//彈框標題
$template ->set_popContent($this->_message);//彈框內容
$template ->set_popImage("");//彈框圖片
$template ->set_popButton1("下載");//左鍵
$template ->set_popButton2("取消");//右鍵
//下載
$template ->set_loadIcon("");//彈框圖片
$template ->set_loadTitle($this->_title);
$template ->set_loadUrl("http://192.168.1.181/download/ekong_v2.0.7.apk");
$template ->set_isAutoInstall(false);
$template ->set_isActived(true);
//$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
return $template;
}
/**
* 通知開啟連結功能模板
* @return IGtLinkTemplate
*/
public function IGtLinkTemplate(){
$template = new IGtLinkTemplate();
$template->set_appId($this->_appid);//應用appid
$template->set_appkey($this->_appkey);//應用appkey
$template->set_title($this->_title);//通知欄標題
$template->set_text($this->_message);//通知欄內容
$template ->set_logo("");//通知欄logo
$template ->set_isRing(true);//是否響鈴
$template ->set_isVibrate(true);//是否震動
$template ->set_isClearable(true);//通知欄是否可清除
$template ->set_url("http://www.igetui.com/");//開啟連線地址
//$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
//iOS推送需要設定的pushInfo欄位
// $apn = new IGtAPNPayload();
// $apn->alertMsg = "alertMsg";
// $apn->badge = 11;
// $apn->actionLocKey = "啟動";
// // $apn->category = "ACTIONABLE";
// // $apn->contentAvailable = 1;
// $apn->locKey = "通知欄內容";
// $apn->title = "通知欄標題";
// $apn->titleLocArgs = array("titleLocArgs");
// $apn->titleLocKey = "通知欄標題";
// $apn->body = "body";
// $apn->customMsg = array("payload"=>"payload");
// $apn->launchImage = "launchImage";
// $apn->locArgs = array("locArgs");
//
// $apn->sound=("test1.wav");;
// $template->set_apnInfo($apn);
return $template;
}
/**
* 通知透傳功能模板
* @return IGtNotificationTemplate
*/
public function IGtNotificationTemplate(){
$template = new IGtNotificationTemplate();
$template->set_appId($this->_appid);//應用appid
$template->set_appkey($this->_appkey);//應用appkey
$template->set_transmissionType(1);//透傳訊息型別
$template->set_transmissionContent($this->_message);//透傳內容
$template->set_title($this->_title);//通知欄標題
$template->set_text($this->_message);//通知欄內容
//$template->set_logo("https://www.ekong366.com/static/img/index_logo.png");//通知欄logo
$template->set_isRing(true);//是否響鈴
$template->set_isVibrate(true);//是否震動
$template->set_isClearable(true);//通知欄是否可清除
//$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
//iOS推送需要設定的pushInfo欄位
// $apn = new IGtAPNPayload();
// $apn->alertMsg = "alertMsg";
// $apn->badge = 11;
// $apn->actionLocKey = "啟動";
// // $apn->category = "ACTIONABLE";
// // $apn->contentAvailable = 1;
// $apn->locKey = "通知欄內容";
// $apn->title = "通知欄標題";
// $apn->titleLocArgs = array("titleLocArgs");
// $apn->titleLocKey = "通知欄標題";
// $apn->body = "body";
// $apn->customMsg = array("payload"=>"payload");
// $apn->launchImage = "launchImage";
// $apn->locArgs = array("locArgs");
//
// $apn->sound=("test1.wav");;
// $template->set_apnInfo($apn);
return $template;
}
/**
* 透傳功能模板
* @return IGtTransmissionTemplate
* @throws Exception
*/
public function IGtTransmissionTemplate(){
$template = new IGtTransmissionTemplate();
$template->set_appId($this->_appid);//應用appid
$template->set_appkey($this->_appkey);//應用appkey
$template->set_transmissionType(1);//透傳訊息型別
$template->set_transmissionContent($this->_message);//透傳內容
//$template->set_duration(BEGINTIME,ENDTIME); //設定ANDROID客戶端在此時間區間內展示訊息
//APN簡單推送
// $template = new IGtAPNTemplate();
// $apn = new IGtAPNPayload();
// $alertmsg=new SimpleAlertMsg();
// $alertmsg->alertMsg="";
// $apn->alertMsg=$alertmsg;
//// $apn->badge=2;
//// $apn->sound="";
// $apn->add_customMsg("payload","payload");
// $apn->contentAvailable=1;
// $apn->category="ACTIONABLE";
// $template->set_apnInfo($apn);
// $message = new IGtSingleMessage();
//APN高階推送
$apn = new IGtAPNPayload();
$alertmsg=new DictionaryAlertMsg();
$alertmsg->body="body";
$alertmsg->actionLocKey="ActionLockey";
$alertmsg->locKey="LocKey";
$alertmsg->locArgs=array("locargs");
$alertmsg->launchImage="launchimage";
// IOS8.2 支援
$alertmsg->title="Title";
$alertmsg->titleLocKey="TitleLocKey";
$alertmsg->titleLocArgs=array("TitleLocArg");
$apn->alertMsg=$alertmsg;
$apn->badge=7;
$apn->sound="";
$apn->add_customMsg("payload","payload");
$apn->contentAvailable=1;
$apn->category="ACTIONABLE";
$template->set_apnInfo($apn);
return $template;
}
}
相關文章
- 從零搭建一個基於Istio的服務網格
- 基於 xorm 的服務端框架 XGoServerORM服務端框架GoServer
- Eventuate:基於操作CRDT的服務框架框架
- 基於Nginx搭建WebDAV服務NginxWeb
- 構建基於RocketMQ的分散式事務服務MQ分散式
- SpringCloud微服務系列(2): 建立一個基於Springboot的RESTFul服務GCCloud微服務Spring BootREST
- 基於代理服務的介面合併方案
- 推薦一個基於Dapr的 Red Dog 的完整微服務應用程式微服務
- 基於ECS搭建GitLab服務Gitlab
- 基於Java NIO 寫的一個簡單版 Netty 服務端JavaNetty服務端
- 分散式事務:基於可靠訊息服務分散式
- Go實現基於WebSocket的彈幕服務GoWeb
- 基於 swoole 的 websocket 服務一:狀態同步Web
- 基於Zookeeper執行獨立的Lagom服務Go
- 服務端指南 | 基於角色的訪問控制服務端
- 基於lua協程的AI服務實現AI
- 基於 Swoole 搭建 WebSocket 服務詳解Web
- 基於Docker部署Dubbo+Nacos服務Docker
- 基於lbs服務應用開發
- 基於畢昇上線基於大模型對應服務大模型
- 基於Spring Cloud微服務叢集的服務治理思考SpringCloud微服務
- Serverless:基於個性化服務畫像的彈性伸縮實踐Server
- 服務端指南 | 基於資料的訪問控制服務端
- 記一次基於Cloudflare服務的爬蟲Cloud爬蟲
- 基於gin的golang web開發:服務間呼叫GolangWeb
- 基於 swoole 的 websocket 服務實現狀態同步Web
- 基於EF Core儲存的國際化服務
- 微服務架構 | 5.2 基於 Sentinel 的服務限流及熔斷微服務架構
- 諾基亞基於區塊鏈推環境感知服務,助力智慧城市發展區塊鏈
- SAP Business Application Studio 裡建立一個基於 CAP 模型的 OData 服務APP模型
- 推薦30個用於微服務的頂級工具微服務
- React服務端渲染實現(基於Dva)React服務端
- 基於ECS搭建FTP服務(阿里雲)FTP阿里
- Flask 系列 - 基於 Flask 提供 RESTful Web 服務FlaskRESTWeb
- 【web服務】耗時任務基於API與worker模式WebAPI模式
- 基於可靠訊息方案的分散式事務(四):接入Lottor服務分散式
- 基於雲服務的個人網站架構設計網站架構
- 基於 Nuxt 的 Vue.js 服務端渲染實踐UXVue.js服務端