Silent Push হল এক ধরনের iOS push নোটিফিকেশন যা ব্যবহারকারীকে কোনো প্রদর্শন এবং শব্দ ছাড়াই ডিভাইসে ডেলিভার করা হয়। একটি সাইলেন্ট নোটিফিকেশনের মূল উদ্দেশ্য হল ব্যাকগ্রাউন্ড ডেটা সিঙ্ক্রোনাইজেশন, কন্টেন্ট আপডেট এবং ছোট ছোট কাজ সম্পাদন করা যার জন্য ব্যবহারকারীর মনোযোগের প্রয়োজন নেই। Apple Developer Documentation, 2026 অনুসারে, Silent Push আগত ডেটা প্রক্রিয়াকরণের জন্য অ্যাপটিকে 30 সেকেন্ডের জন্য ব্যাকগ্রাউন্ডে সক্রিয় করে, তারপর সিস্টেম ব্যাটারি বাঁচানোর জন্য ডিভাইসকে স্লিপ মোডে ফিরিয়ে দেয়।
মূল বিষয়
Silent Push হল একটি iOS প্রক্রিয়া যা ব্যবহারকারীকে কোনো দৃশ্যমান নোটিফিকেশন ছাড়াই ডিভাইসে ডেটা পৌঁছে দেয়। স্ট্যান্ডার্ড push-এর বিপরীতে যা একটি ব্যানার দেখায়, শব্দ বাজায় এবং নোটিফিকেশন সেন্টারে প্রদর্শিত হয়, silent push ব্যাকগ্রাউন্ডে অ্যাপকে জাগ্রত করে এবং প্রক্রিয়াকরণের জন্য ডেটা পাঠায়। ব্যবহারকারী কখনই এই ধরনের নোটিফিকেশন ডেলিভারি সম্পর্কে জানতে পারেন না — ফলাফল হল পরবর্তীবার অ্যাপ খোলার সময় আপডেট হওয়া কন্টেন্ট।
মূল পার্থক্য JSON পেলোডের মধ্যে রয়েছে: একটি silent push-এ content-available: 1 ফ্ল্যাগ থাকে এবং alert, sound বা badge থাকে না। একটি স্ট্যান্ডার্ড নোটিফিকেশন alert-এর সাথে সবসময় ব্যবহারকারীকে দেখানো হয়, content-available নির্বিশেষে। Silent push শুধুমাত্র content-available: 1 এবং alert ছাড়া কাজ করে — যদি আপনি alert যোগ করেন, সিস্টেম ব্যাকগ্রাউন্ড ডেলিভারি ফ্ল্যাগ থাকা সত্ত্বেও নোটিফিকেশন দেখাবে।
সাইলেন্ট নোটিফিকেশন অপরিহার্য সেই পরিস্থিতিতে যেখানে ব্যবহারকারী অ্যাপ খোলার সময় ডেটা তাজা থাকা প্রয়োজন, কিন্তু ব্যবহারকারীকে বিরক্ত করা উচিত নয়। উদাহরণ: ব্যাকগ্রাউন্ডে নিউজ ফিড আপডেট করা, সাবস্ক্রিপশন সিঙ্ক্রোনাইজ করা, অফলাইন অ্যাক্সেসের জন্য নতুন কন্টেন্ট ডাউনলোড করা, উইজেট আপডেট করা, ক্যাশে অকার্যকর করা। Silent Push ব্যবহারকারীর প্রত্যাশিত কর্মের আগে অ্যাপকে গরম করার জন্যও ব্যবহৃত হয়।
Silent Push ডেলিভারি সাধারণ নোটিফিকেশন থেকে উল্লেখযোগ্যভাবে আলাদা এবং পাওয়ার অপ্টিমাইজেশন নিয়ম অনুসরণ করে। iOS সিস্টেম APNS থেকে push অনুরোধ গ্রহণ করে, নির্ধারণ করে যে এটি একটি silent push (content-available: 1), এবং একাধিক কারণের ভিত্তিতে ডেলিভারি করার সিদ্ধান্ত নেয়: ব্যাটারি লেভেল, পাওয়ার সেভিং মোড, পূর্ববর্তী silent push-এর ফ্রিকোয়েন্সি, অ্যাপের কার্যকলাপ এবং বর্তমান CPU লোড।
Apple M চিপ এবং iOS 15+ যুক্ত ডিভাইসে, silent Push Power Nap প্রক্রিয়ার সাথে একীভূত হয়, যা ব্যাকগ্রাউন্ড কাজের জন্য পর্যায়ক্রমে ডিভাইস জাগ্রত করে। Power Nap একাধিক silent push-কে একটি কার্যকলাপ সময়ের মধ্যে একত্রিত করে, যা সামগ্রিক পাওয়ার খরচ কমায়। ডেভেলপার Power Nap সরাসরি নিয়ন্ত্রণ করতে পারেন না — সিস্টেম ব্যবহারকারীর আচরণ এবং অ্যাপ ব্যবহারের ইতিহাসের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে সিদ্ধান্ত নেয়।
যখন সিস্টেম একটি silent push ডেলিভার করে, অ্যাপটি AppDelegate-এ application(_:didReceiveRemoteNotification:fetchCompletionHandler:) কল পায়। ডেভেলপারকে অবশ্যই 30 সেকেন্ডের মধ্যে completion handler কল করতে হবে, সঠিক ফলাফল (UIBackgroundFetchResult) পাস করে। যদি প্রক্রিয়াকরণ সময়মতো সম্পূর্ণ না হয়, সিস্টেম এই অ্যাপের জন্য silent push-এর ফ্রিকোয়েন্সি সীমিত করতে বা সম্পূর্ণরূপে ডেলিভারি বন্ধ করে দিতে পারে।
// AppDelegate-এ Silent Push প্রক্রিয়াকরণ
func application(
_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler:
@escaping (UIBackgroundFetchResult) -> Void
) {
guard let type = userInfo["sync-type"] as? String
else {
completionHandler(.failed)
return
}
if type == "news-feed" {
NewsFeedSyncService().sync { success in
completionHandler(success ? .newData : .failed)
}
} else if type == "cache-invalidate" {
CacheManager.shared.invalidateAll()
completionHandler(.newData)
} else {
completionHandler(.noData)
}
}
Apple silent push-এর মধ্যে সঠিক ব্যবধান প্রকাশ করে না, তবে পরীক্ষা এবং ডকুমেন্টেশনের ভিত্তিতে, প্রতি ডিভাইসে প্রতি ঘন্টায় 2–3 সাইলেন্ট নোটিফিকেশন পাঠানোর সুপারিশ করা হয়। আরও ঘন ঘন পাঠালে, সিস্টেম silent push উপেক্ষা করতে শুরু করে এবং ডেটা ডেলিভারি বন্ধ হয়ে যায়। যদি আরও ঘন ঘন সিঙ্ক্রোনাইজেশন প্রয়োজন হয়, ব্যাকগ্রাউন্ড কনফিগারেশন বা VoIP push সহ URLSession ব্যবহার করার কথা বিবেচনা করুন।
Silent Push বিস্তৃত কাজের ক্ষেত্রে ব্যবহৃত হয় যেখানে ব্যবহারকারীর সক্রিয় অংশগ্রহণ ছাড়াই ডেটা আপ-টু-ডেট থাকা প্রয়োজন। আসল iOS অ্যাপ্লিকেশনে এই প্রক্রিয়াটির সবচেয়ে কার্যকর ব্যবহারের ক্ষেত্রগুলি দেখি।
নিউজ অ্যাপ, রিডার এবং ভ্রমণ অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে নতুন কন্টেন্ট ডাউনলোড করতে Silent Push ব্যবহার করে। ব্যবহারকারী যখন অ্যাপ খোলে, ডেটা ইতিমধ্যেই লোড করা থাকে এবং ইন্টারনেট সংযোগ ছাড়াই উপলব্ধ থাকে। এই পদ্ধতি ব্যবহারকারীর অভিজ্ঞতাকে নাটকীয়ভাবে উন্নত করে — খালি লোডিং স্ক্রিন অদৃশ্য হয়ে যায় এবং কন্টেন্ট তৎক্ষণাৎ প্রদর্শিত হয়। নতুন নিবন্ধ আসলে সার্ভার একটি silent push পাঠায় এবং অ্যাপ অফলাইন পড়ার জন্য সেগুলি ব্যাকগ্রাউন্ডে ডাউনলোড করে।
iOS WidgetKit একটি সময়সূচীতে উইজেট আপডেট করে, কিন্তু সার্ভারে ডেটা পরিবর্তনের পরে তাত্ক্ষণিক আপডেটের জন্য Silent Push ব্যবহার করা হয়। ব্যাকগ্রাউন্ডে থাকা অ্যাপ silent push প্রক্রিয়া করে, উইজেটের জন্য স্থানীয় ডেটা স্টোর আপডেট করে এবং WidgetCenter-এর মাধ্যমে টাইমলাইন জোর করে রিফ্রেশ করে। ব্যবহারকারী অ্যাপ না খুলে উইজেটে আপ-টু-ডেট তথ্য দেখে — বিনিময় হার, আবহাওয়ার পূর্বাভাস, ডেলিভারি অবস্থা।
যখন সার্ভার গুরুত্বপূর্ণ ডেটা আপডেট করে (যেমন মূল্য নির্ধারণের নিয়ম, প্রিমিয়াম ব্যবহারকারীদের জন্য উপলব্ধ বৈশিষ্ট্য), Silent Push তাত্ক্ষণিকভাবে স্থানীয় ক্যাশে অকার্যকর করতে দেয়। পরবর্তী খোলার সময়, অ্যাপ পুরানো ক্যাশে ব্যবহার না করে সার্ভার থেকে তাজা ডেটা লোড করবে। এটি বিশেষ করে অর্থপ্রদত্ত কন্টেন্ট বা সাবস্ক্রিপশনযুক্ত অ্যাপের জন্য প্রাসঙ্গিক।
কিছু পরিস্থিতিতে, নোটিফিকেশন না দেখিয়ে অ্যাপ আইকনে ব্যাজ আপডেট করা প্রয়োজন। পেলোডে ব্যাজ ফিল্ড সহ Silent Push ব্যবহারকারীকে ব্যানার দিয়ে বিরক্ত না করে পছন্দসই কাউন্টার মান সেট করতে দেয়। উদাহরণস্বরূপ, একটি চ্যাট অ্যাপ ব্যবহারকারী যদি ইতিমধ্যে অ্যাপে থাকে তবে প্রতিটি নতুন বার্তাকে নোটিফিকেশন হিসাবে না দেখিয়ে অপঠিত বার্তার সংখ্যা দিয়ে ব্যাজ আপডেট করতে পারে।
Silent Push-এর সঠিক পরিচালনার জন্য তিনটি স্তরে কনফিগারেশন প্রয়োজন: Xcode প্রকল্প, সার্ভারে JSON পেলোড এবং অ্যাপে প্রক্রিয়াকরণ কোড। প্রতিটি স্তর গুরুত্বপূর্ণ: কোনো ধাপ এড়িয়ে গেলে নোটিফিকেশন সাধারণ হিসাবে ডেলিভার হবে বা একেবারেই ডেলিভার হবে না।
Xcode-এ, আপনাকে Push Notifications ক্যাপাবিলিটি এবং Remote notifications চেকবক্স সহ Background Modes সক্রিয় করতে হবে। Push Notifications APNS-এর জন্য একটি সার্টিফিকেট তৈরি করে, যখন Background Modes-এ Remote notifications সিস্টেমকে silent push পাওয়ার সময় অ্যাপ জাগ্রত করতে দেয়। Remote notifications ছাড়া, silent push ডেলিভার হবে কিন্তু অ্যাপ ব্যাকগ্রাউন্ডে সক্রিয় হবে না এবং ডেটা প্রক্রিয়া করা হবে না।
একটি Silent Push পেলোডে content-available: 1 সহ aps কী থাকতে হবে এবং alert, sound বা badge থাকা যাবে না। কাস্টম ফিল্ড aps-এর একই স্তরে পাস করা হয় এবং প্রক্রিয়াকরণের জন্য ডেটা ধারণ করে: অপারেশন টাইপ, অবজেক্ট আইডেন্টিফায়ার, মেটাডেটা। content-available ছাড়া পেলোড সাধারণ নোটিফিকেশন হিসাবে বিবেচিত হবে; alert-সহ, content-available থাকলেও এটি সাধারণ হবে।
{
"aps": {
"content-available": 1
},
"sync-type": "news-feed",
"last-article-id": "article_8521",
"priority": "high"
}
Silent push পাওয়ার পর, iOS অ্যাপ দৃশ্যমান হওয়ার আগে application(_:didReceiveRemoteNotification:fetchCompletionHandler:) কল করে। এই পদ্ধতিতে, আপনাকে userInfo বিশ্লেষণ করতে হবে, প্রয়োজনীয় কাজ সম্পাদন করতে হবে (নেটওয়ার্ক অনুরোধ, Core Data লেখা, ক্যাশে আপডেট) এবং 30 সেকেন্ডের মধ্যে সঠিক ফলাফল সহ completionHandler কল করতে হবে। completionHandler না কল করাকে সিস্টেম একটি ত্রুটি হিসাবে বিবেচনা করে এবং ভবিষ্যতের silent push-এর ফ্রিকোয়েন্সি প্রভাবিত করে।
Silent Push গুরুত্বপূর্ণ অপারেশনের জন্য একটি নির্ভরযোগ্য ডেটা ডেলিভারি চ্যানেল নয় — এটি একটি অপ্টিমাইজেশন প্রক্রিয়া, গ্যারান্টিযুক্ত সিঙ্ক্রোনাইজেশন নয়। ডেভেলপারকে সীমাবদ্ধতাগুলি বুঝতে হবে এবং সিস্টেমটি ডিজাইন করতে হবে যাতে অ্যাপটি silent push সহ এবং ছাড়া উভয় অবস্থাতেই সঠিকভাবে কাজ করে।
iOS প্রতিটি silent push-এর ডেলিভারি গ্যারান্টি দেয় না। সিস্টেম ডেলিভারি বিলম্বিত বা বাতিল করতে পারে যখন ব্যাটারি কম থাকে (20% এর নিচে), লো পাওয়ার মোডে, ঘন ঘন পূর্ববর্তী silent push-এর পরে, বা অ্যাপটি দীর্ঘদিন ব্যবহার না করা হলে। গড় ডেলিভারি পরিসংখ্যান Apple অনুসারে: প্রায় 70–80% silent push 5 মিনিটের মধ্যে ডেলিভার হয়, বাকিগুলি বিলম্বিত বা হারিয়ে যেতে পারে।
Apple কার্যকর silent push ব্যবহারের জন্য বেশ কয়েকটি নিয়ম অনুসরণ করার সুপারিশ করে। প্রতি ডিভাইসে প্রতি ঘন্টায় 2–3-এর বেশি silent push পাঠাবেন না — সীমা অতিক্রম করলে ব্লকিং হয়। একটি কমপ্যাক্ট পেলোড ব্যবহার করুন: ন্যূনতম পেলোড সাইজ প্রক্রিয়াকরণ দ্রুত করে এবং নেটওয়ার্ক লোড কমায়। যত তাড়াতাড়ি সম্ভব completionHandler কল করুন: প্রক্রিয়াকরণ যত বেশি সময় নেয়, সিস্টেমের ভবিষ্যতে silent push সীমাবদ্ধ করার সম্ভাবনা তত বেশি।
যে পরিস্থিতিতে গ্যারান্টিযুক্ত ডেলিভারি বা আরও প্রক্রিয়াকরণ সময় প্রয়োজন, বিকল্পগুলি বিবেচনা করুন। VoIP push (PushKit) ডেলিভারি গ্যারান্টি দেয় এবং আরও সময় দেয় কিন্তু শুধুমাত্র VoIP অ্যাপ্লিকেশনের জন্য উদ্দেশ্য। Background fetch (UIApplication background fetch) সিস্টেম দ্বারা একটি সময়সূচীতে চালু হয় কিন্তু সার্ভার দ্বারা শুরু করা যায় না। WebSocket একটি স্থায়ী সংযোগ বজায় রাখে কিন্তু বেশি ব্যাটারি খরচ করে এবং সব ধরনের অ্যাপের জন্য উপযুক্ত নয়।
Silent Push ডিবাগ করতে, Mac-এ Console.app ব্যবহার করুন এবং অ্যাপের নাম দিয়ে ফিল্টার করুন। সিস্টেম প্রতিটি silent push “background task” লেবেল দিয়ে লগ করে এবং প্রক্রিয়াকরণ সফল হয়েছে কিনা তা নির্দেশ করে। ডিভাইসে, Settings → Developer → Background Modes Logging-এর মাধ্যমে চেক করুন। সার্ভার-সাইড ট্র্যাকিং APNS Feedback Service-এর মাধ্যমে করা হয় অডেলিভার্ড নোটিফিকেশন সনাক্ত করতে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Silent Push ব্যবহারকারীকে দেখানো হয় না, শব্দ বাজায় না এবং নোটিফিকেশন সেন্টারে আসে না। এর উদ্দেশ্য ডেটা সিঙ্ক্রোনাইজেশনের জন্য ব্যাকগ্রাউন্ডে অ্যাপ সক্রিয় করা। একটি সাধারণ push সবসময় একটি ব্যানার দেখায় এবং শব্দ ও ব্যাজ অন্তর্ভুক্ত করতে পারে।
অ্যাপটি ব্যাকগ্রাউন্ড কাজ সম্পূর্ণ করতে 30 সেকেন্ড পায়। completionHandler কল করার পর, সিস্টেম ডিভাইসকে স্লিপ মোডে ফিরিয়ে দেয়। যদি সময়মতো completionHandler কল না করা হয়, সিস্টেম এই অ্যাপে silent push ডেলিভারি বন্ধ করে দিতে পারে।
সিস্টেম ডেলিভারি বিলম্বিত করতে পারে যখন ব্যাটারি কম থাকে, পাওয়ার সেভিং মোডে, ঘন ঘন silent push পাঠানোর পর বা অ্যাপ দীর্ঘদিন ব্যবহার না করা হলে। এটি iOS-এর স্বাভাবিক আচরণ, বাস্তবায়ন ত্রুটির সাথে সম্পর্কিত নয়।
হ্যাঁ, আপনি alert-এর সাথে content-available: 1 অন্তর্ভুক্ত করতে পারেন — এই ক্ষেত্রে নোটিফিকেশন ব্যবহারকারীকে দেখানো হবে এবং অ্যাপ অতিরিক্ত ব্যাকগ্রাউন্ড অ্যাক্টিভেশন পাবে। কিন্তু যদি কাজ শুধুমাত্র প্রদর্শন ছাড়া ব্যাকগ্রাউন্ড সিঙ্ক্রোনাইজেশন হয়, তাহলে alert অন্তর্ভুক্ত করা যাবে না।
ব্যাকগ্রাউন্ড কাজের লগ দেখতে Mac-এ Console.app ব্যবহার করুন। APNS-এর মাধ্যমে একটি পরীক্ষামূলক silent push পাঠান এবং সঠিক completionHandler-সহ didReceiveRemoteNotification কল হচ্ছে কিনা তা চেক করুন। Xcode-এ, ব্যাকগ্রাউন্ড মোড সিমুলেশন সহ সিমুলেটর ব্যবহার করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন