Home >Backend Development >PHP Tutorial >apns-php
sample_push.php<?php/** * @file * sample_push.php * * Push demo * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://code.google.com/p/apns-php/wiki/License * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to aldo.armiento@gmail.com so we can send you a copy immediately. * * @author (C) 2010 Aldo Armiento (aldo.armiento@gmail.com) * @version $Id$ */// Adjust to your timezonedate_default_timezone_set('Europe/Rome');// Report all PHP errorserror_reporting(-1);// Using Autoload all classes are loaded on-demandrequire_once 'ApnsPHP/Autoload.php';// Instanciate a new ApnsPHP_Push object$push = new ApnsPHP_Push( ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, 'server_certificates_bundle_sandbox.pem');// Set the Root Certificate Autority to verify the Apple remote peer$push->setRootCertificationAuthority('entrust_root_certification_authority.pem');// Connect to the Apple Push Notification Service$push->connect();// Instantiate a new Message with a single recipient$message = new ApnsPHP_Message('1e82db91c7ceddd72bf33d74ae052ac9c84a065b35148ac401388843106a7485');// Set a custom identifier. To get back this identifier use the getCustomIdentifier() method// over a ApnsPHP_Message object retrieved with the getErrors() message.$message->setCustomIdentifier("Message-Badge-3");// Set badge icon to "3"$message->setBadge(3);// Set a simple welcome text$message->setText('Hello APNs-enabled device!');// Play the default sound$message->setSound();// Set a custom property$message->setCustomProperty('acme2', array('bang', 'whiz'));// Set another custom property$message->setCustomProperty('acme3', array('bing', 'bong'));// Set the expiry value to 30 seconds$message->setExpiry(30);// Add the message to the message queue$push->add($message);// Send all messages in the message queue$push->send();// Disconnect from the Apple Push Notification Service$push->disconnect();// Examine the error message container$aErrorQueue = $push->getErrors();if (!empty($aErrorQueue)) { var_dump($aErrorQueue);}
sample_feedback.php
<?php/** * @file * sample_feedback.php * * Feedback demo * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://code.google.com/p/apns-php/wiki/License * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to aldo.armiento@gmail.com so we can send you a copy immediately. * * @author (C) 2010 Aldo Armiento (aldo.armiento@gmail.com) * @version $Id$ */// Adjust to your timezonedate_default_timezone_set('Europe/Rome');// Report all PHP errorserror_reporting(-1);// Using Autoload all classes are loaded on-demandrequire_once 'ApnsPHP/Autoload.php';// Instanciate a new ApnsPHP_Feedback object$feedback = new ApnsPHP_Feedback( ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, 'server_certificates_bundle_sandbox.pem');// Connect to the Apple Push Notification Feedback Service$feedback->connect();$aDeviceTokens = $feedback->receive();if (!empty($aDeviceTokens)) { var_dump($aDeviceTokens);}// Disconnect from the Apple Push Notification Feedback Service$feedback->disconnect();
sample_server.php
<?php/** * @file * sample_server.php * * Push server demo * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://code.google.com/p/apns-php/wiki/License * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to aldo.armiento@gmail.com so we can send you a copy immediately. * * @author (C) 2010 Aldo Armiento (aldo.armiento@gmail.com) * @version $Id$ */// Adjust to your timezonedate_default_timezone_set('Europe/Rome');// Report all PHP errorserror_reporting(-1);// Using Autoload all classes are loaded on-demandrequire_once 'ApnsPHP/Autoload.php';// Instanciate a new ApnsPHP_Push object$server = new ApnsPHP_Push_Server( ApnsPHP_Abstract::ENVIRONMENT_SANDBOX, 'server_certificates_bundle_sandbox.pem');// Set the Root Certificate Autority to verify the Apple remote peer$server->setRootCertificationAuthority('entrust_root_certification_authority.pem');// Set the number of concurrent processes$server->setProcesses(2);// Starts the server forking the new processes$server->start();// Main loop...$i = 1;while ($server->run()) { // Check the error queue $aErrorQueue = $server->getErrors(); if (!empty($aErrorQueue)) { // Do somethings with this error messages... var_dump($aErrorQueue); } // Send 10 messages if ($i <= 10) { // Instantiate a new Message with a single recipient $message = new ApnsPHP_Message('1e82db91c7ceddd72bf33d74ae052ac9c84a065b35148ac401388843106a7485'); // Set badge icon to "i" $message->setBadge($i); // Add the message to the message queue $server->add($message); $i++; } // Sleep a little... usleep(200000);}
Introduction
To send Push Notifications to a device, you need a device token. Device token is generated by Apple from Device ID and Application ID, so this is unique per device and per application.
DeprecatedPlease, see the Objective-C Demo Project at http://code.google.com/p/apns-php/source/browse/trunk/Objective-C%20Demo
Code
/** * @file * Application delegate implementation. * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://code.google.com/p/apns-php/wiki/License * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to aldo.armiento@gmail.com so we can send you a copy immediately. * * @version $Id$ */#import "AppDelegate.h"@implementation AppDelegate@synthesize window;#pragma mark -#pragma mark Application delegate- (void)applicationDidFinishLaunching:(UIApplication *)application { [window makeKeyAndVisible]; #if !TARGET_IPHONE_SIMULATOR [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; #endif}#pragma mark -#pragma mark Remote notifications- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // You can send here, for example, an asynchronous HTTP request to your web-server to store this deviceToken remotely. NSLog(@"Did register for remote notifications: %@", deviceToken);}- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"Fail to register for remote notifications: %@", error);}#pragma mark -#pragma mark Memory management/** * Deallocates the memory occupied. */- (void)dealloc { [window release]; [super dealloc];}@end