PushKit — ano ito, framework ng VoIP notification para sa iOS

May-akda: IT Sectr Nai-publish: 2026-03-22 Oras ng pagbabasa: 8 min

Ang PushKit ay isang iOS framework para sa paghahatid ng mga VoIP notification na may mababang latency, na lumalampas sa karaniwang APNs. Ayon sa Apple Developer Documentation (2025), ginagarantiyahan ng PushKit ang paghahatid ng mga tawag sa loob ng 5 segundo kahit na nasa background mode. Ang mga VoIP notification ay direktang pinoproseso, nang hindi kailangang magpakita ng banner sa user, na ginagawang pangunahing kasangkapan ang framework para sa mga messenger at video app sa iOS.

Mga Pangunahing Punto

  • PushKit — iOS framework para sa paghahatid ng VoIP notification na may priyoridad at mababang latency.
  • Mga notification ay pinoproseso nang walang pagpapakita ng banner — nagigising ang app sa background para sa pagproseso ng tawag.
  • Pagpaparehistro ay ginagawa sa pamamagitan ng PKPushRegistry na may uri na pushType .voIP.
  • Pagkakaiba sa APNs — hindi gumagamit ang PushKit ng karaniwang channel ng notification at may mas mataas na priyoridad.
  • Mga Limitasyon — ang PushKit ay para lamang sa VoIP at hindi maaaring gamitin para sa ordinaryong push notification.

Ano ang PushKit

PushKit ay isang framework mula sa Apple, ipinakilala sa iOS 8, na nagbibigay ng paghahatid ng push notification na may mababang latency para sa mga VoIP app. Hindi tulad ng karaniwang APNs (Apple Push Notification service), pinapayagan ng PushKit ang app na magising sa background kapag may papasok na tawag, nang hindi nagpapakita ng notification sa user. Ito ay kritikal para sa mga voice at video app — natatanggap agad ng user ang tawag, kahit na sarado ang app. Ayon sa Apple WWDC 2024, pinoproseso ng PushKit ang mahigit 2 bilyong VoIP notification araw-araw sa buong mundo.

Paano gumagana ang PushKit

Ang mekanismo ng pagpapatakbo ay batay sa direktang koneksyon sa pagitan ng device at ng Apple push server, na lumalampas sa karaniwang channel ng notification. Kapag ang server ng app ay nagpadala ng VoIP notification, dumadaan ito sa isang dedikadong PushKit server at ihahatid sa device na may pinakamataas na priyoridad. Ginigising ng system ang app sa background at tinatawag ang paraan ng delegado na pushRegistry:didReceiveIncomingPushWithPayload:forType:. Natatanggap ng app ang payload, pinoproseso ang tawag, at tinatawag ang completion handler para sa kumpirmasyon. Ang buong cycle mula sa pagpapadala hanggang sa pagproseso ay tumatagal ng hindi hihigit sa 5 segundo, na kinumpirma ng Apple specification.

Mga pagkakaiba sa pagitan ng PushKit at APNs

Ang pangunahing pagkakaiba sa pagitan ng PushKit at APNs ay nasa mekanismo ng paghahatid at pagproseso. Gumagamit ang APNs ng karaniwang channel ng notification na may pagpapakita ng banner, tunog, o badge, samantalang ang PushKit ay naghahatid ng data nang direkta sa app nang walang biswal na notification. Nasa ibaba ang isang talahanayan ng paghahambing ng mga pangunahing tampok.

TampokPushKitAPNs
Priyoridad ng paghahatidMataas (agarang paghahatid)Katamtaman (posibleng pagkaantala)
Paggising ng appOo, sa backgroundKapag nag-click lamang sa notification
Pagpapakita ng bannerHindiOo (opsyonal)
GamitVoIP, tawag, videoAnumang uri ng notification
PayloadJSON lamang, walang mediaJSON + mga attachment

PushKit ay hindi rin sumusuporta sa mayayamang media attachment at hindi maaaring gamitin para sa ordinaryong marketing notification. Mahigpit na kinokontrol ng Apple ang paggamit ng PushKit — ang app ay dapat may malinaw na VoIP functionality, kung hindi ay tatanggihan ito sa pagsusuri. Ang APNs ay nananatiling unibersal na solusyon para sa lahat ng iba pang sitwasyon.

Pagpaparehistro at pagtanggap ng VoIP notification

Upang magamit ang PushKit, ang app ay dapat magparehistro sa pamamagitan ng PKPushRegistry na may uri na pushType .voIP. Ang pagpaparehistro ay ginagawa nang isang beses sa unang pagtakbo, pagkatapos ay bubuo ang system ng isang natatanging push token at ipapadala ito sa pamamagitan ng delegado. Ang token na ito ay ipinapadala sa server ng app para sa susunod na pagpapadala ng VoIP notification. Nasa ibaba ang isang halimbawa ng pagpaparehistro ng PushKit at pagkuha ng token sa Swift.

Pag-configure ng PushKit registration

swift
import PushKit

let registry = PKPushRegistry(queue: DispatchQueue.main)
registry.delegate = self
registry.desiredPushTypes = [.voIP]

// MARK: - PKPushRegistryDelegate
func pushRegistry(
    _ registry: PKPushRegistry,
    didUpdate pushCredentials: PKPushCredentials,
    for type: PKPushType
) {
    let deviceToken = pushCredentials.token
        .map { String.format("%02x", $0) }
        .joined()
    sendVoIPTokenToServer(deviceToken)
}

Pagkatapos tawagan ang desiredPushTypes na may PKPushType.voIP, awtomatikong humihingi ang system ng pahintulot na makatanggap ng VoIP notification. Sa paraang pushRegistry:didUpdatePushCredentials:forType: natatanggap ng app ang device token bilang Data, na ginagawang hex-string at ipinapadala sa server. Ang token ay natatangi para sa bawat device at nagbabago kapag muling na-install ang app — dapat pangasiwaan ng server ang pag-update ng token.

Pagtanggap ng papasok na notification

swift
func pushRegistry(
    _ registry: PKPushRegistry,
    didReceiveIncomingPushWith payload: PKPushPayload,
    for type: PKPushType,
    completion: @escaping VoidBlock
) {
    guard let caller = payload.dictionaryPayload["caller"] as? String else {
        completion()
        return
    }

    let update = CXCallUpdate()
    update.remoteHandle = CXHandle(type: .generic, value: caller)

    provider.reportNewIncomingCall(
        with: UUID(),
        update: update,
        completion: { error in
            if let error = error {
                print("Call error: \(error)")
            }
            completion()
        }
    )
}

Sa paraang didReceiveIncomingPushWith, natatanggap ng app ang payload na may data ng tawag. Pagkatapos kunin ang impormasyon tungkol sa tumatawag, gagawin ang isang CXCallUpdate mula sa CallKit framework para ipakita ang screen ng papasok na tawag. Mahalagang tawagan ang completion handler pagkatapos ng pagproseso — kung hindi, maaaring puwersahang tapusin ng system ang proseso ng app dahil sa pagkaubos ng oras. Ang maximum na oras ng pagproseso ay 30 segundo, pagkatapos ay itinuturing ng iOS ang notification na hindi naproseso.

Pangangasiwa ng mga papasok na tawag gamit ang CallKit

Ang PushKit ay malapit na isinama sa CallKit — ang framework para sa pagpapakita ng system interface ng tawag sa iOS. Kapag nakatanggap ang app ng VoIP notification sa pamamagitan ng PushKit, dapat itong lumikha ng CXProvider at CXCallController para sa pamamahala ng tawag. Awtomatikong ipinapakita ng CallKit ang screen ng papasok na tawag sa lock screen, kahit na naminimize ang app. Nasa ibaba ang isang halimbawa ng pag-configure ng CallKit provider.

swift
let config = CXProviderConfiguration(localizedName: "MyApp")
config.supportsVideo = true
config.maximumCallGroups = 1
config.maximumCallsPerCallGroup = 1
config.supportedHandleTypes = [.phoneNumber, .generic]

let provider = CXProvider(configuration: config)
provider.setDelegate(self, queue: nil)

CXProviderConfiguration ay tumutukoy sa hitsura at pag-uugali ng screen ng tawag — pangalan ng app, suporta sa video, bilang ng sabay-sabay na tawag. Ang pagsasama ng PushKit sa CallKit ay sapilitan para sa mga VoIP app: kung wala ito, hindi magpapakita ang system ng screen ng papasok na tawag, at mapalampas ng user ang tawag. Kinakailangan ng Apple ang paggamit ng CallKit para sa lahat ng app na gumagamit ng PushKit.

Mga tampok at limitasyon

Ang paggamit ng PushKit ay nagpapataw ng ilang mahigpit na limitasyon na itinakda ng Apple. Ang framework ay maaari lamang gamitin para sa VoIP functionality — anumang pagtatangka na magpadala ng marketing notification sa pamamagitan ng PushKit ay magreresulta sa pag-block ng app. Ang laki ng payload ay hindi dapat lumagpas sa 4 KB at maaari lamang maglaman ng JSON data nang walang mga attachment. Simula sa iOS 13, nagpatupad ang Apple ng limitasyon sa dalas ng pagpapadala ng VoIP notification — hindi hihigit sa isang notification bawat minuto bawat device. Dapat sundin ng server ang limitasyong ito, kung hindi ay tatanggihan ang mga notification ng system. Hindi rin gumagana ang PushKit sa iOS simulator — ang pagsubok ay posible lamang sa isang pisikal na device.

Istraktura ng PushKit payload

Ang payload ng VoIP notification ay isang JSON dictionary na may custom na data ng tawag. Hindi tulad ng APNs, hindi sinusuportahan ng PushKit ang mga standard field na alert, badge, at sound — lahat ng data ay tinutukoy ng developer. Ang tipikal na istraktura ay may kasamang identifier ng tumatawag (caller), uri ng tawag (voice o video), identifier ng room o session, at timestamp. Ang laki ng bawat field ay dapat minimal upang makatipid ng espasyo sa limit na 4 KB. Inirerekomenda ng Apple na isama lamang sa payload ang data na kinakailangan para ipakita ang screen ng papasok na tawag sa lock screen, at ang iba pang impormasyon (avatar, kasaysayan ng chat) ay i-load pagkatapos sumagot ang user sa pamamagitan ng hiwalay na network request. Halimbawa ng minimal na payload: { “caller”: “Anna”, “caller_id”: “+79161234567”, “type”: “audio”, “room”: “uuid-room-1234”, “ts”: 1718534400 }. Ang lahat ng key sa payload ay dapat maikli, walang ambiguity, at dokumentado sa server side para sa compatibility sa pagitan ng mga bersyon ng app.

Pangangasiwa ng error at muling pagsubok

Kapag nagtatrabaho sa PushKit, kailangan asahan ang pangangasiwa ng mga error sa paghahatid at pagkawala ng koneksyon. Kung ang device ay offline o nadiskonekta mula sa network, ang VoIP notification ay hindi maihahatid — hindi sinusuportahan ng PushKit ang pag-iimbak at muling pagpapadala, hindi tulad ng APNs na nag-iimbak ng notification hanggang 24 na oras para sa muling pagsubok. Dapat subaybayan ng server ang mga hindi naihatid na notification at muling subukan pagkatapos maibalik ang koneksyon. Para dito, ginagamit ang mekanismo ng push kit feedback service — ibinabalik nito ang listahan ng mga hindi naihatid na notification na may indikasyon ng dahilan ng error. Inirerekomenda na mag-set up ng pagsubaybay sa tagumpay ng paghahatid ng VoIP notification sa pamamagitan ng server analytics at abisuhan ang developer kapag ang porsyento ng matagumpay na paghahatid ay bumaba sa ibaba 95%. Ginagarantiyahan ng PushKit system ang paghahatid lamang kapag may aktibong koneksyon sa internet sa device — kung wala ito, ang notification ay permanenteng mawawala, na kritikal na isaalang-alang kapag nagdidisenyo ng maaasahang sistema ng tawag sa VoIP na may garantisadong paghahatid.

Mga Madalas Itanong

Ano ang PushKit?

PushKit ay isang Apple framework para sa paghahatid ng VoIP notification na may mababang latency, na nagpapahintulot sa app na magising sa background sa papasok na tawag nang walang banner. Ginagamit sa mga messenger at video app.

Ano ang pagkakaiba ng PushKit sa APNs?

Ang PushKit ay may mas mataas na priyoridad sa paghahatid at ginigising ang app sa background nang hindi nagpapakita ng notification sa user. Ang APNs ay naghahatid ng notification na may banner at hindi magagawang gisingin ang app para sa pagproseso ng tawag nang walang interaksyon ng user.

Kailangan bang gamitin ang CallKit sa PushKit?

Oo, kinakailangan ng Apple ang pagsasama ng PushKit sa CallKit para sa pagpapakita ng system screen ng papasok na tawag. Kung walang CallKit, hindi maipapakita ng app ang papasok na tawag sa lock screen, na ginagawang walang silbi ang VoIP functionality.

Paano makakuha ng PushKit token?

Ang token ay makukuha pagkatapos lumikha ng PKPushRegistry na may uri .voIP at pagpapatupad ng delegado na pushRegistry:didUpdatePushCredentials:forType:. Ang token ay ipinapadala bilang Data at dapat i-convert sa hex-string para ipadala sa server.

Ano ang mga limitasyon sa laki ng payload sa PushKit?

Ang maximum na laki ng payload para sa PushKit ay 4 KB. Ang data ay dapat nasa JSON format. Hindi suportado ang mga media attachment. Simula sa iOS 13, may limitasyon na hindi hihigit sa isang VoIP notification bawat minuto bawat device.

Buod

  • PushKit — iOS framework para sa paghahatid ng VoIP notification na may mababang latency, lumalampas sa APNs.
  • Priyoridad ng paghahatid ng PushKit ay mas mataas kaysa APNs — dumating ang notification sa loob ng 5 segundo.
  • App ay nagigising sa background kapag nakatanggap ng notification, walang banner sa user.
  • Pagpaparehistro ay sa pamamagitan ng PKPushRegistry na may PKPushType.voIP at delegadong PKPushRegistryDelegate.
  • CallKit ay sapilitan para sa pagpapakita ng system screen ng papasok na tawag sa iOS.
  • Payload limitado sa 4 KB, JSON lamang, hindi hihigit sa isang notification bawat minuto mula iOS 13.
  • Rekomendasyon — gamitin ang PushKit para lamang sa VoIP functionality, para sa ibang notification gamitin ang APNs.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din