mysql — получает отказавший токен устройства в apns.Stack Overflow

Привет ребята ,
Это мой файл Apns.php.

      <?php
//error_reporting(E_ALL);
# -*- coding: utf-8 -*-
##
##     Copyright (c) 2010 Benjamin Ortuzar Seconde <bortuzar@gmail.com>
##
##     This file is part of APNS.
##
##     APNS is free software: you can redistribute it and/or modify
##     it under the terms of the GNU Lesser General Public License as
##     published by the Free Software Foundation, either version 3 of
##     the License, or (at your option) any later version.
##
##     APNS is distributed in the hope that it will be useful,
##     but WITHOUT ANY WARRANTY; without even the implied warranty of
##     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##     GNU General Public License for more details.
##
##     You should have received a copy of the GNU General Public License
##     along with APNS.  If not, see <http://www.gnu.org/licenses/>.
##
##
## $Id: Apns.php 168 2010-08-28 01:24:04Z Benjamin Ortuzar Seconde $
##

/**
* Apple Push Notification Server
*/
class Apns
{
protected $server;
protected $keyCertFilePath;
protected $passphrase;
protected $stream;/**
* Connects to the APNS server with a certificate and a passphrase
*
* @param <string> $server
* @param <string> $keyCertFilePath
* @param <string> $passphrase
*/
function __construct($server, $keyCertFilePath ,$passphrase){

$this->server = $server;
$this->keyCertFilePath = $keyCertFilePath;
$this->passphrase = $passphrase;
$this->connect();
}/**
* Connects to the server with the certificate and passphrase
*
* @return <void>
*/
private function connect(){

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $this->keyCertFilePath);
// assume the private key passphase was removed.
stream_context_set_option($ctx, 'ssl', 'passphrase', $this->passphrase);
$this->stream = stream_socket_client($this->server, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
if (!$this->stream) {
throw new Exception("<br/>Failed to connect $err $errstr");
}
else {
//print "<br/>Opening connection to: {$this->server}";
}
}
/**
* Sends a message to device
*
* @param <string> $deviceToken
* @param <string> $message
* @param <int> $badge
* @param <string> $sound
*/
public function sendMessage($deviceToken, $message, $badge = NULL, $sound = NULL,$uid=NULL,$type=NULL,$sid=NULL,$io=NULL){

//generate the payload
$payload = $this->generatePayload($message, $badge, $sound,$uid,$type,$sid,$io);
//send payload to the device.
$this->sendPayload($deviceToken, $payload);
}
/*
*
* Generates the payload
*
* @param <string> $message
* @param <int> $badge
* @param <string> $sound
* @return <string>
*/
protected function generatePayload($message, $badge = NULL, $sound = NULL,$uid=NULL,$type=NULL,$sid=NULL,$io=NULL) {
$body = array();
//message
$body['aps'] = array('alert' => $message);
//badge
if ($badge) {
$body['aps']['badge'] = $badge;
}
//sound
if ($sound) {
$body['aps']['sound']=$sound;
}
if ($uid) {
$body['aps']['uid'] = $uid;
}
if ($type) {
$body['aps']['type'] = $type;
}
if ($sid!=NULL) {
$body['aps']['sid'] = $sid;
}
if ($io!=NULL) {
$body['aps']['io'] = $io;
}
$payload = json_encode($body);

echo "<pre>"; print_r($payload);die;

return $payload;
}
/**
* Writes the contents of payload to the file stream
*
* @param <string> $deviceToken
* @param <string> $payload
*/
protected function sendPayload($deviceToken, $payload){
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
//$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ','', $deviceToken)) . pack("n",strlen($payload)) . $payload;
fwrite($this->stream, $msg);
}
/**
* Gets an array of feedback tokens
*
* @return <array>
*/
public function getFeedbackTokens() {
$feedback_tokens = array();
//and read the data on the connection:
while(!feof($this->stream)) {
$data = fread($this->stream, 38);
if(strlen($data)) {
$feedback_tokens[] = unpack("N1timestamp/n1length/H*devtoken", $data);
}
}
return $feedback_tokens;
}
/**
* Closes the stream
*/
function __destruct(){
//  print "<br/>Clossing connection to: {$this->server}";
fclose($this->stream);
}
}//end of class
?>
  • Я хочу найти, какое устройство не смогло получить уведомление IOS.
  • Некоторые устройства получают уведомления, а некоторые не могут получить.
  • Я хочу получить неисправный токен устройства, на который не пришло уведомление.
  • И неисправный маркер устройства вставляется в мою базу данных. Как я могу ?
  • Можете ли вы помочь мне и дать правильное решение для получения неисправных устройств токенов. ?

  • Заранее спасибо !

0

Решение

Apple не скажет вам следующее:

  1. Не скажет, было ли сообщение успешно отправлено или нет
    2. Не скажет, отказался ли пользователь от Push-уведомлений.
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector