Device Token ایک منفرد شناخت کنندہ ہے جو APNS پش نوٹیفیکیشنز کو روٹ کرنے کے لیے ہر iOS ڈیوائس کو تفویض کرتا ہے۔ ٹوکن سسٹم کے ذریعے اس وقت تیار کیا جاتا ہے جب ایپ نوٹیفیکیشنز وصول کرنے کے لیے رجسٹر ہوتی ہے اور اسے اس ڈیوائس پر پش بھیجنے کے لیے سرور کو بھیجا جانا چاہیے۔ Apple Developer Documentation، 2026 کے مطابق، Device Token ایپ کو دوبارہ انسٹال کرنے، ڈیوائس کو بیک اپ سے بحال کرنے یا iOS اپ ڈیٹ کرنے پر تبدیل ہو سکتا ہے، لہذا سرور کو ترسیل کو یقینی بنانے کے لیے باقاعدگی سے ٹوکن اپ ڈیٹ کرنے چاہئیں۔
اہم نکات
Device Token (ڈیوائس ٹوکن) ہیکس سٹرنگ کی شکل میں ایک منفرد شناخت کنندہ ہے جسے APNS (Apple Push Notification Service) iOS ڈیوائس پر ہر ایپ کے لیے تیار کرتا ہے۔ ٹوکن وہ کلید ہے جس کے ذریعے سرور کسی مخصوص ڈیوائس کو پش نوٹیفیکیشن بھیجتا ہے۔ درست Device Token کے بغیر، سرور پش نوٹیفیکیشن فراہم نہیں کر سکتا — APNS 400 BadRequest خرابی کے ساتھ درخواست رد کر دیتا ہے۔
Device Token iOS سسٹم کے ذریعے اس وقت بنایا جاتا ہے جب ایپ انسٹالیشن کے بعد پہلی بار APNS سے رابطہ کرتی ہے۔ جنریشن کا عمل ایپ کے bundle ID اور ڈیوائس کے منفرد شناخت کنندہ (UID) کے ساتھ خفیہ نگاری کا بندھن شامل کرتا ہے، جس کے بعد APNS ایپ کو ہیکس فارمیٹ (64 حروف) میں 32 بائٹ ٹوکن واپس کرتا ہے۔ ٹوکن مستقل نہیں ہے — سسٹم مخصوص حالات میں نیا ٹوکن تیار کر سکتا ہے۔
جب سرور پش نوٹیفیکیشن بھیجتا ہے، تو یہ APNS کو HTTP/2 درخواست میں Device Token شامل کرتا ہے۔ APNS ٹوکن کی تصدیق کرتا ہے: اگر ٹوکن کسی دوسرے ماحول (پروڈکشن کے بجائے سینڈ باکس) سے ہے، میعاد ختم ہو چکی ہے یا منسوخ کر دیا گیا ہے، تو Apple سرور 410 Gone یا 400 BadRequest خرابی واپس کرتا ہے۔ ٹوکن کی کامیاب تصدیق کے بعد ہی APNS ڈیوائس کو نوٹیفیکیشن فراہم کرنا شروع کرتا ہے۔
Device Token کو IDFA (مشتہرین کے لیے شناخت کنندہ)، IDFV (فروخت کنندہ کے لیے شناخت کنندہ) یا UID (منفرد ڈیوائس شناخت کنندہ) کے ساتھ الجھانا نہیں چاہیے۔ IDFA اور IDFV اشتہارات اور تجزیہ کے لیے استعمال ہوتے ہیں، UID ہارڈویئر سیریل نمبر ہے۔ Device Token صرف پش نوٹیفیکیشن کے لیے موجود ہے اور APNS سے باہر صارف یا ڈیوائس کے بارے میں معلومات ظاہر نہیں کرتا۔
| شناخت کنندہ | مقصد | استحکام |
|---|---|---|
| Device Token | APNS پش نوٹیفیکیشن روٹنگ | تبدیل ہو سکتا ہے |
| IDFA | اشتہارات اور ٹریکنگ | صارف کے ذریعے ری سیٹ کیا جا سکتا ہے |
| IDFV | فروخت کنندہ کی شناخت (تجزیہ) | ایک ہی ڈیولپر کی ایپس کے لیے مستقل |
| Bundle ID | منفرد ایپ شناخت کنندہ | مستقل |
Device Token حاصل کرنے کا عمل کئی لازمی مراحل پر مشتمل ہے، صارف سے اجازت طلب کرنے سے لے کر سرور پر ٹوکن بھیجنے تک۔ ہر مرحلہ اہم ہے — ان میں سے کسی کو بھی چھوڑنے سے ڈیوائس پر پش نوٹیفیکیشن بھیجنا ناممکن ہو جاتا ہے۔
پہلا مرحلہ یہ ہے کہ ایپ UNUserNotificationCenter.current().requestAuthorization کے ذریعے صارف سے نوٹیفیکیشن بھیجنے کی اجازت طلب کرے۔ صارف同意 کر سکتا ہے، انکار کر سکتا ہے یا اختیاری اختیارات (alert, badge, sound) منتخب کر سکتا ہے۔ واضح صارف کی رضامندی کے بغیر، سسٹم Device Token جاری نہیں کرے گا، چاہے ایپ registerForRemoteNotifications کو کال کرے۔ اجازت ملنے کے بعد، ایپ UIApplication.shared.registerForRemoteNotifications() کو کال کرتی ہے، جو APNS میں رجسٹریشن کا عمل شروع کرتی ہے۔
رجسٹریشن کے بعد، APNS AppDelegate کے ذریعے ٹوکن واپس کرتا ہے: application(_:didRegisterForRemoteNotificationsWithDeviceToken:)۔ کامیاب کال میں ٹوکن کے ساتھ ایک Data آبجیکٹ ہوتا ہے، جسے سرور پر منتقلی کے لیے ہیکس سٹرنگ میں تبدیل کرنا ضروری ہے۔ خرابی کی صورت میں، سسٹم مسئلہ کی وضاحت کے ساتھ application(_:didFailToRegisterForRemoteNotificationsWithError:) کو کال کرتا ہے: غلط سرٹیفکیٹ کنفیگریشن، نیٹ ورک کی غیر دستیابی، یا غلط پروجیکٹ کنفیگریشن۔
ٹوکن حاصل کرنے کے بعد، ایپ کو اسے ڈیٹا بیس میں ذخیرہ کرنے کے لیے فوری طور پر اپنے سرور پر بھیجنا چاہیے۔ API درخواست میں ٹوکن، ڈیوائس شناخت کنندہ (میپنگ کے لیے)، ماحول (sandbox/production)، اور اختیاری طور پر اضافی ڈیٹا: OS ورژن، ڈیوائس ماڈل، زبان شامل ہے۔ ہر ایپ لانچ پر ٹوکن دوبارہ بھیجنے کی سفارش کی جاتی ہے تاکہ سرور کے پاس ہمیشہ تازہ ترین ٹوکن ہو۔
// اجازت کی درخواست اور APMS میں رجسٹریشن
func registerForPushNotifications() {
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge]) {
[weak self] granted, error in
guard granted else {
print("اجازت نہیں دی گئی")
return
}
DispatchQueue.main.async {
UIApplication.shared
.registerForRemoteNotifications()
}
}
}
// APNS سے Device Token حاصل کرنا
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
let tokenString = deviceToken
.map { String(format: "%02.2hhx", $0) }
.joined()
print("Device Token: \(tokenString)")
// سرور کو ٹوکن بھیجنا
PushTokenService.shared
.sendTokenToServer(tokenString) { success in
if success {
UserDefaults.standard.set(tokenString,
forKey: "lastDeviceToken")
}
}
}
پش سسٹم کا سرور سائیڈ Device Token کو ڈیٹا بیس میں ذخیرہ کرنا چاہیے، صارف اور ماحول سے منسلک۔ نوٹیفیکیشن بھیجتے وقت، سرور APNS کو ایک درخواست بناتا ہے، URL میں ٹوکن اور تصدیق کے لیے JWT ٹوکن (یا سرٹیفکیٹ) شامل کرتا ہے۔ مناسب ٹوکن مینجمنٹ پش نوٹیفیکیشن کی ترسیل کی شرح کو نمایاں طور پر متاثر کرتی ہے۔
سرور پر ٹوکن ٹیبل میں کم از کم شامل ہونا چاہیے: Device Token (منفرد)، صارف ID، ماحول (sandbox/production)، آخری اپ ڈیٹ کی تاریخ، اور حیثیت (فعال/غیر فعال)。 بھیجتے وقت تیزی سے تلاش کے لیے ٹوکن پر اور صارف کے تمام آلات کی فہرست حاصل کرنے کے لیے صارف پر انڈیکس شامل کرنے کی سفارش کی جاتی ہے۔ بہت سی ایپس ایک صارف کو متعدد آلات رکھنے کی اجازت دیتی ہیں — ہر ایک کا اپنا ٹوکن۔
پش نوٹیفیکیشن بھیجنے کے لیے، سرور کو دو طریقوں سے APNS کو درخواست کی اجازت دینی ہوگی۔ سرٹیفکیٹ پر مبنی Apple Developer Console میں تیار کردہ SSL سرٹیفکیٹ استعمال کرتا ہے۔ ٹوکن پر مبنی .p8 کلید کے ساتھ JWT (JSON Web Token) استعمال کرتا ہے جو سرٹیفکیٹ کی تجدید کے بغیر 30 دنوں تک درست رہتا ہے۔ ٹوکن پر مبنی اجازت زیادہ جدید سمجھی جاتی ہے اور Apple نئے پروجیکٹس کے لیے اس کی سفارش کرتا ہے۔
APNS کو درخواست میں HTTP/2 POST طریقہ، راستہ /3/device/{device_token} کے ساتھ URL، اجازت کے ہیڈرز، اور پے لوڈ کے ساتھ JSON باڈی شامل ہے۔ apns-topic ہیڈر میں ایپ کا bundle ID ہونا چاہیے۔ apns-priority ترسیل کی ترجیح بتاتا ہے (5 — فوری طور پر، 10 — بیٹری بچت کے ساتھ)۔ apns-expiration اس وقت کو سیکنڈز میں سیٹ کرتا ہے جب تک APNS نوٹیفیکیشن پہنچانے کی کوشش کرے گا۔
// APNS HTTP/2 کے ذریعے Node.js پر push بھیجنے کی مثال
const http2 = require('http2');
const client = http2.connect('https://api.push.apple.com');
const deviceToken = 'abcdef0123456789...';
const payload = JSON.stringify({
"aps": { "alert": "Hello!", "sound": "default" }
});
const req = client.request({
':method': 'POST',
':path': `/3/device/${deviceToken}`,
'apns-topic': 'com.example.app',
'apns-priority': '10',
'apns-expiration': '0',
'authorization': `bearer ${jwtToken}`
});
req.write(payload);
req.end();
req.on('response', (headers) => {
if (headers[':status'] === '200') {
console.log('Push کامیابی سے بھیج دیا گیا');
}
});
بڑی تعداد میں آلات کو پش نوٹیفیکیشن بھیجتے وقت، رفتار کنٹرول کے ساتھ بیچ بھیجنا استعمال کریں۔ APNS سفارش کرتا ہے فی کنکشن فی سیکنڈ 1500 درخواستوں سے تجاوز نہ کریں۔ حد سے تجاوز کرنے پر، Apple سرور 429 Too Many Requests خرابی واپس کرتا ہے۔ بڑے پیمانے کی مہمات کے لیے، متعدد کنکشن استعمال کریں اور آلات پر بوجھ یکساں طور پر تقسیم کریں۔
Device Token مستقل نہیں ہے اور کئی منظرناموں میں تبدیل ہو سکتا ہے، جس کے لیے سرور پر اپ ڈیٹ میکانزم کی ضرورت ہے۔ اگر سرور پرانے ٹوکن پر پش بھیجتا رہے، تو APNS 410 Gone خرابی واپس کرتا ہے، جس سے ظاہر ہوتا ہے کہ ٹوکن دیے گئے ماحول کے لیے مزید درست نہیں ہے۔
Apple کئی منظرناموں کو دستاویز کرتا ہے جن میں Device Token تبدیل ہوتا ہے: صارف ایپ کو دوبارہ انسٹال کرتا ہے، iCloud بیک اپ سے ڈیوائس بحال کرتا ہے، iOS کا نیا ورژن انسٹال کرتا ہے، یا نیٹ ورک یا پرائیویسی سیٹنگز ری سیٹ کرتا ہے۔ ہر صورت میں، ایپ اگلی لانچ پر APNS سے نیا ٹوکن حاصل کرے گی۔ سرور کو ڈیٹا بیس میں ٹوکن اپ ڈیٹ کرنا چاہیے، پرانے کو ہٹا کر نئے کو محفوظ کرنا چاہیے۔
جب سرور پرانے ٹوکن پر پش بھیجتا ہے، APNS apns-unless-timestamp ہیڈر کے ساتھ HTTP 410 واپس کرتا ہے۔ یہ ہیڈر اس وقت کی نشاندہی کرتا ہے جس کے بعد ٹوکن باطل ہو گیا۔ سرور کو ڈیٹا بیس میں اس ٹوکن کو فوری طور پر حذف یا غیر فعال کر دینا چاہیے تاکہ اس پر دوبارہ نہ بھیجا جائے۔ 410 خرابی کو نظر انداز کرنے سے وسائل ضائع ہوتے ہیں اور ترسیل کی شرح کم ہوتی ہے۔
ٹوکن ڈیٹا بیس کو اپ ٹو ڈیٹ رکھنے کے لیے، متواتر صفائی چلانے کی سفارش کی جاتی ہے۔ صفائی اسکرپٹ پچھلے N دنوں کے APNS لاگز کا تجزیہ کرتا ہے، ان تمام ٹوکنز کو تلاش کرتا ہے جنہیں 410 خرابی ملی، اور انہیں ڈیٹا بیس میں غیر فعال کر دیتا ہے۔ مزید برآں، 90 دنوں سے زیادہ عرصے سے صارف کی سرگرمی نہ ہونے والے ٹوکنز کو ہٹایا جا سکتا ہے — یہ بیکار ریکارڈ ہیں جو صرف ڈیٹا بیس کا سائز بڑھاتے ہیں۔
پش نوٹیفیکیشن (نیوز لیٹر، پرومو مہمات) کے بڑے پیمانے پر بھیجنے سے پہلے، ٹوکنز کی پیشگی تصدیق کرنے کی سفارش کی جاتی ہے۔ APNS بیچ ٹوکن تصدیق کے لیے براہ راست API فراہم نہیں کرتا، لہٰذا کم ترجیح کے ساتھ ٹیسٹ پش بھیجنے اور خرابیوں کا تجزیہ کرنے کی حکمت عملی استعمال کی جاتی ہے۔ 410 خرابی واپس کرنے والے ٹوکنز کو مرکزی بھیجے جانے سے خارج کر دیا جاتا ہے۔
آئیے Swift میں Device Token حاصل کرنے کے مکمل چکر کو دیکھتے ہیں، جس میں خرابی کا انتظام اور سرور کو بھیجنا شامل ہے۔ کوڈ کا احاطہ کرتا ہے اجازت کی درخواست، APNS میں رجسٹریشن، Data کو ہیکس سٹرنگ میں تبدیل کرنا، خرابی کا انتظام، اور ناکامی پر دوبارہ کوشش کے ساتھ اپنے سرور کو ٹوکن بھیجنا۔
import UIKit
import UserNotifications
final class PushNotificationManager: NSObject {
static let shared = PushNotificationManager()
private let apiClient = APIClient()
private var currentToken: String?
func register() {
UNUserNotificationCenter.current()
.requestAuthorization(
options: [.alert, .badge, .sound]) {
[weak self] granted, error in
guard granted else {
Analytics.log(
"Push permission denied")
return
}
DispatchQueue.main.async {
UIApplication.shared
.registerForRemoteNotifications()
}
}
}
func handleDeviceToken(_ tokenData: Data) {
let token = tokenData
.map { String(format: "%02.2hhx", $0) }
.joined()
guard token != currentToken else { return }
currentToken = token
sendTokenToServer(token)
}
func handleRegistrationError(_ error: Error) {
Analytics.log(
"Push registration failed: \(error)")
// نیٹ ورک کی خرابیوں پر تاخیر کے بعد دوبارہ کوشش
if let urlError = error as? URLError,
urlError.code == .notConnectedToInternet {
DispatchQueue.main.asyncAfter(
deadline: .now() + 10) { [weak self] in
self?.register()
}
}
}
private func sendTokenToServer(_ token: String) {
let body = PushTokenRequest(
token: token,
environment: Environment.current == .debug
? "sandbox" : "production",
osVersion: UIDevice.current.systemVersion,
locale: Locale.current.identifier
)
apiClient.sendToken(body) { [weak self] result in
if case .success = result {
self?.currentToken = token
}
}
}
}
APNS رجسٹریشن کے دوران خرابیاں مختلف وجوہات کی بنا پر ہو سکتی ہیں۔ سب سے عام میں نیٹ ورک کی غیر دستیابی، Xcode میں غلط سرٹیفکیٹ کنفیگریشن (مثلاً، Push Notifications کی صلاحیت غیر فعال)، سمیلیٹر کا استعمال (جو پش کو سپورٹ نہیں کرتا)، یا غلط provisioning profile شامل ہیں۔ پروڈکشن میں، خرابیوں کو لاگ کرنا اور اگر ممکن ہو تو، اگلی ایپ لانچ پر رجسٹریشن دوبارہ کرنا ضروری ہے۔
iOS سمیلیٹر حقیقی Device Token حاصل کرنے کی حمایت نہیں کرتا۔ سمیلیٹر پر رجسٹریشن کی جانچ کے لیے i386 آرکیٹیکچر چیک استعمال کریں: ڈیبگ بلڈ میں، ٹوکن حاصل کرنے کا تخیل کیا جا سکتا ہے یا جعلی اشیاء کے ساتھ UI ٹیسٹ استعمال کیے جا سکتے ہیں۔ حقیقی پش نوٹیفیکیشن کی جانچ ہمیشہ Xcode سے منسلک فزیکل ڈیوائس پر کی جاتی ہے۔
اکثر پوچھے گئے سوالات
ہاں، Device Token ایپ کو دوبارہ انسٹال کرنے، بیک اپ سے ڈیوائس بحال کرنے یا iOS اپ ڈیٹ کرنے پر تبدیل ہو سکتا ہے۔ سرور کو ٹوکن اپ ڈیٹس کو ہینڈل کرنا چاہیے: جب کسی معروف ڈیوائس سے نیا ٹوکن ملے — پرانے کو تبدیل کریں، جب 410 خرابی ہو — ڈیٹا بیس سے ٹوکن ہٹا دیں۔
Device Token ایک 32 بائٹ ہیکس سٹرنگ ہے جو 64 حروف (0–9, a–f) پر مشتمل ہے۔ مثال: “a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2”۔ ٹوکن APNS سے Data کے طور پر منتقل کیا جاتا ہے اور ایپ کی طرف سٹرنگ میں تبدیل کیا جاتا ہے۔
سینڈ باکس ٹوکن ڈیولپمنٹ provisioning profile کے ساتھ بنی ایپس کے لیے جاری کیا جاتا ہے اور صرف api.sandbox.push.apple.com کے ساتھ کام کرتا ہے۔ پروڈکشن ٹوکن App Store اور TestFlight کے لیے ہے اور api.push.apple.com کے ساتھ کام کرتا ہے۔ سرور کو ماحول میں فرق کرنا چاہیے اور مناسب APNS اینڈ پوائنٹ پر پش بھیجنا چاہیے۔
410 Gone خرابی کا مطلب ہے کہ Device Token درست نہیں ہے۔ سرور کو فوری طور پر اس ٹوکن کو ڈیٹا بیس سے ہٹا دینا چاہیے اور اس پر بھیجنے کی کوششیں بند کر دینی چاہئیں۔ جواب میں apns-unless-timestamp ہیڈر بتاتا ہے کہ ٹوکن نے کب کام کرنا بند کیا۔
AppDelegate میں ڈیلیگیٹ طریقہ application(_:didRegisterForRemoteNotificationsWithDeviceToken:) چیک کریں۔ اگر طریقہ کال ہوتا ہے — ٹوکن حاصل ہو گیا ہے۔ Xcode کنسول میں ٹوکن آؤٹ پٹ کرنے کے لیے ڈیبگنگ لاگز یا OSLog استعمال کریں۔ فزیکل ڈیوائس پر، Network Link Conditioner استعمال کرکے تصدیق کریں کہ ٹوکن سرور کو بھیجا جا رہا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں