제목 | parse push전송 클래스 | ||
---|---|---|---|
글쓴이 | 테러보이 | 작성시각 | 2015/05/04 13:29:30 |
|
|||
<?php /** * 제작: 임동덕 * 작업일: 2015-05-04 * 사용법 ------------------------------------------- $Push = new ParsePush; // 클래스 선언 $Push->setConfig( parse 앱아이디 , parse rest 키 , parse 앱이름, 디버그모드(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 ParsePush { var $config; # parse의 api설정 public function setConfig($AppID, $RestKey, $AppName, $Debug=false) { $this->config['app_id'] = $AppID; $this->config['rest_key'] = $RestKey; $this->config['app_name'] = $AppName; $this->config['debug'] = $Debug; } # 설정된 api 리셋한다. public function unsetConfig() { $this->config['auth'] = ''; $this->config['app_code'] = ''; $this->config['app_name'] = ''; $this->config['debug'] = false; } # 설정을 확인한다. public function printConfig() { $config = $this->config; return $config; } # 메시지를 발송한다. public function Send($msg, $title='', $link='', $Device='', $SetTime='now') { // 초기값 선언 $request_add = ''; $notifications_add = ''; // 통신 매쏘드 (고정) + url $method= 'push'; $url = 'https://api.parse.com/1/' . $method; // 전송 설정 if($SetTime == 'now') $SetTime = time(); else $SetTime = strtotime($SetTime); // json 전송 포맷 설정 if($Device) { $request = json_encode(array( "where" => array( "installationId" => $Device, "appName" => $this->config['app_name'], ), "data" => array( "alert" => $msg, "uri" => $link, "title" => $title ), "push_time" => $SetTime )); } else { $request = json_encode(array( "where" => array( "appName" => $this->config['app_name'], ), "data" => array( "alert" => $msg, "uri" => $link, "title" => $title ), "push_time" => $SetTime )); } // 서버로 전송 및 결과 반환 $rest = curl_init(); curl_setopt($rest,CURLOPT_URL,$url); curl_setopt($rest,CURLOPT_PORT,443); curl_setopt($rest,CURLOPT_POST,1); curl_setopt($rest,CURLOPT_POSTFIELDS,$request); curl_setopt($rest,CURLOPT_HTTPHEADER, array("X-Parse-Application-Id: " . $this->config['app_id'] , "X-Parse-REST-API-Key: " . $this->config['rest_key'], "Content-Type: application/json")); $Result['response'] = curl_exec($rest); $Result['info'] = curl_getinfo($rest); curl_close($rest); // 디버깅 모드시 결과 출력 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).'<hr>'; } } } # 기본설정 $ParsePush = new ParsePush; $ParsePush->setConfig('디바이스아이디1', '디바이스아이디2', 'Terrorboy', false); # 앱이름으로 전체 전송 $ParsePush->send('안녕? 난 내용~', '난 제목~!', 'http://example.com/'); # 다중전송 /* $Device = array('디바이스아이디1', '디바이스아이디2'); foreach($Device as $k=>$v) { if(($k%30 == 0) && $k > 0) sleep(1); $ParsePush->send('title', '난 제목~!', 'http://example.com/', $v); } */ |
|||
첨부파일 |
parse_푸시테스트용.zip (1.9 MB) |
||
다음글 | PushWoosh push 전송 클래스 (2) | ||
이전글 | [10원짜리 팁] 크롬에서 올더게이트(PG) 결제 시 ... (2) | ||
테러보이
/
2015/05/04 13:37:55 /
추천
0
생성자, 소멸자는 일부러 사용안했습니다.~
|
한대승(불의회상)
/
2015/05/04 14:19:31 /
추천
0
좋은 정보 감사 합니다. ^^
|
제우스황제
/
2015/09/04 14:53:43 /
추천
0
최근에 parse 관련 내용을 보다보니 궁금한 게 있어서 여쭤봅니다.
혹시 30req / s 라는 의미가 정확하게 어떤 의미 인가요? 1초당 30명에게 푸시가 된다는 의미 인가요? 설정에서 30req / s로 제한한 경우 초당 100 req를 날린다면 70req 는 어떻게 되나요? 에러, 또는 그냥 무시되는지 궁금합니다. |
테러보이
/
2015/09/04 15:55:32 /
추천
0
@제우스황제
제가알기로 초당 처리가 30쿼리로 제한 한다는 내용으로 알고 있습니다.( 30 req / s == 30 request / 1 second ) 저같은경우는 초당 30건이 넘을 경우 버퍼를 주어 초당 30씩 발송하도록 딜레이를 주었습니다. 또한, 전송 실패도 발송건으로 치는걸로 알고 있습니다.~ |
제우스황제
/
2015/09/08 21:44:01 /
추천
0
@테러보이 님
네 그렇군요
답변 감사합니다
|