| 제목 | PushWoosh push 전송 클래스 | ||
|---|---|---|---|
| 글쓴이 | 테러보이 | 작성시각 | 2015/05/04 13:31:23 |
|
|
|||
<?php
/**
* 제작: 임동덕
* 작업일: 2015-02-11
* 사용법
-------------------------------------------
$Push = new TBPushWoosh; // 클래스 선언
$Push->setConfig( pushwoosh api 토큰키 , pushwoosh 어플리케이션코드(어플아님) , 디버그모드(true, false) ); // 기본환경설정
$Push->Send( 메시지 ); // 전체 발송
$Push->Send( 메시지, '', Y-m-d H:i 형태의 시간 ); // 예약 전체 발송
$Push->Send( 메시지, 디바이스코드(array or string) ); // 디바이스 지정 발송
$Push->Send( 메시지, 디바이스코드(array or string) , Y-m-d H:i 형태의 시간 ); // 디바이스 지정 예약발송
$Push->unsetConfig(); // 기본환경설정 초기화 (특이사항에서만 사용)
**/
class TBPushWoosh {
var $config;
# 기본 pushwosh 토큰과 디버그 모드를 설정한다.
public function setConfig($Auth, $AppCode, $Debug=false) {
$this->config['auth'] = $Auth;
$this->config['app_code'] = $AppCode;
$this->config['debug'] = $Debug;
}
# 설정된 토큰과 디버그 모드를 리셋한다.
public function unsetConfig() {
$this->config['auth'] = '';
$this->config['app_code'] = '';
$this->config['debug'] = false;
}
# 설정을 확인한다.
public function printConfig() {
$config = $this->config;
return $config;
}
# 내부에서 사용하는 CURL 함수
private function Curl($Url, $Request) {
// 반환 변수 초기값
$output = array();
$ch = curl_init($Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Request);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$output['response'] = $response;
$output['info'] = $info;
return $output;
}
# array to json
public function array_to_json($data) {
switch (gettype($data)) {
case 'boolean':
return $data?'true':'false';
case 'integer':
case 'double':
return $data;
case 'string':
return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';
case 'array':
$rel = false; // relative array?
$key = array_keys($data);
foreach ($key as $v) {
if (!is_int($v)) {
$rel = true;
break;
}
}
$arr = array();
foreach ($data as $k=>$v) {
$arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').$this->array_to_json($v);
}
return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';
default:
return '""';
}
}
# 메시지를 발송한다.
public function Send($msg, $Device='', $SetTime='now') {
// 초기값 선언
$request_add = '';
$notifications_add = '';
// 통신 매쏘드 (고정) + url
$method= 'createMessage';
$url = 'https://cp.pushwoosh.com/json/1.3/' . $method;
// 예약 발송시 사용
if($SetTime == 'now') {
$notifications_add .= ', "send_date": "now" ';
}
else {
if(time() > strtotime($SetTime)) $notifications_add .= ', "send_date": "now" '; // 과거 시간으로 전송 차단
else $notifications_add .= ', "send_date": "'.date('Y-m-d H:i', strtotime($SetTime)).'" ';
}
// 디바이스 지정 전송 설정
if(trim($Device)) {
if(is_array($Device)) {
$notifications_add .= ' ,"devices": [ ';
foreach($Device as $key=>$val) {
if($key > 0) $notifications_add .= ', ';
$notifications_add .= ' "'.$val.'" ';
}
$notifications_add .= ' ] ';
}
else {
$notifications_add .= ' ,"devices": ["'.$Device.'"] ';
}
}
// msg to json
$msg = $this->array_to_json($msg);
// json 전송 포맷 설정
$request = '{
"request": {
"application": "'.$this->config['app_code'].'",
"auth": "'.$this->config['auth'].'",
"notifications": [{
"ignore_user_timezone": true,
"content": '.$msg.'
'.$notifications_add.'
}]
'.$request_add.'
}
}';
// 서버로 전송 및 결과 반환
$Result = $this->Curl($url, $request);
// 디버깅 모드시 결과 출력
if ($this->config['debug'] === true) {
print "[PW] request: $request<hr>";
print "[PW] response: {$Result['response']}<hr>";
print "[PW] info: " . print_r($Result['info'], true).'<hr>';
print "[config] config: ". print_r($this->printConfig(), true);
}
}
}
|
|||
| 다음글 | 라라벨 프레임워크 5.0 한글 메뉴얼 (4) | ||
| 이전글 | parse push전송 클래스 (5) | ||
|
한대승(불의회상)
/
2015/05/04 14:19:45 /
추천
0
좋은 정보 감사 합니다. ^^
|
|
일용직노동자
/
2015/06/19 10:44:54 /
추천
0
좋은 정보 감사합니다 ^^
|