Beispiel #1
0
 public function testSend()
 {
     $Message = new PayloadMessage();
     $Message->setType(56);
     $Client = new Client();
     try {
         $Client->send($Message);
         $this->fail();
     } catch (GCMFormatException $Ex) {
     }
 }
Beispiel #2
0
 * 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);
Beispiel #3
0
 /**
  * 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());
 }