Какой регистрационный идентификатор fcm не удался, если он предназначен для нескольких регистрационных идентификаторов
Я отправляю уведомления нескольким регистрационным идентификаторам со стороны сервера на php. Это запрос:
public function androidPushNotification($registration_ids, $title, $message) {
$msg = array (
'message' => $message,
'title' => $title
);
$fields = array (
'registration_ids' => $registration_ids,
'data' => $msg
);
$headers = array (
'Authorization: key=' . $this->API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $this->GCM_URL );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, json_encode ( $fields ) );
$result = curl_exec ( $ch );
curl_close ( $ch );
return $result;
}
Переменная registration_ids содержит два регистрационных идентификатора в массиве, один из которых взят из старой установки клиентского приложения, а другой - текущий.
Я получаю этот ответ от fcm:
{
"multicast_id": 7860323906688398625,
"success": 1,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "NotRegistered"
},
{
"message_id": "0:1478735313889582%1b153de0f9fd7ecd"
}
]
}
Как я могу узнать, какой из идентификаторов регистрации не удался?
Есть ли другой способ получить эту информацию?
С уважением!
1 answers
Я нашел ответ:
Результирующий массив находится в том же порядке, что и идентификаторы регистрации. Например, если запрос:
$fields = array (
'registration_ids' => array('123456','987654'),
'data' => array ('message' => 'This is the message','title' => 'Hi there!')
);
Пример ответа:
{
"multicast_id": 7860323906688398625,
"success": 1,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "NotRegistered"
},
{
"message_id": "0:1478735313889582%1b153de0f9fd7ecd"
}
]
}
Ошибка регистрации идентификатора 123456.
Из документации gcm:
Вот результаты JSON для 6 получателей (идентификаторы 4, 8, 15, 16, 23, и 42 соответственно) с 3 успешно обработанными сообщениями, возвращен 1 маркер канонической регистрации и 3 ошибки:
{ "multicast_id": 216, "success": 3, "failure": 3, "canonical_ids": 1, "results": [ { "message_id": "1:0408" }, { "error": "Unavailable" }, { "error": "InvalidRegistration" }, { "message_id": "1:1516" }, { "message_id": "1:2342", "registration_id": "32" }, { "error": "NotRegistered"} ] }
В этом примере:
- Первое сообщение: успех, не требуется.
- Второе сообщение: должно быть возмущено (для регистрационного маркера 8).
- Третье сообщение: произошла неустранимая ошибка (возможно, значение было повреждено в базе данных).
- Четвертое сообщение: успех, ничего не требуется.
- Пятое сообщение: успешно, но регистрационный токен должен быть обновлен в базе данных сервера (с 23 по 32).
- Шестой сообщение: регистрационный токен (42) должен быть удален из базы данных сервера, поскольку приложение было удалено из
устройство.
Надеюсь, это поможет, с уважением.