Ric*_*ich 1 php codeigniter apns-php
我已成功使用APNS-PHP发送PN - 这太棒了!
但是,我对如何将其添加到Code Igniter项目(在将从命令行调用的控制器内部)中有点困惑.
呼叫:
require_once APPPATH.'/third_party/ApnsPHP/Autoload.php'; 
导致错误:
Fatal error: Uncaught exception 'Exception' with message 'Class file 
'XXXXXXX/application/third_party/CI/DB/mysql/result.php' does not 
exists' in XXXXXXX/application/third_party/ApnsPHP/Autoload.php:49 
我假设它是某种自动加载冲突?但我不太确定!
任何帮助都会很棒 - 我没有太多运气就拖着谷歌!
这是我试图在函数中使用的行:
require_once APPPATH.'/third_party/ApnsPHP/Autoload.php';
这是我为加载Ion Auth的libs添加的__autoload函数:
function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH.'core/'.$class.EXT))
        {
            include $file;
        }
        else if (file_exists($file = APPPATH.'libraries/'.$class.EXT))
        {
            include $file;
        }
        else if (file_exists($file = APPPATH.'core/base_controllers/'.$class.EXT))
        {
            include $file;  
        }
    }
}
小智 6
没有对库进行其他更改,这对我有用.它稍微回避了CI,但仍然允许你加载APNS-PHP作为模型:
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
class Notification_model extends CI_Model {
    protected $apnsDir = '';
    // -----------------------------------------------
    /**
     * Setup some basic stuffs
     * @param void
     * @return void
     * @access public 
     */
    public function __construct() {
        parent::__construct();
        /* get all the APNS files */
        $this->apnsDir = $_SERVER['DOCUMENT_ROOT'].'/application/third_party/ApnsPHP/';
        $this->_apns_req();
        return;
    } /* /__construct() */
    // -----------------------------------------------
    /**
     * Will send the actual iOS notification to the user
     * @param $token string iOS device token
     * @param $msg string 
     * @param $attrs array Key/value pairs to be sent as meta with APN
     * @return void
     * @access public
     */
    private function send_ios($token=null, $msg=null, $attrs=array()) {
        if(!$token || !$msg) return;
        // Instantiate a new ApnsPHP_Push object
        $push = new ApnsPHP_Push(
            ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
            $this->apnsDir.'SSL/server_certificates_bundle_sandbox.pem'
        );
        // Set the Provider Certificate passphrase
        // $push->setProviderCertificatePassphrase('tablecan29');
        // Set the Root Certificate Autority to verify the Apple remote peer
        $push->setRootCertificationAuthority($this->apnsDir.'SSL/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($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("Message-Badge-3");
        // Set badge icon to "3"
        // $message->setBadge(0);
        // Set a simple welcome text
        $message->setText($msg);
        // Play the default sound
        $message->setSound();
        // Set custom properties
        if( is_array($attrs) && count($attrs) )
        {
            foreach( $attrs as $attr_key => $attr_val )
            {
                $message->setCustomProperty($attr_key, $attr_val);
            }
        }
        // Set the expiry value - in seconds
        $message->setExpiry(120);
        // 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);
        // }
        return TRUE;
    } /* /send_ios() */
    // -----------------------------------------------
    private function _apns_req() {
        require_once $this->apnsDir.'Abstract.php';
        require_once $this->apnsDir.'Exception.php';
        require_once $this->apnsDir.'Feedback.php';
        require_once $this->apnsDir.'Message.php';
        require_once $this->apnsDir.'Log/Interface.php';
        require_once $this->apnsDir.'Log/Embedded.php';
        require_once $this->apnsDir.'Message/Custom.php';
        require_once $this->apnsDir.'Message/Exception.php';
        require_once $this->apnsDir.'Push.php';
        require_once $this->apnsDir.'Push/Exception.php';
        require_once $this->apnsDir.'Push/Server.php';
        require_once $this->apnsDir.'Push/Server/Exception.php';
        return;
    } /* /_apns_req() */
} /* /Notification_model{} */
/* End of file notification_model.php */
/* Location: ./application/models/notification_model.php */
用法示例:
$this->load->model('notification_model');
$this->notification_model->send_ios($token, 'Test Message', array('custom_var' => 'val'));
| 归档时间: | 
 | 
| 查看次数: | 3805 次 | 
| 最近记录: |