다마리 행님의 어플 지원으로 후딱 만들었습니다.
안드로이드는 확인 했습니다. 아마 다른 디바이스도 작동 될 것으로 생각 됩니다.
날림 작업 소스라 개발자팁으로는 못올리겠네요 ㅠ.ㅠ
[code]
<?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);
}
}
}
[/code]
클래스 내부 $request 자체를 json_encode 처리하지 않은건 중간에 값을 용이하게 추가 하기 위함 입니다.
댓글 17개
게시글 목록
| 번호 | 제목 |
|---|---|
| 28213 | |
| 31006 |
CSS
css가 충돌이 됬을때
4
|
| 7898 | |
| 7897 | |
| 19935 |
JavaScript
풀스크린 스크립트
|
| 7892 | |
| 7885 | |
| 31005 | |
| 28209 | |
| 7880 | |
| 7877 | |
| 7871 | |
| 7865 | |
| 7862 | |
| 7858 | |
| 7852 | |
| 19933 |
웹서버
vi 온라인 학습장
1
|
| 19931 |
jQuery
강력한 무료 멀티 업로더...
1
|
| 19928 | |
| 19927 | |
| 31003 |
HTML
HTML5 자바스크립트 API
1
|
| 19920 |
기타
P3P 규약의 이해
6
|
| 28206 | |
| 19918 | |
| 28200 | |
| 7850 | |
| 19916 | |
| 28180 | |
| 28165 | |
| 19911 | |
| 7842 | |
| 7838 | |
| 7830 | |
| 7818 | |
| 28150 | |
| 19906 |
PHP
외부이미지 썸네일 만들기
5
|
| 19905 |
웹서버
퍼미션 계산기-아주 좋습니다.
|
| 19903 |
JavaScript
화면전체에 눈 내리는 효과
1
|
| 19901 |
PHP
외부이미지 서버에 저장하기
1
|
| 19900 |
PHP
유튜브 api 사용하기
|
| 28145 | |
| 7815 | |
| 31002 | |
| 7803 | |
| 7799 | |
| 7785 | |
| 19898 | |
| 7780 | |
| 7779 | |
| 7777 | |
| 7776 | |
| 7775 | |
| 7758 | |
| 19893 | |
| 19892 | |
| 19891 | |
| 20850 |
도로명주소
다음 우편번호 api
2
|
| 19885 | |
| 7752 | |
| 7747 | |
| 7738 | |
| 19883 |
JavaScript
자바스크립트로 오버로딩 구현하기
1
|
| 7735 | |
| 28139 | |
| 7734 | |
| 7731 | |
| 7725 | |
| 7717 | |
| 19879 | |
| 7715 | |
| 7710 | |
| 19858 | |
| 7709 | |
| 7703 | |
| 28134 | |
| 28129 | |
| 7694 | |
| 7690 | |
| 28125 | |
| 7672 | |
| 7660 | |
| 28111 | |
| 19857 | |
| 19856 |
MySQL
사이트 관리자 비밀번호 재설정하기
|
| 7658 | |
| 28106 | |
| 28098 | |
| 7655 | |
| 28095 | |
| 7651 | |
| 19851 | |
| 7646 | |
| 19850 | |
| 24661 | |
| 28089 | |
| 7633 | |
| 7623 | |
| 28087 | |
| 28085 | |
| 7620 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기