APNS PHP推送通知无法正常工作.得到超时
发布时间:2020-12-13 22:53:42 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试在生产环境上发送推送通知,但它无法正常工作.下面是我正在尝试的代码,它会超时.没有错误,没有异常被抛出. 这有什么问题? 注意:当我使用Sandbox(ENVIRONMENT_SANDBOX)和开发证书文件发送推送通知时,它可以正常工作.但是,生产证书文件和ENVIRONMEN
我正在尝试在生产环境上发送推送通知,但它无法正常工作.下面是我正在尝试的代码,它会超时.没有错误,没有异常被抛出.
这有什么问题? 注意:当我使用Sandbox(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' ); 解决方法
要使用生产环境,您的应用必须使用您的分发证书进行签名.测试此功能的唯一方法是提交到App Store并下载应用程序的App Store版本;或使用AdHoc构建.当您的应用程序使用开发证书签名时,您无法使用生产推送环境.
如果您已完成所有这些操作,请确保您没有使用与从开发环境获得的生产环境相同的设备令牌.他们将是不同的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |