Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

📱 Tõukemärguannete saatmine Google FCM-i ja PHP abil: 2026. aasta juhend

📱 Tõukemärguannete saatmine Google FCM-i ja PHP abil: 2026. aasta juhend

Paigaldad rakenduse ja päev hiljem oled selle unustanud. Kasutajate hoidmine on mobiiliarenduse üks teravamaid väljakutseid: ilma välise tõuketa lihtsalt ei tule inimestele meelde rakendust uuesti avada.

Tõukemärguanded lahendavad selle probleemi otse. Üks lühike signaal lukustuskuval ja kasutaja naaseb sinu sisu või tegevuse juurde. Alates 2024. aasta juunist on Google pärand-FCM API versiooni koos serverivõtme autentimisega täielikult sulgenud. Nüüd töötab ainult HTTP v1 API koos OAuth 2.0-ga.

Allpool on samm-sammuline juhend Firebase Cloud Messagingu seadistamiseks ja platvormiüleste tõukemärguannete saatmiseks PHP kaudu: alates projekti loomisest kuni märguannete vastuvõtmiseni Androidis ja iOS-is.

Mis on FCM ja miks vana API suleti

💡 Kiire ülevaade:

  • Loo Firebase'i projekt ja hangi JSON-võti
  • Seadista kliendi SDK ja hanki FCM-token
  • Paigalda kreait/firebase-php Composeriga
  • Saada tõukemärguanne teemasse ühe käsuga
  • Võta märguanne seadmes vastu 1-3 sekundiga

Firebase Cloud Messaging (FCM) on Google'i platvormiülene teenus märguannete saatmiseks Androidi, iOS-i ja veebi. See on tasuta, sellel pole rangeid sõnumimahu kvoote ja see töötab ühe serveri API kaudu.

FCM-i eelkäija Google Cloud Messaging (GCM) kasutas skeemi seadme registreerimis-ID-de ja serverivõtmega. Arendajad hoidsid tokeneid oma andmebaasis ja saatsid märguandeid tsüklis. FCM lisas teemad (temaatilised kanalid): seade tellib /topics/news ja server saadab sõnumi kogu grupile korraga, ilma tokeneid läbi käimata.

  1. aasta juunis teatas Google pärand-HTTP API aegumisest ja alates 2024. aasta keskpaigast on see täielikult suletud. Vana lõpp-punkt https://android.googleapis.com/gcm/send ei võta enam päringuid vastu. Serverivõtme asemel on nüüd vaja OAuth 2.0 tokenit, mis saadakse Firebase'i teenusekonto JSON-failist. Ülemineku üksikasjad on saadaval ametlikus FCM-i dokumentatsioonis.

Pange tähele, et ka teemade tellimuste haldamise Instance ID API (iid.googleapis.com) on aegunud. Kaasaegne lähenemine on tellimine kliendis Firebase SDK kaudu või tellimuste haldamine serveris Firebase Admin SDK abil.

1. Samm: projekti loomine Firebase Console'is

Mine Firebase Console'isse oma Google'i kontoga. Klõpsa „Create a project", määra nimi ja oota initsialiseerimist.

Firebase'i projekti seaded serveri võtmega

Pärast projekti loomist mine jaotisse Project Settings → Service Accounts. Klõpsa „Generate new private key" ja JSON-fail volitustega laaditakse alla. Salvesta see oma serveris kaitstud kausta (väljapoole dokumendijuurt): nii hangib PHP klient OAuth 2.0 tokeni HTTP v1 API jaoks.

Samuti jaotises Project Settings → Cloud Messaging lisa iOS-i APNs-sertifikaadid, kui plaanid saata märguandeid Apple'i seadmetele. Ilma selle sammuta tõukemärguanded iOS-is ei tööta.

2. Samm: kliendi SDK seadistamine

Selleks, et server teaks, kuhu märguandeid saata, peab klientrakendus hankima FCM-tokeni ja saatma selle sinu serverisse. Seadistamine mõlema platvormi jaoks on kirjeldatud Firebase'i dokumentatsioonis; siin on põhipunktid.

IOS

Määra seadme registreerimise URL, sinu PHP skripti lõpp-punkt, mis tokeni vastu võtab:

Seadme registreerimise URL iOS SDK-s

Minimaalne Firebase SDK integratsioon iOS-i rakenduses:

Firebase'i SDK seadistamise näide iOS-ile

Igal käivitamisel kutsub rakendus välja Messaging.messaging().token(), hangib kehtiva FCM-tokeni ja saadab selle sinu registreerimise URL-ile. Token võib muutuda, kui rakendus uuesti paigaldatakse, seega ära salvesta seda püsivalt; uuenda seda igal käivitamisel.

Android

Loogika on sama: määra serveri lõpp-punkti URL tokeni registreerimiseks:

Seadme registreerimise URL Android SDK-s

Firebase SDK integratsioon Androidis:

Firebase'i SDK seadistamise näide Androidile

Androidis uueneb token samuti, kui rakendus uuesti paigaldatakse või andmed kustutatakse; pea seda meeles oma serveri seadmete tabeli kavandamisel.

3. Samm: PHP teegi paigaldamine ja autentimine

HTTP v1 API-ga PHP kaudu töötamiseks vajad teeki, mis tegeleb OAuth 2.0 tokeni hankimisega teenusekonto JSON-failist. Kõige küpsem variant 2026. aasta keskpaiga seisuga on kreait/firebase-php. Paigaldamine Composeriga:

1composer require kreait/firebase-php

Fail send_push.php koos kliendi initsialiseerimisega:

1<?php
2require_once __DIR__ . '/vendor/autoload.php';
3
4use Kreait\Firebase\Factory;
5use Kreait\Firebase\Messaging\CloudMessage;
6use Kreait\Firebase\Messaging\Notification;
7
8$factory = (new Factory)
9 ->withServiceAccount('/путь/к/serviceAccountKey.json');
10
11$messaging = $factory->createMessaging();

Kontrolli, et JSON-võtme tee on absoluutne ja fail on PHP protsessi poolt loetav. Ära kunagi paiguta JSON-võtit avalikku veebisaidi kausta; kui sellele brauseri kaudu otse ligi pääseb, saaks ründaja täieliku juurdepääsu sinu Firebase'i projektile.

4. Samm: märguande saatmine HTTP v1 API kaudu

Nüüd saatmismehhanismist. Allolev kood võtab vormist märguande pealkirja ja teksti, koostab andmekoormuse ja saadab selle määratud teemasse:

1<?php
2require_once __DIR__ . '/vendor/autoload.php';
3
4use Kreait\Firebase\Factory;
5use Kreait\Firebase\Messaging\CloudMessage;
6use Kreait\Firebase\Messaging\Notification;
7
8$factory = (new Factory)
9 ->withServiceAccount('/путь/к/serviceAccountKey.json');
10
11$messaging = $factory->createMessaging();
12
13$topic = 'my-app';
14
15$notification = Notification::create(
16 $_POST['title'] ?? 'Новое уведомление',
17 $_POST['summary'] ?? ''
18);
19
20$message = CloudMessage::withTarget('topic', $topic)
21 ->withNotification($notification)
22 ->withData([
23 'action' => 'models',
24 'model_id' => '2701',
25 ])
26 ->withHighestPossiblePriority();
27
28try {
29 $result = $messaging->send($message);
30 echo "Уведомление отправлено. ID: " . json_encode($result);
31} catch (\Kreait\Firebase\Exception\MessagingException $e) {
32 echo "Ошибка отправки: " . $e->getMessage();
33}

Peamised punktid selgitatuna:

  • CloudMessage::withTarget('topic', $topic) saadab teemasse; konkreetsele seadmele saatmiseks asenda see käsuga withTarget('token', 'DEVICE_TOKEN').
  • ->withData([...]) sisaldab kohandatud andmeid süvalinkimiseks: märguandele vajutades avab rakendus kindla ekraani (selles näites mudeli lehe).
  • ->withHighestPossiblePriority() määrab kõrge prioriteedi ja märguanne toimetatakse kohale kohe; vaiksete taustsündmuste jaoks kasuta normal.
  • MessagingException püüab kinni valideerimis-, autentimis- ja võrguvead; mähkige saatmiskutse alati try/catch plokki.

See kood asendab täielikult aegunud kombinatsiooni curl + Authorization:key=SERVER_KEY + gcm/send lõpp-punkt, mis lõpetas töötamise 2024. aastal.

Vorm käsitsi saatmiseks

Kiireks testimiseks on siin lihtne HTML-liides:

1<form method="POST" action="send_push.php">
2 <input type="text" name="title" placeholder="Заголовок уведомления" required>
3 <textarea name="summary" placeholder="Текст уведомления" required></textarea>
4 <button type="submit">Отправить push</button>
5</form>

Praktikas on selline vorm vaid silumisvahend. Tootmisprojektis on $messaging->send() kutse integreeritud äriloogikasse: avalda uudis → teavita /topics/news teema tellijaid.

Tõuketeavituse saatmise vorm administraatori paneelil

5. Samm: märguande kättesaamise kontrollimine

Pärast saatmist ilmub märguanne lukustuskuvale 1-3 sekundi jooksul. Pealkiri ja sisu on need, mis edastati Notification::create() kaudu. Märguandele vajutamine käivitab rakenduse ja andmekoormuse kaudu edastad parameetrid sobivale ekraanile navigeerimiseks.

Tõuketeavitus telefoni ekraanil

Teemad pakuvad paindlikku auditooriumi segmenteerimist. Soovid kasutajaid platvormi järgi eraldada? Loo /topics/ios-news ja /topics/android-news. Geograafia järgi? /topics/users-europe. Keele järgi? /topics/lang-ru. Kombineeri, kuidas soovid: teemad on tasuta ja nende arvule piiranguid pole.

Tõuketeavituse kohaletoimetamise tulemus FCM-i kaudu

Video: täielik seadistamise läbivaatus

See 20-minutiline õpetus näitab Firebase Cloud Messagingu täielikku integratsiooni PHP taustsüsteemiga: alates projekti loomisest konsoolis kuni tõukemärguande saatmise ja vastuvõtmiseni reaalses seadmes.

⁉️🤔 Korduma kippuvad küsimused

Kas ma pean Firebase Cloud Messagingu eest maksma?

FCM on täiesti tasuta. Google ei võta tõukemärguannete saatmise eest tasu ega kehtesta rangeid sõnumimahu kvoote. Väga suurte mahtude juures (miljoneid tunnis) võib rakenduda piiramine, kuid tüüpilisele kuni sadade tuhandete kasutajatega rakendusele piiranguid pole.

Kas kreait/firebase-php teegi kasutamine on kohustuslik?

Ei, kuid see on 2026. aasta keskpaiga seisuga kõige paremini hallatud PHP pakett Firebase'i jaoks. Alternatiiv on töötada HTTP v1 API-ga otse Guzzle'i ja google/auth abil OAuth 2.0 tokeni hankimiseks. Sel juhul pead aga käsitsi haldama tokeni eluiga, seda värskendama ja jälgima autentimisvigu. kreait/firebase-php tegeleb sellega automaatselt.

Kuidas saata märguandeid konkreetsele seadmele, mitte tervele teemale?

Asenda withTarget('topic', $topic) käsuga withTarget('token', $deviceToken), kus $deviceToken on klientrakendusest saadud FCM-token. Token on unikaalne iga rakenduse installatsiooni kohta konkreetses seadmes.

Mida teha, kui märguanded ei jõua iOS-i?

Kontrolli kolme asja: (1) APNs-sertifikaat on üles laaditud Firebase'i projekti seadetes (Cloud Messaging → Apple app configuration), (2) võti FirebaseAppDelegateProxyEnabled väärtusega YES on lisatud faili Info.plist, (3) seade ei ole režiimis Mitte segada. Pane ka tähele, et iOS-i simulaator tõukemärguandeid vastu ei võta; testi ainult füüsilises seadmes.

Kas ma saan saata vaikset märguannet ilma seda kasutajale näitamata?

Jah, kasuta ainult andmeid sisaldavat sõnumit: edasta ainult ->withData([...]) ilma ->withNotification(...). Selline sõnum äratab rakenduse taustal andmete sünkroniseerimiseks, kuid ei näita visuaalset märguannet. iOS-is lisa taustatöötluse jaoks päis content-available väärtusega 1.

Mis on muutunud ja kuidas vältida märguannete katkemist 2026. aastal

Google on järk-järgult karmistanud FCM-i turvanõudeid. Peamine muudatus on pärand-HTTP API sulgemine koos serverivõtme autentimisega. Kui sinu PHP kood kutsub endiselt https://android.googleapis.com/gcm/send või https://fcm.googleapis.com/fcm/send koos Authorization: key=... päisega, pole märguanded alates 2024. aasta keskpaigast välja läinud.

HTTP v1 API-le üleminek koos OAuth 2.0-ga teenusekonto kaudu lahendab selle probleemi täielikult. kreait/firebase-php teek tegeleb tokeni hankimise ja värskendamisega, nii et sa ei pea värskendamise loogikat käsitsi kirjutama. Hoia teenusekonto JSON-võtit väljaspool dokumendijuurt ja välista see oma repositooriumist .gitignore abil.

Teemade ja andmekoormustega saad paindliku marsruutimise: uudised lähevad /topics/news tellijatele, isiklikud sõnumid tokeni alusel ja vaikne sünkroniseerimine toimub ainult andmeid sisaldavate sõnumite kaudu. Kogu see funktsionaalsus on tasuta ja töötab Androidis, iOS-is ja veebis ühest PHP skriptist.

Kontrolli praegust märguannete saatmise koodi oma projektis kohe üle. Kui see kasutab endiselt Authorization: key=, uuenda see HTTP v1 API-le. Küsimused ja integratsiooni nüansid postita kommentaaridesse.