Live Activity — یہ کیا ہے، لاک اسکرین پر ویجٹ

مصنف: IT Sectr اشاعت: 2026-02-15 مطالعے کا وقت: 9 منٹ

Live Activity آئی فون کی لاک اسکرین اور Dynamic Island پر ایک ڈائنامک ویجٹ ہے جو ریئل ٹائم معلومات دکھاتا ہے: ڈیلیوری سٹیٹس، کھیلوں کے سکور، ٹائمرز اور موسیقی پلے بیک۔ یہ WidgetKit کے ساتھ ActivityKit (Swift، iOS 16.1+) کے ذریعے لاگو کیا جاتا ہے۔ Live Activity مقامی طور پر یا پش نوٹیفکیشنز کے ذریعے اپ ڈیٹ ہوتی ہے، متعدد حالتوں کو سپورٹ کرتی ہے اور ایونٹ ختم ہونے کے بعد سسٹم کے ذریعے ختم کر دی جاتی ہے۔ مزید معلومات کے لیے — ActivityKit Documentation دیکھیں۔

اہم نکات

  • Live Activity — لاک اسکرین اور Dynamic Island پر ریئل ٹائم ویجٹ
  • ActivityKit — iOS 16.1+ میں Live Activities شروع اور منظم کرنے کا فریم ورک
  • پش اپ ڈیٹس — سرور ActivityKit پش نوٹیفکیشنز کے ذریعے نئی حالت بھیجتا ہے
  • حالتیں — ہر Activity مختلف UI کے ساتھ فعال اور ختم شدہ حالتوں کو سپورٹ کرتی ہے
  • Dynamic Island — iPhone 14 Pro اور نئے پر Live Activity کا کمپیکٹ ڈسپلے

Live Activity کیا ہے — لاک اسکرین پر ویجٹ؟

Live Activity WidgetKit کی ایک توسیع ہے جو آئی فون کی لاک اسکرین اور Dynamic Island پر ڈائنامک مواد دکھاتی ہے۔ جامد ویجٹ کے برعکس جو سسٹم ٹائمر پر اپ ڈیٹ ہوتا ہے، Live Activity ایپ کے ذریعے شروع کی جاتی ہے اور محدود وقت تک چلتی ہے — فعال Activity کے لیے 8 گھنٹے تک اور مکمل ہونے کے بعد 4 گھنٹے تک۔ صارف ڈیوائس کو انلاک کیے بغیر تازہ ترین ڈیٹا دیکھتا ہے: ڈیلیوری آرڈر کی حالت، ٹیکسی میں منزل کا فاصلہ، میچ کے نتائج یا ورزش کی پیشرفت۔

ActivityKit Live Activities کے ساتھ کام کرنے کا فریم ورک ہے، جو iOS 16.1 میں متعارف کرایا گیا۔ یہ Activities کی درخواست، اپ ڈیٹ اور ختم کرنے کے لیے API فراہم کرتا ہے۔ Activity مواد اور حالت والی ایک آبجیکٹ ہے۔ مواد (ActivityContent) جامد ڈیٹا کی وضاحت کرتا ہے، جبکہ حالت (ActivityState) وقت کے ساتھ بدلنے والے ڈائنامک ڈیٹا کی وضاحت کرتی ہے۔ سسٹم خود فیصلہ کرتا ہے کہ نئی حالت کب رینڈر کرنی ہے — یہ بیٹری بچاتا ہے اور ہموار اینیمیشن کو یقینی بناتا ہے۔

ہر Live Activity منفرد طور پر ActivityID سے پہچانی جاتی ہے اور ایک عمل سے بندھی ہوتی ہے — وہ ایپ جس نے اسے بنایا۔ سسٹم میموری کم ہونے یا بیٹری چارج کم ہونے پر Activity ختم کر سکتا ہے۔ ڈویلپر ActivityKit ڈیلیگیٹ کے ذریعے جبری ختم ہونے کا نوٹیفکیشن وصول کرتا ہے اور بحالی کے لیے آخری حالت محفوظ کر سکتا ہے۔

ActivityKit اور WidgetKit کا آرکیٹیکچر

Live Activity آرکیٹیکچر دو فریم ورکس پر بنایا گیا ہے: WidgetKit SwiftUI ویو رینڈرنگ کے لیے ذمہ دار ہے، ActivityKit Activity لائف سائیکل کے لیے ذمہ دار ہے۔ ڈویلپر LiveActivityConfiguration سپورٹ کے ساتھ WidgetBundle بناتا ہے۔ ہر کنفیگریشن ڈیٹا کی قسم (Attributes اور State) اور ایک SwiftUI ویو کی وضاحت کرتی ہے جسے سسٹم لاک اسکرین اور Dynamic Island پر رینڈر کرتا ہے۔ ڈیٹا ActivityAttributes کے ذریعے منتقل کیا جاتا ہے — مواد کے لیے let فیلڈز اور حالت کے لیے var فیلڈز والا ایک سٹرکٹ۔

اجزاءمقصدAPI
Attributesپوری Activity کا جامد ڈیٹاlet name: String, let icon: String
ContentStateمتحرک حالت، اپ ڈیٹ پر تبدیل ہوتی ہےvar progress: Double, var status: Status
ActivityActivity درخواست اور انتظامی آبجیکٹActivity.request(attributes:content:)
PushTokenسرور پش اپ ڈیٹس کے لیے ٹوکنactivity.pushToken publisher
ActivityUIلاک اسکرین اور Dynamic Island کے لیے SwiftUI ویوLockScreenView, ExpandedView, CompactView

Activity لائف سائیکل تین مراحل پر مشتمل ہے: فعال (سسٹم دکھاتا اور اپ ڈیٹ کرتا ہے)، حتمی (Activity ختم ہو گئی لیکن UI مزید 4 گھنٹے دکھائی دیتی ہے)، ہٹا دی گئی (سسٹم UI ہٹا دیتا ہے)۔ ایپ کسی بھی وقت Activity ختم کر سکتی ہے۔ سسٹم بھی Activities کو زبردستی ختم کرتا ہے — مثال کے طور پر، ڈیوائس ری سٹارٹ کرنے یا 8 گھنٹے کی حد ختم ہونے پر۔

swift
import ActivityKit

struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable & Hashable {
        var status: DeliveryStatus
        var estimatedMinutes: Int
    }
    var orderNumber: String
    var restaurantName: String
}

WidgetBundle @main میکرو کے ذریعے Live Activity رجسٹر کرتا ہے: ویجٹ LiveActivityConfiguration سمیت کنفیگریشنز کی فہرست واپس کرتا ہے۔ اس کنفیگریشن کی بنیاد پر، سسٹم جانتا ہے کہ کس ڈیٹا کی توقع کرنی ہے اور مختلف حالتوں میں UI کیسے رینڈر کرنا ہے — Dynamic Island کے لیے کمپیکٹ، کم سے کم اور توسیع شدہ۔

WidgetKit اور SwiftUI کے ساتھ Live Activity بنانا

Activity بنانا ActivityKit کو درخواست بھیجنے سے شروع ہوتا ہے۔ ایپ ابتدائی ڈیٹا کے ساتھ Activity.request(attributes:content:pushType:) کو کال کرتی ہے۔ سسٹم چیک کرتا ہے کہ ڈیوائس پر Dynamic Island دستیاب ہے یا نہیں اور Activity آبجیکٹ واپس کرتا ہے۔ اگر فعال Activity کی حد سے تجاوز کر لیا جائے تو درخواست ناکام ہو سکتی ہے — عام طور پر ایک ساتھ 5 سے زیادہ نہیں۔ کامیاب درخواست کے بعد، سسٹم لاک اسکرین پر اور اگر دستیاب ہو تو Dynamic Island میں ویجٹ دکھاتا ہے۔

swift
let attributes = DeliveryAttributes(
    orderNumber: "A-1234",
    restaurantName: "Pizza House"
)

let initialState = DeliveryAttributes.ContentState(
    status: DeliveryStatus.preparing,
    estimatedMinutes: 30
)

do {
    let activity = try await Activity<DeliveryAttributes>.request(
        attributes: attributes,
        content: ActivityContent(state: initialState, staleDate: nil),
        pushType: .token
    )
    print("Activity started: \(activity.id)")
} catch {
    print("Failed: \(error)")
}

Live Activity کے لیے SwiftUI ویو WidgetKit سے LockScreenView، ExpandedView اور CompactView سٹرکچرز استعمال کرتا ہے۔ ویو موجودہ ایٹریبیوٹس اور حالت کے ساتھ سیاق و سباق (ActivityViewContext) وصول کرتا ہے۔ سسٹم سے نئی حالت آنے پر ویو خود بخود اپ ڈیٹ ہو جاتا ہے۔ Live Activity صرف SwiftUI کے محدود اجزاء کو سپورٹ کرتی ہے — Text، Image، HStack، VStack اور چند موڈیفائر۔

ہر Live Activity ویو ہلکا اور تیز ہونا چاہیے — سسٹم بھاری ویوز رینڈر کرنے سے انکار کرتا ہے۔ رینڈرنگ کی وقت کی حد 30 ms فی فریم ہے۔ اینیمیشن حالتوں کے درمیان سسٹم ٹرانزیشن تک محدود ہیں — Live Activity میں کسٹم اینیمیشن دستیاب نہیں ہیں۔ رینڈرنگ لاک اسکرین کی ردعمل کی ترجیح کے ساتھ WidgetKit کے بیک گراؤنڈ عمل میں کی جاتی ہے۔

Live Activity کو مقامی اور پش کے ذریعے اپ ڈیٹ کرنا

مقامی اپ ڈیٹ — ایپ activity.update(using:) کال کر کے Activity حالت اپ ڈیٹ کرتی ہے۔ یہ طریقہ نیا ContentState اور اپ ڈیٹ پر نوٹیفکیشن دکھانے کے لیے اختیاری AlertConfiguration قبول کرتا ہے۔ مقامی اپ ڈیٹس تیز ہیں — سسٹم اگلے رینڈر سائیکل پر ویو کو دوبارہ کھینچتا ہے، عام طور پر 1-2 سیکنڈ میں۔ بار بار اپ ڈیٹس (ٹائمر، سٹاپ واچ) کے لیے مقامی موڈ استعمال کریں — یہ پش سے زیادہ قابل اعتماد اور تیز ہے۔

swift
let updatedState = DeliveryAttributes.ContentState(
    status: DeliveryStatus.outForDelivery,
    estimatedMinutes: 10
)

await activity.update(
    ActivityContent<DeliveryAttributes.ContentState>(
        state: updatedState,
        staleDate: Date().addingTimeInterval(60)
    ),
    alertConfiguration: AlertConfiguration(
        title: "Order out for delivery",
        body: "Arriving in 10 min"
    )
)

پش اپ ڈیٹس — سرور JSON فارمیٹ میں نئی حالت کے ساتھ ActivityKit پش نوٹیفکیشن بھیجتا ہے۔ اس کے لیے، ایپ activity.pushToken پبلشر سے pushToken وصول کرتی ہے اور سرور کو بھیجتی ہے۔ سرور نئے ContentState پر مشتمل پے لوڈ کے ساتھ APNs کو POST درخواست بھیجتا ہے۔ سسٹم پش وصول کرتا ہے، حالت ڈی کوڈ کرتا ہے اور ایپ کی شرکت کے بغیر Live Activity اپ ڈیٹ کرتا ہے — یہ ایپ بند ہونے پر بھی Activity کو اپ ڈیٹ کرنے کی اجازت دیتا ہے۔

پش اپ ڈیٹس کم بار بار اپ ڈیٹس (ہر 5-10 منٹ میں ڈیلیوری سٹیٹس) کے لیے زیادہ موثر ہیں — ایپ کو نیٹ ورک کنکشن برقرار رکھنے کی ضرورت نہیں ہے۔ ہر 1-2 سیکنڈ میں بار بار اپ ڈیٹس کے لیے مقامی طریقہ استعمال کریں۔ سرور پے لوڈ میں صرف ContentState کے تبدیل ہونے والے فیلڈز شامل ہیں — جامد Attributes ڈیٹا صرف Activity بناتے وقت بھیجا جاتا ہے۔

Dynamic Island میں Live Activity دکھانا

Dynamic Island iPhone 14 Pro، 15 Pro اور نئے پر ایک ہارڈویئر-سافٹ ویئر ایریا ہے جو Live Activity کے مواد کے مطابق ڈھل جاتا ہے۔ سسٹم خود بخود Activity کو تین موڈز میں دکھاتا ہے: کمپیکٹ (کٹ آؤٹ کے بائیں طرف آئیکن + مختصر متن)، کم سے کم (صرف آئیکن) اور توسیع شدہ (معلومات کے ساتھ 300pt مستطیل)۔ ڈویلپر ان موڈز کو براہ راست کنٹرول نہیں کرتا — سسٹم ترجیح اور دستیاب جگہ کی بنیاد پر موڈ منتخب کرتا ہے۔

swift
struct DeliveryLiveActivity: Widget {
    var body: some WidgetConfiguration {
        ActivityConfiguration(for: DeliveryAttributes.self) { context in
            LockScreenView(context: context)
        } dynamicIsland: { context in
            DynamicIsland {
                DynamicIslandExpandedContent {
                    ExpandedView(context: context)
                }
            } compactLeading: {
                CompactLeadingView(context: context)
            } compactTrailing: {
                CompactTrailingView(context: context)
            } minimal: {
                MinimalView(context: context)
            }
        }
    }
}

Dynamic Island انٹرایکٹیویٹی کو سپورٹ کرتا ہے — صارف ایریا کو ٹیپ کرتا ہے اور ایپ میں داخل ہوتا ہے یا توسیع شدہ ویو کھولتا ہے۔ کمپیکٹ موڈ پر ٹیپ کرنے سے توسیع شدہ موڈ میں جاتا ہے، اور بائیں طرف سوائپ کرنے سے Activity کم سے کم موڈ میں آ جاتی ہے۔ توسیع شدہ موڈ میں بٹن (pause/cancel) SwiftUI سے Link کے ذریعے ہینڈل کیے جاتے ہیں — سسٹم ڈیپ لنک URL کے ساتھ ایپ لانچ کرتا ہے، پروسیسنگ UIApplicationDelegate میں ہوتی ہے۔

Dynamic Island کی حدود: توسیع شدہ موڈ کی چوڑائی 300pt تک، کمپیکٹ متن 30 حروف تک۔ رنگ اور فونٹ سسٹم تھیم سے مماثل ہیں — حسب ضرورت محدود ہے۔ موڈز کے درمیان ٹرانزیشن اینیمیشن سسٹم کی متعین کردہ ہیں اور انہیں حسب ضرورت نہیں بنایا جا سکتا۔ اگر متعدد ایپس کے پاس فعال Activities ہیں، Dynamic Island انہیں لانچ کے وقت اور مواد کی قسم کی بنیاد پر ترجیح دے کر دکھاتا ہے۔

اکثر پوچھے گئے سوالات

Live Activity عام ویجٹ سے کیسے مختلف ہے؟

WidgetKit کا عام ویجٹ جامد معلومات دکھاتا ہے اور کم از کم 15-30 منٹ کے وقفے سے سسٹم ٹائمر پر اپ ڈیٹ ہوتا ہے۔ Live Activity لاک اسکرین اور Dynamic Island پر ریئل ٹائم میں ڈائنامک ڈیٹا دکھاتی ہے۔ Live Activity ایپ کے ذریعے شروع کی جاتی ہے، 8 گھنٹے تک چلتی ہے اور ایونٹ ختم ہونے کے بعد سسٹم کے ذریعے ختم کر دی جاتی ہے، مستقل طور پر موجود ویجٹ کے برعکس۔

Live Activity کتنی بار اپ ڈیٹ ہوتی ہے؟

Live Activity دو اپ ڈیٹ موڈز کو سپورٹ کرتی ہے: مقامی — ایپ کسی بھی وقت ActivityKit API کے ذریعے حالت اپ ڈیٹ کرتی ہے، اور پش اپ ڈیٹ — سرور ActivityKit پش نوٹیفکیشن بھیجتا ہے جسے سسٹم ویجٹ کی نئی حالت میں تبدیل کرتا ہے۔ بیٹری کم ہونے پر، سسٹم Live Activity کو چارجنگ منسلک ہونے تک منجمد کر سکتا ہے۔

کن ڈیوائسز پر Live Activities کام کرتی ہیں؟

Live Activities iOS 16.1 اور نئے والے iPhone پر دستیاب ہیں۔ iPhone 14 Pro اور نئے پر، Live Activity Dynamic Island میں بھی دکھائی دیتی ہے۔ iPad پر، Live Activity صرف لاک اسکرین پر سپورٹ ہوتی ہے — iPad پر Dynamic Island دستیاب نہیں ہے۔ Apple Watch براہ راست Live Activities کو سپورٹ نہیں کرتا، لیکن تکمیل کے نوٹیفکیشن دکھا سکتا ہے۔

ایک ساتھ کتنی Live Activities چل سکتی ہیں؟

سسٹم فعال Live Activities کی تعداد کو محدود کرتا ہے — عام طور پر تمام ایپس کے لیے ایک ساتھ 5 سے زیادہ نہیں۔ حد سے زیادہ شروع کرنے کی کوشش کرنے پر ActivityKit خرابی واپس کرتا ہے۔ ہر Live Activity کی متعدد حالتیں ہو سکتی ہیں — مثال کے طور پر، زیر التواء، راستے میں، کھانے کے آرڈر کے لیے ڈیلیور شدہ۔ تکمیل کے بعد، Activity UI میں مزید 4 گھنٹے رہتی ہے۔

کیا Live Activity کے لیے صارف کی اجازت ضروری ہے؟

ہاں، ایپ کو نوٹیفکیشن بھیجنے کی اجازت مانگنی چاہیے — Live Activity سسٹم نوٹیفکیشن چینل استعمال کرتی ہے۔ صارف ترتیبات میں کسی مخصوص ایپ کے لیے Live Activity غیر فعال کر سکتا ہے۔ پہلی بار لانچ کرنے پر، ActivityKit اجازت مانگنے والا ڈائیلاگ دکھاتا ہے۔ اجازت کے بغیر، Activity کی درخواست ناکام ہو جاتی ہے۔

خلاصہ

  • Live Activity — لاک اسکرین اور Dynamic Island پر ریئل ٹائم اپ ڈیٹس کے ساتھ ڈائنامک ویجٹ
  • ActivityKit — Live Activities لائف سائیکل کے انتظام کے لیے iOS 16.1+ فریم ورک
  • Attributes and State — Activity کا جامد ڈیٹا اور متحرک حالت SwiftUI ویو کو منتقل
  • پش اپ ڈیٹس — سرور ایپ کی شرکت کے بغیر APNs کے ذریعے نئی حالت بھیجتا ہے
  • Dynamic Island — تین ڈسپلے موڈ: کمپیکٹ، کم سے کم اور توسیع شدہ مستطیل
  • حدود — 5 تک فعال Activities، 8 گھنٹے تک زندگی، تکمیل کے بعد 4 گھنٹے تک
  • AlertConfiguration — Activity حالت اپ ڈیٹ ہونے پر اختیاری نوٹیفکیشن

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں