You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
3.5 KiB
141 lines
3.5 KiB
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: Administrator
|
|
* Date: 15-4-10
|
|
* Time: 上午11:37
|
|
*/
|
|
|
|
class IGtAPNPayload
|
|
{
|
|
var $APN_SOUND_SILENCE = "com.gexin.ios.silence";
|
|
public static $PAYLOAD_MAX_BYTES = 2048;
|
|
|
|
|
|
var $customMsg = array();
|
|
|
|
var $badge = -1;
|
|
var $sound = "default";
|
|
var $contentAvailable = 0;
|
|
var $category;
|
|
var $alertMsg;
|
|
|
|
public function get_payload()
|
|
{
|
|
try {
|
|
|
|
$apsMap = array();
|
|
|
|
if ($this->alertMsg != null) {
|
|
$msg = $this->alertMsg->get_alertMsg();
|
|
if($msg != null)
|
|
{
|
|
$apsMap["alert"] = $msg;
|
|
}
|
|
}
|
|
|
|
if ($this->badge >= 0) {
|
|
$apsMap["badge"] = $this->badge;
|
|
}
|
|
if($this -> sound == null || $this->sound == '' )
|
|
{
|
|
$apsMap["sound"] = 'default';
|
|
}elseif($this->sound != $this->APN_SOUND_SILENCE)
|
|
{
|
|
$apsMap["sound"] = $this->sound;
|
|
}
|
|
|
|
if (sizeof($apsMap) == 0) {
|
|
throw new Exception("format error");
|
|
}
|
|
if ($this->contentAvailable > 0) {
|
|
$apsMap["content-available"] = $this->contentAvailable;
|
|
}
|
|
if ($this->category != null && $this->category != "") {
|
|
$apsMap["category"] = $this->category;
|
|
}
|
|
|
|
$map = array();
|
|
if(count($this->customMsg) > 0){
|
|
foreach ($this->customMsg as $key => $value) {
|
|
$map[$key] = $value;
|
|
}
|
|
}
|
|
$map["aps"] = $apsMap;
|
|
return json_encode($map);
|
|
} catch (Exception $e) {
|
|
throw new Exception("create apn payload error", $e);
|
|
}
|
|
}
|
|
|
|
public function add_customMsg($key, $value)
|
|
{
|
|
if ($key != null && $key != "" && $value != null) {
|
|
$this->customMsg[$key] = $value;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
interface ApnMsg
|
|
{
|
|
public function get_alertMsg();
|
|
}
|
|
|
|
class DictionaryAlertMsg implements ApnMsg{
|
|
|
|
var $title;
|
|
var $body;
|
|
var $titleLocKey;
|
|
var $titleLocArgs = array();
|
|
var $actionLocKey;
|
|
var $locKey;
|
|
var $locArgs = array();
|
|
var $launchImage;
|
|
|
|
public function get_alertMsg() {
|
|
|
|
$alertMap = array();
|
|
|
|
if ($this->title != null && $this->title != "") {
|
|
$alertMap["title"] = $this->title;
|
|
}
|
|
if ($this->body != null && $this->body != "") {
|
|
$alertMap["body"] = $this->body;
|
|
}
|
|
if ($this->titleLocKey != null && $this->titleLocKey != "") {
|
|
$alertMap["title-loc-key"] = $this->titleLocKey;
|
|
}
|
|
if (sizeof($this->titleLocArgs) > 0) {
|
|
$alertMap["title-loc-args"] = $this->titleLocArgs;
|
|
}
|
|
if ($this->actionLocKey != null && $this->actionLocKey) {
|
|
$alertMap["action-loc-key"] = $this->actionLocKey;
|
|
}
|
|
if ($this->locKey != null && $this->locKey != "") {
|
|
$alertMap["loc-key"] = $this->locKey;
|
|
}
|
|
if (sizeof($this->locArgs) > 0) {
|
|
$alertMap["loc-args"] = $this->locArgs;
|
|
}
|
|
if ($this->launchImage != null && $this->launchImage != "") {
|
|
$alertMap["launch-image"] = $this->launchImage;
|
|
}
|
|
|
|
if(count($alertMap) == 0)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return $alertMap;
|
|
}
|
|
}
|
|
|
|
class SimpleAlertMsg implements ApnMsg{
|
|
var $alertMsg;
|
|
|
|
public function get_alertMsg() {
|
|
return $this->alertMsg;
|
|
}
|
|
}
|
|
?>
|
|
|