我試圖在生產環境中發送推送通知,但它不起作用。下面是我正在嘗試的代碼,它會超時。沒有錯誤,沒有例外被拋出。 這有什麼問題?APNS PHP推送通知不起作用。獲取超時
注意:當我使用沙盒(ENVIRONMENT_SANDBOX
)和開發證書文件發送推送通知時,它可以工作。但生產證書文件和ENVIRONMENT_PRODUCTION
不起作用。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
/**
* @param string $device_token unique device token
* @param string $custom_message message that needs to be pushed
* @param string $push_service which service to use (ApnsPHP/UrbanAirship)
*
* @return bool
* @throws ApnsPHP_Exception
* @throws ApnsPHP_Message_Exception
* @throws ApnsPHP_Push_Exception
* @throws Exception
*/
function send_apple_push_notification_test($device_token, $custom_message, $push_service = 'ApnsPHP') {
if (empty($device_token) || empty($custom_message)) {
return false;
}
// Report all PHP errors
error_reporting(-1);
// Adjust to your time-zone
date_default_timezone_set('America/New_York');
// Using Autoload all classes are loaded on-demand
require_once 'includes/ApnsPHP/Autoload.php';
try {
// Instantiate a new ApnsPHP_Push object
$push = new ApnsPHP_Push(
ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, '/home/xxxxx/public_html/wp-content/themes/yyyyyy/includes/ApnsPHP-pem/AppPushNotify.pem'
);
// Set the Root Certificate Authority to verify the Apple remote peer
$push->setRootCertificationAuthority('/home/xxxxx/public_html/wp-content/themes/yyyyyy/includes/ApnsPHP-pem/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_Custom((string) $device_token);
// 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("xxxyyyzzz-" . time());
// Set a simple welcome text
$message->setText((string) $custom_message);
// Play the default sound
$message->setSound();
// Set the expiry value to 30 seconds
$message->setExpiry(60);
// Set the "View" button title.
$message->setActionLocKey('See the message.');
// 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();
print_r($aErrorQueue);
return true;
} catch (Exception $e) {
print_r($e->getMessage());
}
return false;
}
echo "start";
send_apple_push_notification_test('20fcc5090eb1f539ac0fddd345r4d0c50e5bca071b742d3d9833f16dd97adeb', 'Test Msg for Production');
這看起來像一個很好的問題,但我懷疑有很多PHP開發人員需要經驗來回答它。希望我能幫上忙。 – JSON 2014-10-15 16:43:17
這有幫助嗎? http://stackoverflow.com/questions/19031862/apnsphp-push-notifications-working-in-development-but-not-in-production – andy 2014-10-16 19:50:57
審閱它。 Thx Andy。 – Subharanjan 2014-10-17 13:09:31