Pemberitahuan Laravel yang menunjukkan "Token pendaftaran bukan token pendaftaran FCM yang sah" apabila disepadukan dengan FCM
P粉985686557
P粉985686557 2023-12-13 15:19:09
0
1
558

Saya telah menyepadukan pemberitahuan FCM (Firebase Cloud Messaging) dengan projek Laravel saya. Saya di User 模型中添加了方法 routeNotificationForFcm . Sistem pemberitahuan berfungsi dengan baik apabila menentukan token peranti firebase secara langsung dalam kaedah, tetapi gagal apabila mengakses token daripada pangkalan data.

Kod kerja yang ditambah adalah seperti berikut.

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

Kod yang tidak berfungsi adalah seperti berikut (pertanyaan pangkalan data)

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

Mesej ralat yang dipaparkan ialah Token pendaftaran bukan token pendaftaran FCM yang sah

P粉985686557
P粉985686557

membalas semua(1)
P粉301523298

Mengikut Laravel dokumentasi pluck kembalikan CollectionCollection - 所以你只需要在查询/集合上调用 pluck 后调用 toArray() 即可返回数组 - jadi anda hanya perlu memanggil pluck

pada pertanyaan/collection dan kemudian panggil toArray()

untuk mengembalikan array $user->id, itu sahaja Seperti yang anda lakukan sebelum ini dengan token olok-olok. $this

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

Anda juga memanggil $user->id

, tetapi tidak dalam skop ini. Penyelesaiannya mudah, anda perlu lulus nilai atau dapatkan nilai daripada $this

.

public function routeNotificationForFcm()
{
    return $this->from('fcm_tokens')->where('user_id', $this->id)->pluck('device_token')->toArray();
}
FcmTokenTetapi saya secara peribadi mengesyorkan anda untuk menentukan hubungan yang berasingan untuk iniUser模型的相关令牌的array
public function fcmTokens()
{
    return $this->hasMany(FcmToken::class);
}

FcmToken

- Hanya tekaan tentang cara anda menamakan model anda. Anda kemudian boleh menggunakannya semula seperti ini untuk mengembalikan array🎜 token berkaitan untuk model User🎜 tertentu
public function routeNotificationForFcm()
{
    return $this->fcmTokens()->pluck('device_token')->toArray();
}
🎜Akhir sekali, jika anda menstruktur kod anda seperti ini, anda akan mempunyai perhubungan umum dan menggunakan perhubungan ini untuk menjadikan kod anda lebih fleksibel. 🎜
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan