2012-05-03 7 views
1

PNを送信するためにAPNS-PHPをうまく使用しました。Code IgniterプロジェクトにAPNS-PHPを含めるにはどうすればいいですか?

しかし、コードイグナイタープロジェクト (コマンドラインから呼び出されるコントローラーの内側)に追加する方法がちょっと残っています。

呼び出し:エラーで

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 

私はそれがオートローディング紛争の一部のようなものだと仮定していますか?しかし、私は 本当に確実ではない!

何か助けが素晴らしいだろう - 私は多くの運がないGoogleをトロールした!ここで

は、私は関数の内部で使用しようとしているしましたラインです:

require_once APPPATH.'/third_party/ApnsPHP/Autoload.php'; 

ここで私はイオンの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; 
     } 
    } 
} 
+0

あなたがLIBで使用する記述したコードを投稿することができますか?何らかの理由で、これはCIデータベース・クラスをインスタンス化しようとしています。 –

+0

私は、Autonoadのための別の場所でオートロード機能を追加しました - それは矛盾しているようです。 – Rich

答えて

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')); 
+0

ソリューションのように見える - 私はもはやそのプロジェクトのコードイグナイターを使用しているとは思わない! :/ – Rich

+0

ここから私はこれらのサードパーティのファイルを入手します...私にそのリンクを教えてください –

関連する問題