Heim  >  Fragen und Antworten  >  Hauptteil

Laravel-Benachrichtigung mit der Meldung „Registrierungstoken ist kein gültiges FCM-Registrierungstoken“ bei der Integration mit FCM

Ich habe FCM-Benachrichtigungen (Firebase Cloud Messaging) in mein Laravel-Projekt integriert. Ich bin bei User 模型中添加了方法 routeNotificationForFcm . Das Benachrichtigungssystem funktioniert einwandfrei, wenn das Firebase-Gerätetoken direkt in der Methode angegeben wird, schlägt jedoch fehl, wenn aus der Datenbank auf das Token zugegriffen wird.

Der hinzugefügte Arbeitscode lautet wie folgt.

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

Der Code, der nicht funktioniert, ist wie folgt (Datenbankabfrage)

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

Die angezeigte Fehlermeldung lautet: Der Registrierungstoken ist kein gültiger FCM-Registrierungstoken

P粉985686557P粉985686557334 Tage vor535

Antworte allen(1)Ich werde antworten

  • P粉301523298

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

    根据 Laravel 文档 < code>pluck return Collection - 所以你只需要在查询/集合上调用 pluck 后调用 toArray() 即可返回数组,就像您之前对模拟令牌所做的那样。

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

    您还调用了$user->id,但在此范围内没有。 解决方案很简单,您需要传递值或从 $this 获取值。

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

    但我个人建议您为此定义单独的关系

    public function fcmTokens()
    {
        return $this->hasMany(FcmToken::class);
    }

    FcmToken - 只是猜测您如何命名模型。 然后您可以像这样重用它来返回特定User模型的相关令牌的array

    public function routeNotificationForFcm()
    {
        return $this->fcmTokens()->pluck('device_token')->toArray();
    }

    最后,如果您像这样构建代码,您将拥有一般关系,并利用这种关系使您的代码更加灵活。

    Antwort
    0
  • StornierenAntwort