Closed nicolasvahidzein closed 4 years ago
Nevermind, i had not saved my file, it was an old token. Sorry for the bother and thanks again!!!
Sometimes one has to just write it down to see it. I love Rubber Duck debugging and am glad you figured it out! 🥳 Anytime again 😊
@jeromegamez Thank you Jerome. What is rubber duck?
@jeromegamez LOL i should be ashamed, i have a whale, dolphin, octopus and i yet i still failed!!!
In software engineering, rubber duck debugging is a method of debugging code. The name is a reference to a story in the book The Pragmatic Programmer in which a programmer would carry around a rubber duck and debug their code by forcing themselves to explain it, line-by-line, to the duck.[1] Many other terms exist for this technique, often involving different (usually) inanimate objects.
Many programmers have had the experience of explaining a problem to someone else, possibly even to someone who knows nothing about programming, and then hitting upon the solution in the process of explaining the problem.
https://en.wikipedia.org/wiki/Rubber_duck_debugging
😅
Thanks @jeromegamez i never knew it had a name, i do this often by just talking to myself like a crazy person but actually talking to someone like i did yesterday with my mentor Jonathan White it helped a lot.
I am also facing this issue
@RahulDey12 Without more info, the token you‘re using is on of these:
Please make sure that you‘re using a current registration token of a device that‘s registered with your project.
How can I handle refresh token
check your token @RahulDey12 i made the same mistake.
@RahulDey12 do it on your device or frontend, it's not something you do in your backend.
From the error docs at https://firebase.google.com/docs/cloud-messaging/send-message#admin
A previously valid registration token can be unregistered for a variety of reasons, including:
The client app unregistered itself from FCM.
The client app was automatically unregistered. This can happen if the user uninstalls the application or, on iOS, if the APNS Feedback Service reported the APNS token as invalid.
The registration token expired. For example, Google might decide to refresh registration tokens or the APNS token may have expired for iOS devices.
The client app was updated, but the new version is not configured to receive messages.
For all these cases, remove this registration token and stop using it to send messages.
Ok so i ran a cron job which deletes all invalid token on midnight from my database
@RahulDey12 can you share how you delete invalid tokens? How do you even know a token is invalid?
@nicolasvahidzein Depending on how you are sending the messages solutions could look like this:
use Kreait\Firebase\Exception\Messaging\InvalidArgument;
use Kreait\Firebase\Exception\Messaging\NotFound;
try {
$messaging->send($message, $token);
} catch (NotFound $e) {
// $token is not registered to the project (any more)
// Handle the token (e.g. delete it in a local database)
} catch (InvalidArgument $e) {
// $token is not a *valid* registration token, meaning
// the format is invalid, OR the message was invalid
}
$report = $messaging->sendMulticast($message, $tokens);
foreach ($report->unknownTokens() as $unknownToken) {
// Handle unknown token
}
foreach ($report->invalidTokens() as $invalidToken) {
// Handle invalid tokens
}
@nicolasvahidzein It is very simple to check the Invalid token. Checkout this link https://developers.google.com/instance-id/reference/server
But @jeromegamez 's method is more efficient I think.
Thank you very much Jerome @jeromegamez. You as well @RahulDey12 .
I use Kreait\Firebase\Exception\Messaging\InvalidMessage instead of InvalidArgument because the error message said InvalidMessage, not InvalidArgument. thank you btw.
@nicolasvahidzein Depending on how you are sending the messages solutions could look like this:
When sending to a single token
use Kreait\Firebase\Exception\Messaging\InvalidArgument; use Kreait\Firebase\Exception\Messaging\NotFound; try { $messaging->send($message, $token); } catch (NotFound $e) { // $token is not registered to the project (any more) // Handle the token (e.g. delete it in a local database) } catch (InvalidArgument $e) { // $token is not a *valid* registration token, meaning // the format is invalid, OR the message was invalid }
When sending to multiple tokens
$report = $messaging->sendMulticast($message, $tokens); foreach ($report->unknownTokens() as $unknownToken) { // Handle unknown token } foreach ($report->invalidTokens() as $invalidToken) { // Handle invalid tokens }
@rahmat-ihsan This issue is over two years old, with a new major release in between. Please refer to the current documentation at https://firebase-php.readthedocs.io/en/stable/cloud-messaging.html#validating-messages
If you find an error in the documentation somewhere, feel free to create a PR, thanks! 🙏
Hello, thank you for your great package.
i retrieve my token properly from flutter and i confirm it is correct by sending a test message on firebase console. I get it on my device properly.
What could be my error?
[2020-04-02 01:47:21] local.ERROR: The registration token is not a valid FCM registration token {"userId":1,"exception":"[object] (Kreait\Firebase\Exception\Messaging\InvalidMessage(code: 400): The registration token is not a valid FCM registration token at D:\WebServer\ZeinTekWebServices\liveroot\merlin-core\vendor\kreait\firebase-php\src\Firebase\Exception\Messaging\InvalidMessage.php:43) [stacktrace]
Thank you