APN / iOS:设备令牌什么时候变得无效?

时间:2016-03-31 07:34:01

标签: php ios swift cron apple-push-notifications

我的iOS应用程序应支持通过APN推送通知,我已将我的应用程序卸载并重新安装到我的iPhone 6S中三次,这意味着我在一个适当的MySQL表中有三个不同的情侣<device-id, device-token>,其中只有last(最大id)是最新的,因此是有效的。然后,我写了这个PHP脚本,我在StackOverflow中找到它,它应该返回要从数据库中删除的无效标记:

<?php
  $cert_file = './superbar-development.pem';

  $stream_context = stream_context_create();
  stream_context_set_option($stream_context, 'ssl', 'local_cert', $cert_file);

  $apns_connection =   stream_socket_client('feedback.sandbox.push.apple.com:2196', $error_code,       $error_message, 60, STREAM_CLIENT_CONNECT, $stream_context);

  if($apns_connection === false) {
    apns_close_connection($apns_connection);
    error_log ("APNS Feedback Request Error: $error_code - $error_message", 0);
  }

  $feedback_tokens = array();

  while(!feof($apns_connection)) {
    $data = fread($apns_connection, 38);
    if(strlen($data)) {
      $feedback_tokens[] = unpack("N1timestamp/n1length/H*devtoken", $data);
    }
  }
  fclose($apns_connection);
  print_r($feedback_tokens);
?>

但是我总是得到并清空数组,这意味着前两对<device-id, device-token>尚未被检测为无效。这需要多长时间?我问这个是因为我已经看到连接到feedback.sandbox.push.apple.com:2196并且从public Cursor fetchAllFreeGradeNr(String grade) { open(); String query; query = "SELECT DISTINCT " + C_GRADE + "," + C_GRADE_NR + "" + " FROM '" + TABLE_NAME_PAID + "'" + " WHERE " + C_GRADE + " = '" + grade + "' ORDER BY " + C_GRADE_NR + " ASC"; Cursor mCursor = mDb.rawQuery(query, null); return mCursor; } 读取非常慢,所以我不想在每次发送推送通知时都要这样做。你对此有所了解吗?谢谢。

0 个答案:

没有答案