Οι ειδοποιήσεις push του Android δεν φτάνουν μέσω VPN; Ελέγξτε αυτά
Το FCM κρατά τη δική του εξερχόμενη σύνδεση στις θύρες 5228-5230. Ελέγξτε τον κανόνα του μεσολαβητή, το χρονικό όριο NAT και την παράκαμψη VPN πριν αγγίξετε τις ρυθμίσεις ειδοποιήσεων.
Οι ειδοποιήσεις σταματούν να φτάνουν σε ένα τηλέφωνο που κατά τα άλλα περιηγείται καλά μέσω του εταιρικού VPN. Οι σελίδες φορτώνουν, η εφαρμογή ανοίγει, και τα μηνύματα εμφανίζονται μόνο στο σπίτι ή αφού κλείσει η σήραγγα. Για μια εφαρμογή χτισμένη στο Firebase Cloud Messaging, το κανάλι push είναι ξεχωριστή μακρόβια εξερχόμενη σύνδεση, όχι η διαδρομή HTTPS που μόλις απέδειξε το πρόγραμμα περιήγησης. Περάστε αυτούς τους ελέγχους με σειρά και σταματήστε στον πρώτο που αποτυγχάνει.
Επιβεβαιώστε ότι η εφαρμογή χρησιμοποιεί όντως FCM
Δεν είναι κάθε ειδοποίηση push. Μερικές τις προγραμματίζει τοπικά η εφαρμογή, μερικές ανακτώνται μέσω HTTPS, και μερικές φτάνουν από κανάλι προμηθευτή που δεν έχει σχέση με το Firebase. Αν το manifest και οι εξαρτήσεις της εφαρμογής περιλαμβάνουν Firebase Messaging, οι ειδοποιήσεις της ταξιδεύουν συνήθως μέσω της σύνδεσης FCM, και η βιβλιοθήκη πελάτη καταγράφει την εγγραφή κάτω από προβλέψιμη ετικέτα.
adb logcat -s FirebaseMessaging:V
adb shell dumpsys package <package> | grep -i firebase
Ένα διακριτικό εγγραφής στο log επιβεβαιώνει τη μεταφορά. Χωρίς αυτό, αποσφαλματώνετε μια αλυσίδα ειδοποιήσεων σε επίπεδο εφαρμογής και οι αλλαγές στο τείχος προστασίας δεν θα βοηθήσουν. Η διάκριση μετράει, γιατί ένα μήνυμα που παραδόθηκε αλλά δεν εμφανίστηκε ποτέ και ένα μήνυμα που δεν έφτασε ποτέ μοιάζουν ίδια στον χρήστη.
Ελέγξτε τις εξερχόμενες θύρες, όχι τον ιστότοπο
Οι συνδέσεις συσκευών FCM είναι εξερχόμενες TCP από το τηλέφωνο προς τη θύρα 5228, με τις 5229 και 5230 ως εφεδρικές και την 443 ως τελευταία λύση. Ένα τείχος προστασίας που επιτρέπει την 443 για περιήγηση μπορεί να σπάσει το push, και ένας κανόνας που επιτρέπει τον τομέα API της εφαρμογής δεν καλύπτει τα άκρα μηνυμάτων, γιατί είναι ξεχωριστές υπηρεσίες.
Είναι εξερχόμενες συνδέσεις από το τηλέφωνο. Δεν δημοσιεύετε εισερχόμενη θύρα στη συσκευή ή στην πύλη VPN, οπότε αν κάποιος προτείνει προώθηση θύρας, ο σχεδιασμός είναι ήδη λάθος. Το ίδιο ισχύει για κανόνα που ανοίγει μία θύρα σε κάθε διεύθυνση του διαδικτύου: περιορίστε τον στους τεκμηριωμένους προορισμούς.
| Port | Role | What to verify |
|---|---|---|
| 5228 | Primary FCM connection | Outbound allowed and session state kept |
| 5229, 5230 | Fallback ports | Often missing from hand-written allowlists |
| 443 | Last-resort fallback | Works only if the client actually falls back |
| HTTP proxy | Not a supported FCM transport | Proxy exclusion or bypass, not a port rule |
Οι οδηγίες δικτύου του Firebase λένε επίσης ότι το πρωτόκολλο παράδοσης FCM δεν μπορεί να μεταφερθεί μέσω συνηθισμένου μεσολαβητή HTTP. Άρα η επιτυχία του προγράμματος περιήγησης μέσω του εταιρικού μεσολαβητή δεν αποδεικνύει τίποτα για την υποδοχή push: είναι δύο διαφορετικοί πελάτες με διαφορετικές διαδρομές.
Ελέγξτε τα χρονικά όρια αδράνειας που σκοτώνουν την υποδοχή
Η σύνδεση FCM μένει ανοιχτή ανάμεσα στα μηνύματα, κάτι που την κάνει ευαίσθητη στα χρονικά όρια NAT και επιθεώρησης κατάστασης. Οι οδηγίες του Firebase ζητούν τουλάχιστον 30 λεπτά ανοχής αδράνειας όπου ισχύουν τέτοιες πολιτικές. Ένα όριο συνεδρίας πέντε λεπτών αφαιρεί σιωπηλά την αντιστοίχιση, και το τηλέφωνο επανασυνδέεται μόνο όταν κάτι το ξυπνήσει, οπότε τα μηνύματα φτάνουν κατά κύματα ή καθόλου.
Διαβάστε τον πίνακα συνεδριών στο τείχος προστασίας ή στην πύλη VPN και βρείτε τη σύνδεση του τηλεφώνου προς 5228-5230. Συγκρίνετε τον υπόλοιπο χρόνο ζωής με την τεκμηριωμένη τιμή. Αν είναι μικρότερος, αυξήστε το όριο για αυτές τις θύρες αντί να αλλάξετε κάθε πολιτική στη συσκευή.
Η παράδοση εξαρτάται επίσης από το αν η αντιστοίχιση άκρου επιβιώνει σε μετάβαση μεταξύ Wi-Fi και κινητού. Αντιστοίχιση δεμένη σε μία διεπαφή μπορεί να χαθεί στη μεταβίβαση ακόμη και όταν τα δύο δίκτυα επιτρέπουν τις θύρες.
Αποφασίστε αν η παράκαμψη VPN είναι αποδεκτή
Οι πελάτες VPN του Android μπορούν να επιτρέπουν στην κίνηση να παρακάμπτει τη σήραγγα, και το FCM μπορεί τότε να χρησιμοποιεί το υποκείμενο δίκτυο. Το κανάλι push παραμένει κρυπτογραφημένο, αλλά δεν φέρει πια τη διεύθυνση της σήραγγας, οπότε η απόκρυψη IP του VPN δεν ισχύει γι αυτό. Είναι εμπορική ανταλλαγή πολιτικής, όχι βλάβη.
Αν η πολιτική σας απαγορεύει την παράκαμψη, η διαδρομή της σήραγγας πρέπει να φέρει τη σύνδεση: θύρες ανοιχτές, όρια αρκετά μεγάλα, μεσολαβητής μακριά από τη διαδρομή. Μην εξαιρείτε σιωπηλά μια διαχειριζόμενη υπηρεσία και μη χαλαρώνετε το κλείδωμα μόνο επειδή οι ειδοποιήσεις δουλεύουν σε μη διαχειριζόμενο δίκτυο. Το εικονίδιο VPN δεν λέει ποια διαδρομή διάλεξε κάθε υπηρεσία.
Χωρίστε την παράδοση από την εμφάνιση και δοκιμάστε μία φορά
Η άδεια, οι ρυθμίσεις καναλιού, η Μη ενοχλείτε και οι διακόπτες ανά εφαρμογή κρίνουν αν θα εμφανιστεί ένα μήνυμα που παραδόθηκε. Στο Android 13 και μετά η άδεια ειδοποιήσεων δίνεται κατά την εκτέλεση, και μια άρνηση παράγει σιωπή που μοιάζει ακριβώς με φραγμένη θύρα. Μήνυμα που έφτασε αλλά δεν εμφανίστηκε είναι πρόβλημα παρουσίασης, χειριστείτε το ξεχωριστά.
Κάντε μία ελεγχόμενη δοκιμή αντί να στέλνετε μηνύματα στην τύχη. Κρατήστε σταθερά τη συσκευή, τον λογαριασμό και την εφαρμογή, στείλτε ένα μήνυμα με γνωστή χρονική σφραγίδα και συγκρίνετε τη συνθήκη VPN με εγκεκριμένο δίκτυο χωρίς VPN. Καταγράψτε τον χρόνο λήψης στο logcat και τον χρόνο εμφάνισης για κάθε εκτέλεση. Αν η παράδοση διαφέρει αλλά η εμφάνιση όχι, η διαδρομή δικτύου είναι η μεταβλητή· αν και τα δύο είναι ίδια, συνεχίστε να κοιτάτε την εφαρμογή.
Δώστε στον υπεύθυνο δικτύου τις θύρες, τον περιορισμό του μεσολαβητή, το μετρημένο όριο και την απόφαση παράκαμψης σε ένα σημείωμα. Το κλείσιμο του VPN δεν είναι εύρημα, και το άνοιγμα όλης της κίνησης Google δεν είναι περιορισμένη διόρθωση.