Notification Laravel indiquant « Le jeton d'enregistrement n'est pas un jeton d'enregistrement FCM valide » lors de l'intégration avec FCM
P粉985686557
P粉985686557 2023-12-13 15:19:09
0
1
477

J'ai intégré les notifications FCM (Firebase Cloud Messaging) à mon projet Laravel. J'en suis à User 模型中添加了方法 routeNotificationForFcm . Le système de notification fonctionne correctement lors de la spécification du jeton du périphérique Firebase directement dans la méthode, mais échoue lors de l'accès au jeton à partir de la base de données.

Le code de travail ajouté est le suivant.

public function routeNotificationForFcm()
{
    return ['dJQqgKlETpqCB3uxHtfUbL:APA91bFdrcXZMNH0iMjkXMoop_b_nI3xF92DU0P1nrHVQsTDK4w-OH5QR6BsnWIV-wSxSV7avzuBmLVizNyrRcKfAQz6H66JEP9rWKUeIi7m7wEZwRiuW_WdCW_LaZajdFZlxfCUonCL'];
}

Le code qui ne fonctionne pas est le suivant (requête base de données)

public function routeNotificationForFcm()
{
    return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token');
}

Le message d'erreur affiché est Le jeton d'enregistrement n'est pas un jeton d'enregistrement FCM valide

P粉985686557
P粉985686557

répondre à tous(1)
P粉301523298

Selon la documentation Laravel pluck return CollectionCollection - 所以你只需要在查询/集合上调用 pluck 后调用 toArray() 即可返回数组 - il vous suffit donc d'appeler pluck

sur la requête/collection, puis d'appeler toArray()

pour renvoyer le array $user->id, c'est tout Comme vous l'avez fait auparavant avec le jeton simulé. $this

public function routeNotificationForFcm()
{
    return $this->from('fcm_tokens')->where('user_id', $user->id)->pluck('device_token')->toArray();
}

Vous avez également appelé $user->id

, mais pas dans ce cadre. La solution est simple, vous devez transmettre la valeur ou obtenir la valeur de $this

.

public function routeNotificationForFcm()
{
    return $this->from('fcm_tokens')->where('user_id', $this->id)->pluck('device_token')->toArray();
}
FcmTokenMais je vous recommande personnellement de définir une relation distincte pour celaUser模型的相关令牌的array
public function fcmTokens()
{
    return $this->hasMany(FcmToken::class);
}

FcmToken

- Juste une supposition sur la façon dont vous avez nommé votre modèle. Vous pouvez ensuite le réutiliser comme ceci pour renvoyer un tableau🎜 de jetons associés pour un modèle User🎜 spécifique
public function routeNotificationForFcm()
{
    return $this->fcmTokens()->pluck('device_token')->toArray();
}
🎜Enfin, si vous structurez votre code ainsi, vous aurez une relation générale et utiliserez cette relation pour rendre votre code plus flexible. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!