Beispiel #1
0
 public function SendUserOrderMessage($order, $message)
 {
     $user = $order->user->get();
     $user_apn_token = UserApnToken::getInstanceByUserID($user->getID());
     if (!isset($user_apn_token)) {
         return false;
     }
     $deviceToken = str_replace(' ', '', $user_apn_token->token->get());
     $ctx = stream_context_create();
     stream_context_set_option($ctx, 'ssl', 'local_cert', getcwd() . '/apple_apn/IlluminataDevCerAndKey.pem');
     stream_context_set_option($ctx, 'ssl', 'passphrase', AppleAPNService::$passphrase);
     $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
     if (!$fp) {
         throw new Exception("Failed to connect: {$err} {$errstr}" . PHP_EOL);
     }
     $body['aps'] = array('alert' => $message, 'title' => 'Order message', 'type' => strval(AppleAPNService::$MESSAGE_TYPE_USER_ORDER_MESSAGE), 'targetID' => $order->getID(), 'url' => 'http://www.illuminataeyewear.com', 'sound' => 'default');
     $payload = json_encode($body);
     $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
     $result = fwrite($fp, $msg, strlen($msg));
     fclose($fp);
     if (!$result) {
         return false;
     } else {
         return true;
     }
     //throw new Exception('Message successfully delivered' . PHP_EOL);
 }
Beispiel #2
0
 public function save()
 {
     $request = $this->application->getRequest();
     $userID = $request->get('userID');
     $token = $request->get('token');
     if (!isset($token)) {
         throw new Exception('Token is required');
     }
     if (isset($userID) && intval($userID) > 0) {
         $user_apn_token = UserApnToken::getInstanceByUserID($userID);
         if (!isset($user_apn_token)) {
             $user_apn_token = UserApnToken::getInstanceByToken($token);
             if (!isset($user_apn_token)) {
                 $user_apn_token = UserApnToken::getNewInstance($userID, $token);
                 $user_apn_token->save();
             } else {
                 $user_apn_token->userID->set($userID);
                 $user_apn_token->save();
             }
         } else {
             $current_token = UserApnToken::getInstanceByToken($token);
             if (isset($current_token)) {
                 $current_token->delete();
                 $current_token->save();
             }
             //$user_apn_token = UserApnToken::getNewInstance($userID, $token);
             $user_apn_token->token->set($token);
             $user_apn_token->save();
         }
     } else {
         $token = UserApnToken::getNewInstance(null, $token);
         $token->save();
     }
     $response = new LiveCartSimpleXMLElement('<response datetime="' . date('c') . '"></response>');
     return new SimpleXMLResponse($response);
 }