VPN-এ Android পুশ বিজ্ঞপ্তি কাজ করছে না? এগুলো দেখুন
FCM নিজের আউটবাউন্ড সংযোগ 5228-5230 পোর্টে রাখে। বিজ্ঞপ্তির সেটিংস বদলানোর আগে প্রক্সি নিয়ম, NAT টাইমআউট ও VPN বাইপাস দেখুন।
ফোনে বিজ্ঞপ্তি আসা বন্ধ হয়ে যায়, অথচ সেই ফোনে কর্পোরেট VPN দিয়ে স্বাভাবিকভাবে ব্রাউজিং কাজ করে। ওয়েব পেজ খোলে, অ্যাপ খোলে, কিন্তু বার্তা শুধু বাড়িতে বা টানেল বন্ধ করার পরেই আসে। Firebase Cloud Messaging-নির্ভর অ্যাপের জন্য পুশ চ্যানেল হলো আলাদা দীর্ঘস্থায়ী আউটবাউন্ড সংযোগ, ব্রাউজার যে HTTPS পথ প্রমাণ করেছে তা নয়। এই পরীক্ষাগুলো ক্রমে করুন।
অ্যাপ সত্যিই FCM ব্যবহার করে কি না নিশ্চিত করুন
সব বিজ্ঞপ্তি পুশ নয়। কিছু অ্যাপ নিজেই লোকালি নির্ধারিত করে, কিছু HTTPS দিয়ে আনা হয়, আর কিছু আসে এমন বিক্রেতা চ্যানেলে যার Firebase-এর সঙ্গে সম্পর্ক নেই। অ্যাপের manifest ও নির্ভরতায় Firebase Messaging থাকলে বিজ্ঞপ্তি সাধারণত FCM সংযোগ দিয়ে যায়, এবং ক্লায়েন্ট লাইব্রেরি একটি অনুমেয় ট্যাগে নিবন্ধন লগ করে।
adb logcat -s FirebaseMessaging:V
adb shell dumpsys package <package> | grep -i firebase
লগে নিবন্ধন টোকেন থাকলে পরিবহন নিশ্চিত হয়। না থাকলে আপনি অ্যাপ-স্তরের বিজ্ঞপ্তি পাইপলাইন ডিবাগ করছেন, ফায়ারওয়াল বদলালে কাজ হবে না। এই পার্থক্য গুরুত্বপূর্ণ, কারণ পৌঁছেছে কিন্তু কখনো দেখানো হয়নি এমন বার্তা আর কখনো আসেনি এমন বার্তা ব্যবহারকারীর কাছে একই রকম দেখায়।
আউটবাউন্ড পোর্ট দেখুন, ওয়েবসাইট নয়
FCM ডিভাইস সংযোগ হলো ডিভাইস থেকে শুরু হওয়া TCP সংযোগ 5228 পোর্টে, 5229 ও 5230 বিকল্প হিসেবে এবং 443 শেষ উপায় হিসেবে। ব্রাউজিংয়ের জন্য 443 অনুমোদন করা ফায়ারওয়ালও পুশ ভাঙতে পারে, আর অ্যাপের 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 প্রক্সির উপর দিয়ে নেওয়া যায় না। কর্পোরেট ওয়েব প্রক্সি দিয়ে ব্রাউজার সফল হওয়া পুশ সকেট সম্পর্কে কিছুই প্রমাণ করে না: দুটি আলাদা ক্লায়েন্ট, আলাদা পথ।
সকেট মেরে ফেলা idle টাইমআউট দেখুন
FCM সংযোগ বার্তার মাঝে খোলা থাকে, তাই NAT ও স্টেটফুল পরিদর্শনের টাইমআউটে সংবেদনশীল। Firebase-এর নির্দেশনা এমন নীতিতে অন্তত 30 মিনিট idle সহনশীলতা চায়। পাঁচ মিনিটের সেশন টাইমআউট ম্যাপিং নিঃশব্দে সরিয়ে দেয়, ফোন কিছু জাগালেই আবার সংযোগ করে, তাই বার্তা দলে দলে আসে বা আসেই না।
ফায়ারওয়াল বা VPN গেটওয়ের সেশন টেবিল পড়ে ফোনের 5228-5230 সংযোগ খুঁজুন। বাকি আয়ু নথিভুক্ত মানের সঙ্গে তুলনা করুন। কম হলে ডিভাইসের সব নীতি না বদলে ওই পোর্টগুলোর টাইমআউট বাড়ান।
ডেলিভারি নির্ভর করে Wi-Fi ও সেলুলারের মধ্যে রোমিংয়েও এন্ডপয়েন্ট ম্যাপিং টিকে থাকার উপর। একটি ইন্টারফেসে বাঁধা ম্যাপিং হ্যান্ডওভারে হারাতে পারে।
VPN বাইপাস গ্রহণযোগ্য কি না ঠিক করুন
Android VPN ক্লায়েন্ট ট্রাফিককে টানেল বাইপাস করতে দিতে পারে, এবং সেই বাইপাস অনুমোদিত হলে FCM অন্তর্নিহিত নেটওয়ার্ক ব্যবহার করতে পারে। তখন পুশ চ্যানেল এনক্রিপ্টেড থাকে কিন্তু টানেলের ঠিকানা বহন করে না, তাই VPN-এর IP লুকানো এর উপর খাটে না। এটি নীতির বিনিময়, ত্রুটি নয়।
নীতি বাইপাস নিষিদ্ধ করলে টানেল পথেই সংযোগ নিতে হবে: পোর্ট খোলা, টাইমআউট যথেষ্ট, প্রক্সি পথে নেই। ম্যানেজড নেটওয়ার্কে বিজ্ঞপ্তি কাজ করে বলে পরিচালিত সার্ভিস নিঃশব্দে বাদ দেবেন না। VPN আইকন বলে না কোন সার্ভিস কোন পথ নিয়েছে।
ডেলিভারি ও প্রদর্শন আলাদা করে একবার পরীক্ষা করুন
অনুমতি, চ্যানেল সেটিংস, ডু নট ডিস্টার্ব ও অ্যাপভিত্তিক টগল ঠিক করে পৌঁছানো বার্তা দেখানো হবে কি না। Android 13 ও পরের সংস্করণে বিজ্ঞপ্তির অনুমতি রানটাইমে দেওয়া হয়, আর অনুমতি না পেলে ঠিক ব্লক হওয়া পোর্টের মতো নীরবতা তৈরি হয়। পৌঁছেছে কিন্তু দেখানো হয়নি এমন বার্তা প্রদর্শনের সমস্যা, আলাদা করে দেখুন।
এলোমেলোভাবে বার্তা না পাঠিয়ে একটি নিয়ন্ত্রিত পরীক্ষা করুন। ডিভাইস, অ্যাকাউন্ট ও অ্যাপ স্থির রাখুন, জানা টাইমস্ট্যাম্পসহ একটি বার্তা পাঠান এবং VPN অবস্থা অনুমোদিত VPN-বিহীন নেটওয়ার্কের সঙ্গে তুলনা করুন। প্রতিবার logcat প্রাপ্তি ও প্রদর্শনের সময় লিখুন। ডেলিভারি আলাদা কিন্তু প্রদর্শন একই হলে নেটওয়ার্ক পথই চলক; দুটোই এক হলে অ্যাপে দেখতে থাকুন।
নেটওয়ার্ক মালিককে পোর্ট, প্রক্সি সীমা, মাপা টাইমআউট ও বাইপাস সিদ্ধান্ত এক টোকায় দিন। VPN বন্ধ করুন কোনো ফলাফল নয়, আর সব Google ট্রাফিক অনুমোদনও সীমিত সমাধান নয়।