제목 | 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
좋은 정보 감사합니다 ^^
|