APNS (Apple Push Notification Service) হল Apple-এর পরিকাঠামো পরিষেবা যা ইকোসিস্টেম ডিভাইস — iPhone, iPad, Mac, Apple Watch এবং Apple TV —-এ push বিজ্ঞপ্তি পৌঁছে দেওয়ার জন্য। পরিষেবাটি ডিভাইস এবং Apple সার্ভারের মধ্যে স্থায়ী TLS সংযোগের মাধ্যমে নির্ভরযোগ্য বার্তা বিতরণ নিশ্চিত করে। Apple Developer Documentation অনুসারে, APNS অ্যাপ্লিকেশন সার্ভারের সাথে দ্বিমুখী যোগাযোগের জন্য HTTP/2 প্রোটোকল ব্যবহার করে।
মুখ্য বিষয়
Apple Push Notification Service (APNS) হল Apple-এর মালিকানাধীন পরিষেবা যা অ্যাপ্লিকেশন সার্ভার থেকে ব্যবহারকারীদের ডিভাইসে push বিজ্ঞপ্তি রাউট করে। FCM-এর বিপরীতে, APNS Android বা অন্যান্য প্ল্যাটফর্ম সমর্থন করে না — এটি সম্পূর্ণরূপে Apple ইকোসিস্টেমের সাথে আবদ্ধ।
পরিষেবাটি একটি স্থায়ী TLS সংযোগের মাধ্যমে কাজ করে যা প্রতিটি Apple ডিভাইস স্টার্টআপে APNS সার্ভারের সাথে স্থাপন করে। এই সংযোগ ব্যাকগ্রাউন্ডে রক্ষণাবেক্ষণ করা হয় এবং ন্যূনতম বিলম্বে বিজ্ঞপ্তি পৌঁছে দিতে ব্যবহৃত হয়।
APNS সমস্ত বিতরণ পরিকাঠামো পরিচালনা করে: এনক্রিপশন, প্রমাণীকরণ, অগ্রাধিকার নির্ধারণ এবং ডিভাইস অনুপলব্ধ থাকলে পুনঃপ্রেরণ। ডেভেলপারের শুধুমাত্র সঠিকভাবে ফরম্যাট করা পেলোড এবং একটি বৈধ push টোকেন প্রদান করতে হবে।
মূলত, APNS পোর্ট 2195–2196-এ বাইনারি প্রোটোকলের মাধ্যমে কাজ করত। 2015 থেকে, Apple পরিষেবাটিকে আধুনিক HTTP/2 প্রোটোকলে স্থানান্তরিত করেছে, যা মাল্টিপ্লেক্সিং, হেডার কম্প্রেশন এবং সার্ভার push বিজ্ঞপ্তি সমর্থন করে। HTTP/2 জুন 2020 থেকে বাধ্যতামূলক হয়েছে।
APNS-এর মাধ্যমে push বিজ্ঞপ্তি বিতরণ প্রক্রিয়া পাঁচটি ধাপ নিয়ে গঠিত: ডিভাইস নিবন্ধন, push টোকেন প্রাপ্তি, সার্ভার দ্বারা অনুরোধ পাঠানো, APNS রাউটিং এবং ডিভাইসে বিতরণ।
যদি ডিভাইস অনুপলব্ধ হয় (বন্ধ বা নেটওয়ার্ক নেই), APNS প্রতিটি অ্যাপের জন্য সর্বশেষ বার্তা সংরক্ষণ করে এবং সংযোগ পুনরুদ্ধার হলে তা বিতরণ করে। সর্বোচ্চ সংরক্ষণ সময় 4 সপ্তাহ, তারপর বার্তাটি মুছে ফেলা হয়।
Apple push বিজ্ঞপ্তি পাঠানোর সময় অ্যাপ্লিকেশন সার্ভার প্রমাণীকরণের জন্য দুটি পদ্ধতি সমর্থন করে। প্রতিটি পদ্ধতির বৈধতা সময়কাল, ব্যবস্থাপনা এবং ব্যবহারের সহজতার ক্ষেত্রে নিজস্ব বৈশিষ্ট্য রয়েছে।
| প্যারামিটার | Token-ভিত্তিক (p8) | Certificate-ভিত্তিক (.p12) |
|---|---|---|
| বৈধতা | অনির্দিষ্টকালীন (কী মেয়াদোত্তীর্ণ হয় না) | সার্টিফিকেটের বৈধতা পর্যন্ত সীমিত (সাধারণত 1 বছর) |
| রোটেশন | প্রয়োজন নেই যদি না কী আপোস করা হয় | বার্ষিক প্রতিস্থাপন বাধ্যতামূলক |
| মাল্টি-অ্যাপ | অ্যাকাউন্টের সব অ্যাপের জন্য একটি কী | প্রতিটি অ্যাপের জন্য পৃথক সার্টিফিকেট |
| এনভায়রনমেন্ট | Sandbox এবং Production-এর জন্য একটি কী | Sandbox এবং Production-এর জন্য আলাদা সার্টিফিকেট |
Token-ভিত্তিক প্রমাণীকরণ 2019 থেকে Apple-প্রস্তাবিত পদ্ধতি। আপনি Apple Developer Console-এ একটি p8 কী তৈরি করেন, এটি আপনার সার্ভারে আপলোড করেন এবং প্রতিটি APNS অনুরোধে স্বাক্ষর করেন। কী কখনও মেয়াদোত্তীর্ণ হয় না এবং আপনার অ্যাকাউন্টের সমস্ত অ্যাপের জন্য কাজ করে।
নতুন প্রকল্পের জন্য, Token-ভিত্তিক প্রমাণীকরণ স্পষ্টভাবে পছন্দনীয়: পুরো অ্যাকাউন্টের জন্য একটি p8 কী, অনির্দিষ্টকালীন, এনভায়রনমেন্টের সাথে আবদ্ধ নয়। Certificate-ভিত্তিক (.p12) এখনও লিগেসি প্রকল্পে ব্যবহৃত হয় কিন্তু বার্ষিক প্রতিস্থাপন এবং Sandbox ও Production-এর জন্য পৃথক সার্টিফিকেট প্রয়োজন। CI/CD পরিকল্পনা করার সময় সার্টিফিকেটের মেয়াদোত্তীর্ণতা বিবেচনা করুন।
APNS তিন ধরণের push বিজ্ঞপ্তি সমর্থন করে, যা ডিভাইসে তাদের আচরণ এবং অনুরোধ বৈশিষ্ট্যের প্রয়োজনীয়তায় ভিন্ন। ধরণের পছন্দ UX পরিস্থিতি এবং বার্তার জরুরিতার উপর নির্ভর করে।
Background বিজ্ঞপ্তির জন্য, আপনাকে content-available: 1 কী নির্দিষ্ট করতে হবে এবং অগ্রাধিকার 5 (শক্তি-সাশ্রয়ী বিতরণ) সেট করতে হবে। সিস্টেম ব্যাকগ্রাউন্ড বিজ্ঞপ্তির সংখ্যা সীমিত করতে পারে যদি অ্যাপ সেগুলি সময়মত প্রক্রিয়া না করে।
APNS দুটি অগ্রাধিকার মান সমর্থন করে: 10 (তাৎক্ষণিক বিতরণ) এবং 5 (শক্তি-সাশ্রয়ী)। Alert বিজ্ঞপ্তির জন্য 10 ব্যবহার করুন — ব্যবহারকারীর সেগুলি এখনই পাওয়া উচিত। ব্যাকগ্রাউন্ড বিজ্ঞপ্তির জন্য 5 ব্যবহার করুন — সিস্টেম ব্যাটারি বাঁচাতে বিতরণে বিলম্ব করতে পারে। ব্যাকগ্রাউন্ডের জন্য ভুল অগ্রাধিকার APNS প্রত্যাখ্যানের কারণ হতে পারে।
APNS সাধারণ বিজ্ঞপ্তির জন্য সর্বোচ্চ 4 KB এবং VOIP-এর জন্য 5 KB আকারসহ JSON ফরম্যাটে পেলোড গ্রহণ করে। পেলোডে প্রদর্শন সেটিংসসহ বাধ্যতামূলক aps অভিধান এবং ঐচ্ছিক কাস্টম ফিল্ড থাকে।
{
"aps": {
"alert": {
"title": "নতুন বার্তা",
"body": "আপনার 3টি অপঠিত চ্যাট আছে"
},
"badge": 3,
"sound": "default",
"category": "message_category",
"thread-id": "chat_room_42"
},
"customData": {
"chatId": "42"
}
}
thread-id কী iOS নোটিফিকেশন সেন্টারে বিজ্ঞপ্তি গ্রুপ করে। category কী অ্যাকশন বাটন প্রদর্শনের জন্য বিজ্ঞপ্তিকে UNNotificationCategory-এর সাথে লিঙ্ক করে। এই কীগুলি ছাড়া, সমস্ত বিজ্ঞপ্তি পৃথকভাবে প্রদর্শিত হয়।
বাধ্যতামূলক aps অভিধান ছাড়াও, APNS পেলোডে শীর্ষ স্তরে যেকোনো কাস্টম ফিল্ড থাকতে পারে। এই ফিল্ডগুলি বিজ্ঞপ্তি প্রক্রিয়াকরণের সময় userInfo অভিধানের মাধ্যমে অ্যাপের জন্য অ্যাক্সেসযোগ্য। কাস্টম ডেটা এন্টিটি আইডেন্টিফায়ার, স্ক্রিন বা লিঙ্ক পাস করার জন্য সুবিধাজনক। সর্বোচ্চ পেলোড আকার 4 KB, তাই push-এর মাধ্যমে বড় ডেটা স্থানান্তর এড়িয়ে চলুন; বিজ্ঞপ্তি খোলার পরে API-র মাধ্যমে লোড করুন।
সার্ভার থেকে push বিজ্ঞপ্তি পাঠানোর জন্য, আপনাকে সঠিক প্রমাণীকরণ হেডারসহ APNS এন্ডপয়েন্টে POST অনুরোধ সম্পাদন করতে হবে। নীচে Token-ভিত্তিক প্রমাণীকরণ ব্যবহার করে Node.js-এ একটি উদাহরণ দেওয়া হল।
const http2 = require("http2")
const fs = require("fs")
const jwt = require("jsonwebtoken")
const token = jwt.sign(
{ iss: "TEAM_ID", iat: Math.floor(Date.now() / 1000) },
fs.readFileSync("AuthKey.p8"),
{ algorithm: "ES256", keyid: "KEY_ID" }
)
const payload = JSON.stringify({
aps: { alert: { title: "হ্যালো!", body: "পরীক্ষামূলক push" } }
})
const client = http2.connect(
"https://api.push.apple.com"
)
const req = client.request({
":method": "POST",
":path": "/3/device/DEVICE_PUSH_TOKEN",
"authorization": "bearer " + token,
"apns-push-type": "alert",
"apns-topic": "com.example.app",
"apns-priority": "10"
})
req.end(payload)
req.on("response", (headers) => {
if (headers[":status"] === 200) {
console.log("Push সফলভাবে পাঠানো হয়েছে")
}
})
পাঠানোর পর, APNS সফল বিতরণে HTTP অবস্থা 200 বা প্রতিক্রিয়া বডিতে বিবরণসহ ত্রুটি কোড ফেরত দেয়। token-unregistered (410) ত্রুটিগুলি হ্যান্ডেল করা গুরুত্বপূর্ণ — এই জাতীয় টোকেন সার্ভার থেকে সরানো উচিত, কারণ অ্যাপ ডিভাইস থেকে মুছে ফেলা হয়েছে।
APNS প্রতিটি পাঠানোর অনুরোধের জন্য HTTP অবস্থা কোড ফেরত দেয়। সফল বিতরণ অবস্থা 200 ফেরত দেয়। ত্রুটিগুলির জন্য ভিন্ন হ্যান্ডলিং কৌশল প্রয়োজন। BadDeviceToken (400) বা Unregistered (410) — ডিভাইস টোকেন পুরানো এবং সার্ভার থেকে সরানো উচিত। PayloadTooLarge (413) — 4 KB সীমা অতিক্রম করেছে, পেলোড কমিয়ে দিন।
TooManyRequests (429) — অনুরোধের সীমা অতিক্রম করেছে। APNS প্রতি সেকেন্ডে পাঠানোর সংখ্যার উপর কোটা নির্ধারণ করে। 429 পাওয়ার পর, এক্সপোনেনশিয়াল ব্যাকঅফ প্রয়োগ করুন এবং পুনরায় চেষ্টা করুন। প্রতি HTTP/2 সংযোগে প্রতি সেকেন্ডে 100 অনুরোধের বেশি না করার পরামর্শ দেওয়া হয়।
APNS-পার্শ্ব ত্রুটি — 500 এবং 503 (অভ্যন্তরীণ সার্ভার ত্রুটি / পরিষেবা অনুপলব্ধ)। এগুলি Apple-এর পরিকাঠামোর অস্থায়ী ব্যর্থতা। এই ধরনের ক্ষেত্রে, 1-5 সেকেন্ড বিলম্বে পুনরায় চেষ্টা করুন, 3 বারের বেশি নয়। সম্পূর্ণ কার্যকরী সার্ভারের সাথে স্থায়ী 5xx ত্রুটি বিরল এবং সাধারণত TLS সংযোগ সমস্যার সাথে সম্পর্কিত।
Production পরিবেশের জন্য, টোকেন, ত্রুটি কোড এবং সময়সহ সমস্ত APNS ত্রুটির লগিং বাস্তবায়ন নিশ্চিত করুন। এটি সার্টিফিকেট, কোটা বা নির্দিষ্ট ডিভাইস টোকেনের সমস্যা দ্রুত সনাক্ত করতে সাহায্য করবে। Certificate-ভিত্তিক প্রমাণীকরণ ব্যবহার করলে নিয়মিত সার্টিফিকেটের মেয়াদোত্তীর্ণ তারিখ পরীক্ষা করুন।
সচরাচর জিজ্ঞাসিত প্রশ্ন
APNS HTTP/2 API-র জন্য TCP 443 (HTTPS) এর মাধ্যমে কাজ করে। পূর্বে, বাইনারি প্রোটোকলের জন্য পোর্ট 2195 এবং 2196 ব্যবহৃত হত। জুন 2020 থেকে, Apple পোর্ট 443-এ একচেটিয়াভাবে HTTP/2 ব্যবহারের প্রয়োজন। নিশ্চিত করুন আপনার সার্ভারের api.push.apple.com-এ অ্যাক্সেস আছে।
Sandbox হল push বিজ্ঞপ্তি ডিবাগ করার জন্য APNS পরীক্ষার পরিবেশ। Production হল প্রকৃত ব্যবহারকারীদের জন্য লাইভ পরিবেশ। Token-ভিত্তিক প্রমাণীকরণের সাথে, একটি কী উভয় পরিবেশের জন্য কাজ করে — এন্ডপয়েন্ট ভিন্ন: api.sandbox.push.apple.com বা api.push.apple.com।
Push টোকেন পরিবর্তিত হতে পারে যখন: অ্যাপ ব্যাকআপ থেকে পুনরুদ্ধার করা হয়, অ্যাপ পুনরায় ইনস্টল করা হয়, OS আপডেট করা হয়, নেটওয়ার্ক সেটিংস রিসেট করা হয়। টোকেন পরিবর্তিত হয় না App Store-এর মাধ্যমে নিয়মিত অ্যাপ আপডেটের সময়। সার্ভারের BadDeviceToken (400) ত্রুটিকে টোকেন সরানোর সংকেত হিসাবে হ্যান্ডেল করা উচিত।
সাধারণ alert/background বিজ্ঞপ্তির জন্য 4 KB (4096 বাইট)। PushKit-এর মাধ্যমে VOIP বিজ্ঞপ্তির জন্য — 5 KB (5120 বাইট)। আকার অতিক্রম করলে PayloadTooLarge (413) ত্রুটি ফেরত আসে। পেলোড ন্যূনতম রাখার এবং সার্ভারের মাধ্যমে অতিরিক্ত ডেটা লোড করার পরামর্শ দেওয়া হয়।
APNS ইন্টারনেট সংযোগ ছাড়া ডিভাইসে বিজ্ঞপ্তি পৌঁছে দিতে পারে না। যদি ডিভাইস অফলাইন থাকে, APNS 28 দিন পর্যন্ত সর্বশেষ বার্তা (প্রতি অ্যাপ প্রতি ডিভাইস) সংরক্ষণ করে। সংযোগ পুনরুদ্ধার হলে, বার্তা তাৎক্ষণিকভাবে বিতরণ করা হয়। পুরানো বার্তা সংরক্ষিত হয় না।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন