Share Extension — یہ کیا ہے، کیسے کام کرتا ہے اور ایکسٹینشن کی ترقی

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

Share Extension ایک iOS ایکسٹینشن ہے جو آپ کی ایپ کو سسٹم شیر شیٹ میں شامل کرتی ہے۔ صارف Safari، تصاویر، فائلوں یا کسی دوسری ایپ سے مواد کاپی کیے اور ونڈوز کے درمیان سوئچ کیے بغیر براہ راست آپ کی ایپ میں بھیج سکتا ہے۔ Apple (2024) کے مطابق، Share Extension والی ایپس ان ایپس کے مقابلے میں 35% زیادہ صارفی مواد حاصل کرتی ہیں جن میں شیئرنگ کی صلاحیت نہیں ہے۔ ایکسٹینشن ایک متحد NSExtensionItem انٹرفیس کے ذریعے متن، تصاویر، ویڈیو، URLs اور فائلوں پر کارروائی کرتی ہے۔

اہم نکات

  • Share Extension — دوسرے پروگراموں سے ایپ میں مواد بھیجنے کے لیے iOS ایکسٹینشن۔
  • NSExtensionItem — میزبان ایپ اور ایکسٹینشن کے درمیان ڈیٹا منتقل کرنے کے لیے کنٹینر۔
  • Info.plist — مواد کی اقسام کی ترتیب جو ایکسٹینشن پر کارروائی کرتی ہے۔
  • SLServiceTypes — لیگیسی موڈ کے لیے سوشل نیٹ ورکس (Twitter، Facebook) پر میپنگ۔
  • App Groups — ایکسٹینشن اور ایپ کے درمیان ڈیٹا منتقل کرنے کے لیے مشترکہ ذخیرہ۔

Share Extension کیا ہے

Share Extension ایک قسم کی iOS ایپ ایکسٹینشن ہے جو کسی بھی ایپ میں مواد منتخب کرنے پر سسٹم شیر شیٹ میں ظاہر ہوتی ہے۔ صارف Safari میں متن کو نمایاں کرتا ہے، شیر پر دباتا ہے اور آپ کی ایپ کو دستیاب کارروائیوں کی فہرست میں دیکھتا ہے۔ انتخاب کے بعد، مواد کارروائی کے لیے ایکسٹینشن کو بھیج دیا جاتا ہے: محفوظ کرنا، شائع کرنا، بھیجنا یا تبدیل کرنا۔

Action Extension کے برعکس، Share Extension بیرونی ایپس سے مواد حاصل کرنے میں مہارت رکھتی ہے۔ Action Extension اس کے برعکس آپ کی ایپ سے باہر ڈیٹا بھیجتی ہے۔ Share Extension صارفی مواد کا داخلہ نقطہ ہے، صارفین کے حصول کا ایک اہم عنصر: صارفین Share Extension کے ذریعے آپ کی ایپ کو مکمل طور پر انسٹال کیے بغیر آزماتے ہیں۔ App Store ان ایپس کو ممنوع قرار دیتا ہے جن کا واحد کام Share Extension کے ذریعے اشتہارات دکھانا ہے (App Store Review Guideline 4.2)۔

آپ کی ایپ کے لیے Share Extension کیوں اہم ہے

Share Extension داخلے کی رکاوٹ کو کم کرتی ہے: صارفین ایک مانوس سیاق و سباق — براؤزر، گیلری، فائل مینیجر — سے آپ کی ایپ میں مواد بھیجتے ہیں۔ Branch (2024) کے مطابق، Share Extension والی ایپس 7ویں دن 28% زیادہ برقراری ظاہر کرتی ہیں۔ ایک اضافی اثر وائرلٹی ہے: جب بھی صارف شیر شیٹ میں آپ کی ایپ دیکھتا ہے، اشتہاری اخراجات کے بغیر غیر فعال برانڈنگ ہوتی ہے۔

Share Extension کیسے کام کرتا ہے

Share Extension کا طریقہ کار نظام NSExtensionItem کنٹینرز کے ذریعے مواد کی منتقلی پر مبنی ہے۔ میزبان ایپ (Safari، تصاویر) منتخب کردہ مواد کو ایک مخصوص قسم (public.image, public.url, public.plain-text) کے ساتھ NSExtensionItem میں پیک کرتی ہے۔ نظام اس کنٹینر کو ایکسٹینشن کو بھیجتا ہے، جو extensionContext.inputItems کے ذریعے ڈیٹا نکالتی ہے۔

ایکسٹینشن کا لائف سائیکل

Share Extension ایک علیحدہ عمل میں محدود عملدرآمد کے وقت کے ساتھ چلتی ہے — کارروائی کے لیے تقریباً 30 سیکنڈ۔ ایکسٹینشن کو لمبے ہم وقت ساز عمل نہیں کرنے چاہئیں۔ بڑی فائلیں اپ لوڈ کرنے کے لیے، پس منظر کی ترتیب کے ساتھ NSURLSession استعمال کریں۔ SLComposeServiceViewController مواد کا پیش منظر اور پوسٹ بٹن کے ساتھ Share Extension کے لیے بنیادی کلاس ہے۔

ڈیٹا کی اقسام اور Uniform Type Identifiers

iOS منتقل شدہ مواد کی قسم کا تعین کرنے کے لیے Uniform Type Identifiers (UTI) استعمال کرتا ہے۔ Share Extension کے لیے اہم UTI: public.image (تصاویر، اسکرین شاٹس)، public.url (لنکس)، public.plain-text (متن)، public.video (ویڈیو فائلیں) اور public.file-url (فائلیں)۔ ایکسٹینشن NSExtensionActivationRule کلید کے ذریعے Info.plist میں معاون UTI رجسٹر کرتی ہے۔

ایکسٹینشن کا فن تعمیر

Share Extension تین اجزاء پر مشتمل ہے: Xcode میں ہدف، SLComposeServiceViewController اور Info.plist ترتیب۔ فن تعمیر اس بات کا تعین کرتا ہے کہ مواد کی کن اقسام پر کارروائی کی جاتی ہے، انٹرفیس کیسے دکھایا جاتا ہے اور ڈیٹا کہاں محفوظ کیا جاتا ہے۔

جزومقصدخصوصیات
TargetXcode میں ایکسٹینشن کا ہدفشناخت کنندہ کے ساتھ علیحدہ بنڈل
ViewControllerانٹرفیس اور کارروائی کی منطقSLComposeServiceViewController یا حسب ضرورت
Info.plistفعالیت اور UTI ترتیبپریڈیکیٹ کے ساتھ NSExtensionActivationRule
App Groupsایپ کے ساتھ مشترکہ ذخیرہڈیٹا کی منتقلی کے لیے UserDefaults سویٹ

NSExtensionActivationRule

Share Extension ترتیب کا اہم عنصر فعالیت کا قاعدہ ہے۔ یہ اس بات کا تعین کرتا ہے کہ ایکسٹینشن شیر شیٹ میں کن شرائط پر ظاہر ہوتی ہے۔ قاعدہ Info.plist میں پابندیوں کے ساتھ ایک لغت کے طور پر مقرر کیا جاتا ہے: تصاویر کی زیادہ سے زیادہ تعداد، کم از کم متن کی لمبائی، لازمی URL موجودگی۔ معیاری قاعدہ کسی ایک مواد کی قسم کے لیے ایکسٹینشن کو فعال کرتا ہے۔

objective-c
// Info.plist — Share Extension کے لیے NSExtensionActivationRule
<key>NSExtensionActivationRule</key>
<dict>
    <key>NSExtensionActivationSupportsImageWithMaxCount</key>
    <integer>5</integer>
    <key>NSExtensionActivationSupportsText</key>
    <true/>
    <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
    <integer>1</integer>
</dict>

Share Extension بنانا

آئیے بک مارکنگ ایپ کے لیے Swift میں Share Extension بنانے کی ایک عملی مثال دیکھتے ہیں۔ ایکسٹینشن Safari سے URL وصول کرتی ہے، پیش منظر کا انٹرفیس دکھاتی ہے اور لنک کو App Group میں محفوظ کرتی ہے۔ SLComposeServiceViewController ایک متن کے خانے اور پوسٹ بٹن کے ساتھ تیار یوزر انٹرفیس فراہم کرتا ہے۔

swift
import Social
import MobileCoreServices

class ShareViewController: SLComposeServiceViewController {

    override func isContentValid() -> Bool {
        return !(contentText?.isEmpty() ?? true)
    }

    override func didSelectPost() {
        guard let item = extensionContext?.inputItems.first as? NSExtensionItem
        else { return }

        for attachment in item.attachments ?? [] {
            attachment.loadItem(forTypeIdentifier: kUTTypeURL as String) {
                [weak self] (item, error) in
                if let url = item as? URL {
                    BookmarkService().save(url, title: self?.contentText)
                }
                self?.extensionContext?.completeRequest(
                    returningItems: [], completionHandler: nil)
            }
        }
    }
}

مواد بھیجنے کے بعد، ایکسٹینشن completeRequest کال کرکے ختم ہوتی ہے — یہ ایک لازمی مرحلہ ہے؛ اس کے بغیر نظام ایکسٹینشن کے عمل کو جاری نہیں کرے گا۔ اہم: Share Extension محدود نیٹ ورک اور فائل سسٹم رسائی کے ساتھ ایک محدود ماحول میں چلتی ہے — مواد اپ لوڈ کے لیے پس منظر کے سیشن استعمال کریں۔

مواد کی اقسام پر کارروائی

Share Extension کو مختلف اقسام کے ان پٹ ڈیٹا: متن، تصاویر، ویڈیو، URLs اور فائلوں کو صحیح طریقے سے سنبھالنا چاہیے۔ ہر قسم اپنا UTI اور نکالنے کا طریقہ استعمال کرتی ہے۔ عالمی ہینڈلنگ — hasItemConformingToTypeIdentifier جانچ کے ساتھ attachment.attachments پر لوپ کرکے۔

تصاویر کی ہینڈلنگ

تصاویر public.image کے طور پر UIImage یا Data کے ذریعے حاصل کرنے کی صلاحیت کے ساتھ بھیجی جاتی ہیں۔ بڑی تصاویر کے لیے، محفوظ کرنے سے پہلے jpegData(compressionQuality:) استعمال کریں۔ Share Extension کو صارف کی واضح اجازت کے بغیر اصل تصویر میں ترمیم نہیں کرنی چاہیے۔ سفارش کی جاتی ہے کہ اصل کو App Group میں محفوظ کریں اور انٹرفیس میں دکھانے کے لیے پیش منظر بنائیں۔

URL اور متن کی ہینڈلنگ

Safari اور دوسرے براؤزر URLs کو public.url اور منتخب متن کو public.plain-text کے طور پر بھیجتے ہیں۔ ایک واحد NSExtensionItem ایک ساتھ دونوں اقسام پر مشتمل ہو سکتا ہے — صفحہ کا URL اور اس پر منتخب کردہ متن۔ Share Extension کو تمام منسلکات کی جانچ کرنی چاہیے اور متعلقہ ڈیٹا نکالنا چاہیے۔ مشترکہ منظر نامہ: URL کو بک مارک کے طور پر اور متن کو اس سے منسلک نوٹ کے طور پر محفوظ کریں۔

App Groups اور ڈیٹا کی منتقلی

Share Extension اور مرکزی ایپ مختلف عملوں میں چلتی ہیں اور ان کی فائل سسٹم تک مشترکہ رسائی نہیں ہے۔ ڈیٹا کا تبادلہ App Groups میکانزم استعمال کرتا ہے: group.* شناخت کنندہ کے ساتھ ایک مشترکہ کنٹینر۔ App Group میں ڈیٹا محفوظ کرنے کے بعد، ایکسٹینشن CFNotificationCenter یا Darwin Notify کے ذریعے ایپ کو مطلع کرتی ہے۔

App Groups کی ترتیب

App Groups ہدف کی صلاحیتوں میں فعال کی جاتی ہیں: App Groups منتخب کریں اور ایک شناخت کنندہ شامل کریں (مثال کے طور پر، group.com.example.myapp)۔ دونوں ہدف — مرکزی ایپ اور ایکسٹینشن — کا ایک ہی گروپ تک رسائی ہونی چاہیے۔ UserDefaults سویٹ کم سے کم اضافی بوجھ کے ساتھ مشترکہ ذخیرہ میں ڈیٹا پڑھنے اور لکھنے کی اجازت دیتا ہے۔

swift
// Share Extension سے App Group میں ڈیٹا محفوظ کرنا
let sharedDefaults = UserDefaults(suiteName: "group.com.example.myapp")
let bookmark: [String: Any] = [
    "url": url.absoluteString,
    "title": contentText ?? "",
    "date": Date().timeIntervalSince1970
]
sharedDefaults?.set(bookmark, forKey: "bookmark_\(Date().timeIntervalSince1970)")
sharedDefaults?.synchronize()

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

Share Extension Action Extension سے کیسے مختلف ہے؟

Share Extension دوسری ایپس سے آپ کی ایپ میں مواد وصول کرتی ہے۔ Action Extension اس کے برعکس میزبان ایپ کے اندر مواد پر کارروائی کرتی ہے — متن کا ترجمہ، تصویر میں تبدیلی۔ Share Extension وصول کرنا ہے، Action Extension تبدیلی ہے۔

Info.plist میں کن UTI کی وضاحت کروں؟

یہ آپ کی ایپ کے مواد کی قسم پر منحصر ہے۔ بک مارکس کے لیے — public.url۔ فوٹو ایڈیٹر کے لیے — public.image۔ نوٹس کے لیے — public.plain-text۔ متعدد اقسام کے لیے، AND/OR پریڈیکیٹ کے امتزاج کے ساتھ NSExtensionActivationRule استعمال کریں۔

Share Extension شیر شیٹ میں کیوں ظاہر نہیں ہوتی؟

ایک عام وجہ غلط NSExtensionActivationRule یا UTI کا عدم مطابقت ہے۔ Info.plist میں چیک کریں: فعالیت کا قاعدہ آزمائے گئے مواد کی قسم سے مطابقت رکھتا ہو۔ نیز یقینی بنائیں کہ ایکسٹینشن ترتیبات → آپ کی ایپ → Siri اور تلاش میں فعال ہے۔ Xcode کلین بلڈ اکثر مسئلہ حل کرتا ہے۔

Share Extension کو کارروائی کے لیے کتنا وقت ملتا ہے؟

نظام عملدرآمد کے لیے تقریباً 30 سیکنڈ مختص کرتا ہے۔ اس کے بعد iOS زبردستی ایکسٹینشن کا عمل ختم کر دیتا ہے۔ طویل کارروائیوں کے لیے، پس منظر NSURLSession استعمال کریں اور اگلی ایپ لانچ پر نتیجہ ہینڈل کریں۔

کیا Share Extension میں حسب ضرورت انٹرفیس دکھایا جا سکتا ہے؟

ہاں، SLComposeServiceViewController کے بجائے آپ ایک عام UIViewController استعمال کر سکتے ہیں۔ اس صورت میں، آپ انٹرفیس پر مکمل کنٹرول رکھتے ہیں۔ تاہم، آپ کو بھیجنے اور منسوخ کرنے کے بٹن خود لاگو کرنے ہوں گے۔ حسب ضرورت انٹرفیس غیر معیاری مواد پر کارروائی کے منظرناموں کے لیے تجویز کیا جاتا ہے۔

خلاصہ

  • Share Extension — iOS ایکسٹینشن جو آپ کی ایپ کو سسٹم شیر شیٹ میں شامل کرتی ہے۔
  • مواد Uniform Type Identifiers کے ساتھ NSExtensionItem کے ذریعے منتقل کیا جاتا ہے۔
  • فعالیت کی ترتیب Info.plist میں NSExtensionActivationRule کے ذریعے مقرر کی جاتی ہے۔
  • SLComposeServiceViewController — پیش منظر اور پوسٹنگ کے ساتھ بنیادی انٹرفیس۔
  • App Groups — ایکسٹینشن اور ایپ کے درمیان ڈیٹا کے تبادلے کا میکانزم۔
  • Share Extension محدود ماحول میں کام کرتی ہے (30 سیکنڈ، محدود رسائی)۔
  • Share Extension والی ایپس 35% زیادہ صارفی مواد حاصل کرتی ہیں۔

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

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

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

مزید پڑھیں