Maison  >  Questions et réponses  >  le corps du texte

Notification Laravel indiquant « Le jeton d'enregistrement n'est pas un jeton d'enregistrement FCM valide » lors de l'intégration avec FCM

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粉985686557P粉985686557334 Il y a quelques jours536

répondre à tous(1)je répondrai

  • P粉301523298

    P粉3015232982023-12-14 14:09:21

    Selon la documentation Laravel < code>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. 🎜

    répondre
    0
  • Annulerrépondre