我的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;
}
读取非常慢,所以我不想在每次发送推送通知时都要这样做。你对此有所了解吗?谢谢。