public function testSend() { $Message = new PayloadMessage(); $Message->setType(56); $Client = new Client(); try { $Client->send($Message); $this->fail(); } catch (GCMFormatException $Ex) { } }
* See the License for the specific language governing permissions and * limitations under the License. * * GCM message sending example * @author alxmsl * @date 5/28/13 */ include '../vendor/autoload.php'; use alxmsl\Google\GCM\Client; use alxmsl\Google\GCM\Message\PayloadData; use alxmsl\Google\GCM\Message\PayloadMessage; // Create new payload class final class NewPayloadData extends PayloadData { protected function getDataFields() { return array('test' => 'test_01'); } } // Create payload instance $Data = new NewPayloadData(); // Create and initialize message instance $Message = new PayloadMessage(); $Message->setRegistrationIds('DeV1CeT0kEN')->setType(PayloadMessage::TYPE_JSON)->setData($Data); // Create GCM client $Client = new Client(); $Client->getRequest()->setConnectTimeout(60); $Client->setAuthorizationKey('aUTH0R1Z4t1oNKEy'); // ...and send the message $Response = $Client->send($Message); var_dump($Response);
/** * Send GCM message method * @param PayloadMessage $Message GCM message instance * @return Response sent response instance * @throws GCMFormatException when request or response format was incorrect * @throws GCMUnauthorizedException when was incorrect authorization key * @throws GCMServerError when something wrong on the GCM server * @throws GCMUnrecoverableError when GCM server is not available */ public function send(PayloadMessage $Message) { switch ($Message->getType()) { case PayloadMessage::TYPE_PLAIN: $this->getRequest()->setContentTypeCode(Request::CONTENT_TYPE_UNDEFINED); $this->getRequest()->addHeader('Content-Type', self::CONTENT_TYPE_PLAIN_TEXT); break; case PayloadMessage::TYPE_JSON: $this->getRequest()->setContentTypeCode(Request::CONTENT_TYPE_JSON); $this->getRequest()->addHeader('Content-Type', self::CONTENT_TYPE_JSON); break; default: throw new GCMFormatException('unsupported request format code \'' . $Message->getType() . '\''); } $this->getRequest()->setPostData($Message->export()); try { $result = $this->getRequest()->send(); Response::$type = $Message->getType(); return Response::initializeByString($result); } catch (HttpClientErrorCodeException $Ex) { switch ($Ex->getCode()) { case '400': throw new GCMFormatException('invalid JSON request with message \'' . $Ex->getMessage() . '\''); case '401': throw new GCMUnauthorizedException('invalid authorization key \'' . $this->getAuthorizationKey() . '\''); default: throw $Ex; } } catch (HttpServerErrorCodeException $Ex) { switch ($Ex->getCode()) { case '500': throw new GCMUnrecoverableError('unrecoverable GCM server error'); default: $headers = $this->getRequest()->getResponseHeaders(); throw new GCMServerError(@$headers['Retry-After']); } } }
public function testPayloadDataType() { $Data = new CustomPayloadData([]); $this->assertEquals(PayloadMessage::TYPE_PLAIN, $Data->getType()); $Message = new PayloadMessage(); $Message->setData($Data); $Message->setType(PayloadMessage::TYPE_JSON); $this->assertEquals(PayloadMessage::TYPE_JSON, $Data->getType()); $Message->setType(PayloadMessage::TYPE_PLAIN); $this->assertEquals(PayloadMessage::TYPE_PLAIN, $Data->getType()); }