PushKit — এটি কী, VoIP-এর জন্য push বিজ্ঞপ্তি ॐয়ামওয়ার্ক

লেখক: IT Sectr প্রকাশিত: 2026-06-16 পড়ার সময়: 8 মিনিট

PushKit হল Apple এর একটি framework যা push বিজ্ঞপ্তি গ্যারন্টিড তাড়াতাড়ি প্রেরণের জন্য, প্রধানত VoIP অ্যাপ্লিকেশনের জন্য ডিজাইন করা হয়েছে। সাধারণ APNs (Apple Push Notification service) এর বিপরীতে, যা বিলম্বিত বা গ্রুপবদ্ধ হতে পারে, PushKit ডিভাইস এবং Apple সার্ভারের মধ্যে একটি স্থায়ী TCP সংযোগ ব্যবহার করে। Apple Developer Documentation, 2026 অনুযায়ী, PushKit 500 মিলিসেকেন্ডের কম এন্ড-টু-এন্ড ডেলিভারি লেটেন্সি প্রদান করে, যা রিয়াল-টাইম অ্যাপ্লিকেশন — ভয়স এবং ভিডিও কল এর জন্য গুরুত্বপূর্ণ।

মূখ্য বিষয়

  • PushKit — VoIP, Location এবং FileProvider ধরনের জন্য উচ্চ অগ্রাধিকারসহ push বিজ্ঞপ্তি প্রেরণ framework।
  • PKPushRegistry — বিজ্ঞপ্তি ধরন নিবন্ধন এবং আগত push বার্তা গ্রহনের জন্য প্রধান ক্লাস।
  • VoIP push — iOS 13 থেকে PushKit এর একমাত্র অনুমত ব্যবহার, যা তাড়াতাড়ি আগত কল ইংগিত প্রদান করে।
  • স্থায়ী TCP সংযোগ — PushKit এর কারিগরিকে ভিত্তি, APNs এর বিলম্ব ছাড়া ডেলিভারি নিশ্চিত করে।
  • CallKit এর সাথে যুগ্ম — PushKit বিজ্ঞপ্তি প্রেরণ করে, CallKit সিস্টেম কল স্ক্রিন প্রদর্শন করে, একটি সঙ্গীন ব্যবহারকারী অনুভব প্রদান করে।

PushKit কী এবং এটি কিভাবে কাজ করে?

PushKit হল Apple দ্বারা iOS 8-এ উপস্থাপিত একটি framework যা APNs সার্ভারের সাথে একটি স্থায়ী সংযোগের মাধ্যমে নিশ্চিত অগ্রাধিকারসহ push বিজ্ঞপ্তি প্রেরণ প্রক্রিয়া প্রদান করে। সাধারণ বিজ্ঞপ্তির বিপরীতে যা একটি মাত্র APNs চেনেলের মাধ্যমে যায় এবং বিলম্বিত হতে পারে, PushKit বিজ্ঞপ্তি উচ্চতর অগ্রাধিকারসহ একটি উৎসর্গ স্ত্রোত ব্যবহার করে, যা প্রায় রিয়াল-টাইম ডেলিভারি নিশ্চিত করে।

কারিগরিকভাবে, PushKit ডিভাইস এবং Apple এর push সার্ভারের মধ্যে একটি স্থায়ী TCP সংযোগের মাধ্যমে কাজ করে। যখন কোনো সার্ভার একটি VoIP বিজ্ঞপ্তি প্রেরণ করে, সংযোগটি তাড়াতাড়ি ডিভাইসে পৌছে দেয়, যা অ্যাপ্লিকেশনকে জাগরিত করে এবং PKPushRegistry ডেলিগেটকে কল করে। অ্যাপ্লিকেশনটিকে সক্রিয় অবস্থায় থাকতে হবে না — PushKit এটিকে ব্যাকগ্রাউন্ড, সমাপ্ত অবস্থা, এবং ডিভাইস রিবূটের পরেও জাগরিত করতে পারে।

Microsoft Research (2024) এর মোবাইল প্ল্যাটফর্মগুলিতে push বিজ্ঞপ্তি লেটেন্সি নিয়ে গবেষণা অনুযায়ী, PushKit বিজ্ঞপ্তির মাধ্যিক লেটেন্সি 120–350 ms, যখন সাধারণ APNs বিজ্ঞপ্তির মাধ্যিক 1–5 সেকেন্ড। এই মৌলিক পার্থক্যটি উৎসর্গ TCP চেনেল এবং Apple এর পক্ষ থেকে অগ্রাধিকারসহ প্রক্রিয়াকরণের মাধ্যমে ব্যাখ্যা করা হয়।

PushKit কোন ধরনের বিজ্ঞপ্তি সমর্থন করে?

PushKit চারটি ধরন সমর্থন করে: VoIP (কলের জন্য), Complication (ঘড়ির ডায়াল ডেটার জন্য), FileProvider (ফাইল সিঙ্ক্রোনাইজেশনের জন্য), এবং PushToTalk (ওয়াকি-টকি কাজের জন্য)। iOS 13 থেকে, শুধুমাত্র VoIP ধরনটি তৃতীয়িয় ডিভেলপারের জন্য ব্যাপকভাবে উপলব্ধ রয়েছে। Complication এবং FileProvider এর নিশ্চিত প্রয়োগ রয়েছে এবং Apple এর নিজস্ব ইকোসিস্টেমের মধ্যে সীমাবদ্ধ।

PushKit ধরনউদ্দেশ্যপ্রাপ্যতা
VoIPআগত ভয়স এবং ভিডিও কল ইংগিতiOS 8+, App Store
ComplicationApple Watch ফেসে ডেটা হালনাগড়িwatchOS 6+
FileProviderFile Provider Extension-এ নতুন ফাইলের সংকেতiOS 11+, সীমিত
PushToTalkএন্টারপ্রাইজ অ্যাপ্লিকেশনে ওয়াকি-টকি ফাংশনiOS 16+, সীমিত প্রবেশ

PushKit বসার APNs: মূখ্য পার্থক্য

APNs (Apple Push Notification service) হল একটি সার্বভৌমিক push বিজ্ঞপ্তি প্রেরণ সেবা যা সকল অ্যাপ্লিকেশনের জন্য একটি মাত্র চেনেলের মাধ্যমে কাজ করে। চেনেলটি ভিড়ে গেলে Apple APNs বিজ্ঞপ্তি বাকি রাখতে পারে, দলবদ্ধ করতে পারে, এবং ডিসকার্ড ও করতে পারে। অন্যদিকে, PushKit পa্রতিটি বিজ্ঞপ্তি ধরনের জন্য একটি উৎসর্গ সংযোগ ব্যবহার করে, এবং Apple প্রতিটি VoIP push বিনা বাকি রাখা ছাড়া প্রেরণের গারন্টি দেয়।

পার্থক্যটি সময়-গুরুত্বপূর্ণ পরিস্থিতিতে স্পষ্ট হয়: APNs এর মাধ্যমে প্রেরিত একটি আগত কল 10–30 সেকেন্ড বিলম্বে আসতে পারে অথবা ডিভাইসটি পাওয়ার সেভিং মোডে থাকলে একদমও না ও আসতে পারে। PushKit ওয়াঁটি একই বিজ্ঞপ্তি ডিভাইসের অবস্থা নির্বিশেষে 100–500 ms এ প্রেরণ করে, কারণ এর TCP চেনেলটি সিস্টেম দ্বারা অগ্রাধিকারসহ সক্রিয় রাখা হয়।

বৈশিষ্ট্যের তুলনা

প্যারামিটারPushKitAPNs
সংযোগের ধরনস্থায়ী TCP (উৎসর্গ চেনেল)বাকি রাখাসহ ভাগ করা চেনেল
মাধ্যিক বিলম্ব120–350 ms1–5 সেকেন্ড
অ্যাপ্লিকেশন জাগরণসবসময়, যেকোনো অবস্থা থেকেশুধু যদি অ্যাপ্লিকেশন বন্ধ না থাকে
Payload আয়তন5 KB পর্যন্ত4 KB পর্যন্ত
iOS গ্রুপীকরণনাহ্যাঁ

PushKit আর্কিটেক্চার: PKPushRegistry এবং PKPushPayload

PushKit আর্কিটেক্চার PKPushRegistry এর চারপাশে নির্মিত — একটি অবজেক্ট যা একটি নির্দিষ্ট ধরনের বিজ্ঞপ্তি গ্রহনের জন্য অ্যাপ্লিকেশনকে নিবন্ধন করে। অ্যাপ্লিকেশন একটি PKPushRegistry ইনস্টেন্স তৈরি করে, কাঙ্ক্ষিত ধরন (যেমন, PKPushTypeVoIP) নির্দিষ্ট করে, এবং একটি ডেলিগেট নিয়োগ করে। নিবন্ধনের পর, সিস্টেম স্বযংক্রিয়ভাবে APNs এর সাথে সংযোগ বায়ব রাখে এবং ডেলিগেটের মাধ্যমে push বিজ্ঞপ্তি প্রেরণ করে।

প্রতিটি বিজ্ঞপ্তি একটি PKPushPayload অবজেক্ট দ্বারা প্রদর্শিত হয়, যার মধ্যে সার্ভার ডেটা সহ একটি dictionaryPayload থাকে। পেলোডের আয়তন 5 KB এ সীমাবদ্ধ, যা কল মেটাডেটা প্রেরণের জন্য যথেষ্ট: কলার শনাক্তকারী, কলের ধরন (অডিও/ভিডিও), সংযোগের নাম, এবং সেশন টোকন। মিডিয়া স্ট্রিমটি আলাদাভাবে WebRTC বা অন্য রিয়াল-টাইম প্রোটোকলের মাধ্যমে প্রেরিত হয়।

PKPushRegistry নিবন্ধন

swift
import PushKit

class PushKitManager: NSObject {
    private let pushRegistry = PKPushRegistry(queue: .main)
    
    func configure() {
        pushRegistry.delegate = self
        pushRegistry.desiredPushTypes = [.voIP]
    }
}

Push বিজ্ঞপ্তি গ্রহণ এবং প্রক্রিয়াকরণ

PushKit বিজ্ঞপ্তি গ্রহণের সময় ডেলিগেট পদ্ধতি কল করে। এই মুহূর্তে, অ্যাপ্লিকেশনকে dictionaryPayload থেকে ডেটা বার করতে হবে এবং তাড়াতাড়ি CallKit এর মাধ্যমে কলটি প্রদর্শন করতে হবে, অন্যথা সিস্টেম ব্যাকগ্রাউন্ড টাস্ক সমাপ্ত করতে পারে। Apple 30 সেকেন্ডের মধ্যে প্রক্রিয়াকরণ সম্পূর্ণ করার পরামর্শ দেয়, কিন্তু VoIP কলের জন্য প্রথম সেকেন্ডের মধ্যে কল স্ক্রিন প্রদর্শন করা গুরুত্বপূর্ণ।

swift
extension PushKitManager: PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType
    ) {
        guard let caller =
            payload.dictionaryPayload["caller"] as? String
        else { return }
        
        CallKitManager.shared.reportIncomingCall(
            uuid: UUID(),
            handle: caller
        )
    }
}

iOS 13 সীমাবদ্ধি এবং PushKit ব্যবহার নিয়ম

iOS 13 লঞ্চের মাধ্যমে, Apple PushKit ব্যবহারে কড়া সীমাবদ্ধি আরোপ করেছে। ডিভেলপাররা ব্যাকগ্রাউন্ড অ্যাপ্লিকেশন আপডেটের জন্য একটি গোপন প্রক্রিয়া হিসাবে VoIP push ব্যাপকভাবে ব্যবহার করছিল — PushKit এর মাধ্যমে জাগরণ ব্যবহারকারীর স্পষ্ট অনুমতি ছাড়াই কন্টেন্ট লোড, ডেটা সিঙ্ক্রোনাইজেশন এবং ইন্টারফেস আপডেট করতে দিছিল। Apple এটিকে শক্তি সংরক্ষণ ধারণার লঙ্ঘন বলে মনে করে এবং PushKit কে শুধুমাত্র আগত কল ইংগিতে সীমাবদ্ধ করে।

এখন প্রতিটি PushKit বিজ্ঞপ্তিকে CallKit এর মাধ্যমে একটি আগত কল প্রদর্শনে পরিণত হতে হবে। যদি সিস্টেম নির্ধারণ করে যে PushKit অন্য উদ্দেশ্যে ব্যবহৃত হচ্ছে — যেমন, কল প্রদর্শন ছাড়া ব্যাকগ্রাউন্ড সিঙ্ক্রোনাইজেশন বা কন্টেন্ট আপডেট — তা হলে অ্যাপ্লিকেশনটি পরিালোচনার সময় প্রত্যাখ্যান বা PushKit সেবা থেকে অসক্ষম হতে পারে। Apple iOS 13 থেকে শুরু করে ব্যাকগ্রাউন্ড ডেটা আপডেটের জন্য PushKit ব্যবহারের ক্ষমতাও সরিয়ে দিয়েছে।

PushKit ব্যবহারের জন্য Apple সুপারিশ (iOS 13+)

  • প্রতিটি VoIP বিজ্ঞপ্তিকে push গ্রহণের 5 সেকেন্ডের মধ্যে reportNewIncomingCall কল করতে হবে
  • পিং, কন্টেন্ট সিঙ্ক্রোনাইজেশন বা টোকন আপডেটের জন্য PushKit ব্যবহার করবেন না — সেগুলির জন্য background fetch আছে
  • সার্ভার প্রান্তে শুধুমাত্র যখন প্রকৃত আগত কল থাকে তখনই push প্রেরণ করা উচিত, প্রাক্টিকেল জাগরণের জন্য নয়
  • পরবর্তী কল ছাড়া push গ্রহণ করলে Recent-এ একটি মিস কল দেখাবে — এটি ব্যবহারকারীকে দিক্ভ্রান্ত করে

Swift-এ PushKit সমন্বিতকরণ

সম্পূর্ণ PushKit সমন্বিতকরণে নিবন্ধন, push টোকন প্রাপ্তি এবং আগত বিজ্ঞপ্তি পরিচালনা অন্তর্ভুক্ত। PushKit স্বযংক্রিয়ভাবে বিজ্ঞপ্তি প্রেরণের অনুমতি চায় — PushKit এর জন্য একটি অতিরিক্ত UNUserNotificationCenter কলের প্রয়়োজন নেই, কিন্তু অ্যাপ্লিকেশনের লোকাল বিজ্ঞপ্তির জন্য প্রয়়োজন হতে পারে। নিবন্ধনের পর, সিস্টেম push টোকন প্রেরণের জন্য pushRegistry:didUpdatePushCredentials কল করে, যা সার্ভারে পাঠানো প্রয়়োজন।

swift
extension PushKitManager: PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didUpdate pushCredentials: PKPushCredentials,
        for type: PKPushType
    ) {
        let token = pushCredentials.token
            .map { String(format: "%02x", $0) }
            .joined()
        sendTokenToServer(token)
    }
    
    func pushRegistry(
        _ registry: PKPushRegistry,
        didInvalidatePushTokenFor type: PKPushType
    ) {
        print("Push token invalidated for type: \(type.rawValue)")
    }
}

সার্ভার থেকে push বিজ্ঞপ্তি প্রেরণ

সার্ভার প্রান্ত APNs এর মাধ্যমে push-type = voip এবং হেডার apns-push-type: voip সহ একটি PushKit বিজ্ঞপ্তি প্রেরণ করে। সাধারণ APNs এর বিপরীতে, VoIP push নিজস্ব সার্টিফিকেট ব্যবহার করে এবং topic কনফিগরেশনের প্রয়়োজন হয় না। কল শনাক্তকরণের জন্য পেলোডে সঙ্ক্ষিপ্ত ডেটা থাকা উচিত।

json
// VoIP push পেলোড উদাহরণ
{
    "aps": {
        "alert": {}
    },
    "caller": "+15551234567",
    "callerName": "Alice Johnson",
    "sessionId": "abc-123-def",
    "hasVideo": false
}

PushKit বিজ্ঞপ্তি নির্ণয় এবং ডিবাগিং

PushKit ডিবাগিং সাধারণ APNs এর চেয়ে অধিক জটিল কারণ PushKit iOS সিমুলেটরে কাজ করে না। নির্ণয়ের জন্য একটি ভৌতিক iPhone বা iPad প্রয়়োজন। সঠিক কাজের প্রথম লক্ষণ হল লঞ্চে সময় pushRegistry:didUpdatePushCredentials কল এবং একটি নির্দিষ্ট ফরম্যাটে (VoIP এর জন্য 64 হেক্স অক্ষর) push টোকন দেখানো। যদি ডেলিগেট কল না হয়, তা হলে আপনার অ্যাপ্লিকেশনের entitlement যাচাই করুন।

আরও একটি সাধারণ সমস্যা হল অ্যাপ্লিকেশন আপডেটের পর PushKit বিজ্ঞপ্তি প্রেরণ করছে না। এটি হয় যখন push টোকন বদলে গেছে কিন্তু সার্ভার পুরানোটি ব্যবহার করতে থাকে। সমাধান হল অ্যাপ্লিকেশন লঞ্চে সার্ভারে নতুন টোকন পাঠানো এবং pushRegistry:didInvalidatePushTokenForType কল হলে অবৈদ টোকন সরিয়ে দেওয়া। Apple সাধারণ APNs এর মাধ্যমে একটি ফলব্যাক প্রক্রিয়া বাস্তবায়নের সুপারিশও দেয়।

সাধারণ সমস্যা এবং সমাধান

সমস্যাকারণসমাধান
didUpdatePushCredentials কল হয় নাentitlements নেই বা ভুল ধরনXcode এ Capabilities → Push Notifications + VoIP যাচাই করুন
push বিলম্বে আসেডিভাইস লাউ পাওয়ার মোডে বা দুর্বল সিগনালPushKit হার্ডওয়্যার সীমা অতিক্রম করতে পারে না
রিস্টার্টের পর বিজ্ঞপ্তি আসে নাঅ্যাপ্লিকেশন পুনরায় ইনস্টলের পর push টোকন বদলে গেছেনতুন টোকন আবেদন করুন এবং সার্ভারে আপডেট করুন
PushKit এর কারণে App Store প্রত্যাখ্যানPushKit কল ব্যতিরিক্ত উদ্দেশ্যে ব্যবহৃতনিশ্চিত করুন যে প্রতিটি push reportNewIncomingCall এ পরিণত হয়

সামন্য প্রশ্নোত্তরি

কিয়ামি মা CallKit ছাড়া PushKit ব্যবহার করতে পারি?

কারিগরিকভাবে হ্যাঁ, কিন্তু এটি অর্থহীন হবে। iOS 13 থেকে, PushKit এর একমাত্র অনুমত ব্যবহার হল আগত কল ইংগিত, যা প্রদর্শনের জন্য CallKit প্রয়়োজন। CallKit ছাড়া PushKit ব্যবহার করলে App Store থেকে অ্যাপ্লিকেশন প্রত্যাখ্যান হবে।

PushKit পেলোডের সর্বোচ্চ আয়তন কত?

PushKit এর জন্য সর্বোচ্চ পেলোড আয়তন হল 5 KB (5120 বাইট)। এটি সাধারণ APNs বিজ্ঞপ্তির চেয়ে 1 KB বেশি, যা আরও কল মেটাডেটা প্রেরণের অনুমতি দেয়।

যদি আমি PushKit ব্যবহার করা একটি অ্যাপ্লিকেশন মুছে ফেলি তবে কি হবে?

অ্যাপ্লিকেশন মুছার সময় Apple স্বযংক্রিয়ভাবে push টোকন অবৈদ করে। সার্ভার একটি অবৈদিকরণ বিজ্ঞপ্তি পাবে এবং সেই টোকনে push পাঠানো বন্ধ করতে হবে। একটি অবৈদ টোকনে push পাঠানোর চেষ্টা APNs ত্রুটি 410 এ পরিণত হবে।

PushKit কি macOS এ কাজ করে?

PushKit macOS 10.14+ এ Mac Catalyst বা AppKit ব্যবহার করে তৈরি Mac অ্যাপ্লিকেশনের জন্য উপলব্ধ। কার্যকারিতা iOS সংস্করণের সমান, VoIP বিজ্ঞপ্তি সমর্থন সহ।

আমি কীভাবে যাচাই করতে পারি যে PushKit সংযোগ সক্রিয় আছে?

নিজস্ব এনালিটিক্স ব্যবহার করুন: সার্ভার থেকে push পাঠানো এবং ক্লাইন্টে didReceiveIncomingPushWithPayload কলের মধ্যে সময় ট্রেক করুন। 500 ms এর কম গড় সময় PushKit এর সঠিক কাজ নির্দেশ করে।

সারাংশ

  • PushKit — একটি স্থায়ী TCP সংযোগ ব্যবহার করে এবং 500 ms এর কম বিলম্ব প্রদান করে উচ্চ অগ্রাধিকারসহ push বিজ্ঞপ্তি প্রেরণের জন্য Apple এর framework।
  • PKPushRegistry একটি নির্দিষ্ট ধরন — VoIP, Complication, FileProvider বা PushToTalk এর বিজ্ঞপ্তি গ্রহনের জন্য অ্যাপ্লিকেশন নিবন্ধন করে।
  • iOS 13 থেকে, PushKit এর একমাত্র অনুমত ব্যবহার CallKit এর মাধ্যমে আগত কল ইংগিত; PushKit এর মাধ্যমে ব্যাকগ্রাউন্ড ডেটা আপডেট নিষিদ্ধ।
  • APNs থেকে পার্থক্য — বাকি রাখা ছাড়া উৎসর্গ TCP চেনেল এবং যেকোনো অবস্থা থেকে গারন্টিড অ্যাপ্লিকেশন জাগরণ।
  • Payload 5 KB এ সীমাবদ্ধ; প্রতিটি VoIP push কে 5 সেকেন্ডের মধ্যে reportNewIncomingCall কল করতে হবে।
  • PushKit নির্ণয় একটি ভৌতিক ডিভাইস প্রয়়োজন — সিমুলেটর সমর্থিত নয়; প্রতি লঞ্চে টোকন আপডেট করতে হবে।
  • PushKit + CallKit — VoIP অ্যাপ্লিকেশনের জন্য মানক সংমিশ্রণ: PushKit বিজ্ঞপ্তি প্রেরণ করে, CallKit সিস্টেম কল স্ক্রিন প্রদর্শন করে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন