Intents Extension ایک iOS ایکسٹینشن ہے جو تیسرے فریق کی ایپلی کیشنز کو Siri کے صوتی کمانڈز پروسیس کرنے اور SiriKit کے ذریعے سسٹم سروسز کے ساتھ تعامل کرنے کی اجازت دیتی ہے۔ ایپ Intents.intentdefinition میں اپنے انٹینٹس کی وضاحت کرتی ہے، INIntentHandler پر مبنی ہینڈلرز کو لاگو کرتی ہے، اور انہیں صوتی فقروں کی پہچان کے لیے رجسٹر کرتی ہے۔ Apple Developer Documentation (2025) کے مطابق، SiriKit 20 سے زیادہ انٹینٹ ڈومینز کو سپورٹ کرتا ہے — پیغام رسانی اور ادائیگیوں سے لے کر ورزشوں اور بکنگ تک — اور iOS 14 سے IntentsExtension کے ذریعے کسٹم انٹینٹس کی معاونت شامل کی گئی۔
اہم نکات
Intents Extension ایک ایپ ایکسٹینشن ہے جو Siri، Shortcuts اور دیگر سسٹم سروسز کو معیاری INIntentHandler پروٹوکول کے ذریعے ایپ کی فعالیت کو کال کرنے کی اجازت دیتی ہے۔ جب کوئی صارف کہتا ہے «ارے Siri، Messenger X میں پیغام بھیجو»، Siri متعلقہ ایکسٹینشن کو فعال کرتا ہے، درخواست کے پیرامیٹرز منتقل کرتا ہے، اور آواز دینے کے لیے نتیجہ حاصل کرتا ہے۔
دیگر اقسام کی ایکسٹینشنز کے برعکس، Intents Extension نظر آنے والے انٹرفیس کے بغیر پس منظر میں کام کرتا ہے — Siri آواز یا ٹیکسٹ کارڈ کے ذریعے جواب ظاہر کرتا ہے۔ ایکسٹینشن اختیاری طور پر INUIHostedViewProviding کے ذریعے کسٹم UI فراہم کر سکتی ہے، جو تصدیق کے لیے کمانڈ پر عمل درآمد سے پہلے Siri کے اندر ظاہر ہوتا ہے۔
ایکسٹینشن کے پاس ڈیوائس اسکرین تک رسائی نہیں ہے اور وہ خود ایکشن شروع نہیں کر سکتی — صرف Siri یا Shortcuts کی درخواست کے جواب میں۔ یہ تحفظ کو یقینی بناتا ہے: صارف ہمیشہ کنٹرول کرتا ہے کہ ایپ صوتی کمانڈز کے ذریعے کون سے کام انجام دیتی ہے۔
SiriKit Siri انضمام کے لیے Apple کا فریم ورک ہے، جو iOS 10 میں متعارف کرایا گیا تھا۔ یہ ڈومینز کی وضاحت کرتا ہے — اعمال کے زمرے جو Siri سنبھال سکتا ہے: پیغامات، فون کالز، ادائیگیاں، فہرستیں، یاد دہانیاں، تصاویر، ورزشیں، بکنگ اور دیگر۔ ہر ڈومین میں انٹینٹس اور جوابات کا ایک مقررہ سیٹ ہوتا ہے۔
INSendMessageIntent — پیغامات بھیجنا۔ INStartWorkoutIntent — ورزش شروع کرنا۔ INSearchForPhotosIntent — تصاویر تلاش کرنا۔ INRequestRideIntent — سواری بک کرنا۔ ہر ڈومین لازمی اور اختیاری پیرامیٹرز کی وضاحت کرتا ہے جو Siri صوتی درخواست سے نکالتا ہے۔ Apple کے مطابق، معیاری ڈومینز کو intentdefinition فائل کی ضرورت نہیں ہے — متعلقہ ہینڈلر کو لاگو کرنا کافی ہے۔
ان ایپس کے لیے جو معیاری ڈومینز میں فٹ نہیں آتیں، iOS 14 نے کسٹم انٹینٹس استعمال کرنے کی صلاحیت متعارف کرائی۔ ایپ Intents.intentdefinition کے ذریعے اپنے کمانڈ کی اقسام اور ان کے پیرامیٹرز کی وضاحت کرتی ہے، اور Siri ڈیولپر کی طرف سے فراہم کردہ مثالوں کی بنیاد پر متعلقہ فقروں کو پہچاننا سیکھتا ہے۔
Intents Extension Info.plist میں IntentsSupported کلید کے ذریعے رجسٹر ہوتا ہے، جو ان تمام انٹینٹ کلاسز کی فہرست دیتا ہے جن پر ایکسٹینشن کارروائی کرتی ہے۔ Siri صوتی کمانڈ کو پہچانتے وقت مناسب ایکسٹینشن منتخب کرنے کے لیے اس فہرست کا استعمال کرتا ہے۔ اگر متعدد ایکسٹینشنز ایک ہی انٹینٹ کو سپورٹ کرتی ہیں، تو Siri صارف سے انتخاب کرنے کو کہتا ہے۔
class MessageIntentHandler: NSObject,
INSendMessageIntentHandling {
func handle(
intent: INSendMessageIntent,
completion: @escaping
(INSendMessageIntentResponse) -> Void
) {
let response = INSendMessageIntentResponse(
code: .success, userActivity: nil)
completion(response)
}
}
INIntentHandler ایک پروٹوکول ہے جو انٹینٹ پروسیسنگ کے ہر مرحلے (پیرامیٹر حل، تصدیق اور عمل درآمد) کو سنبھالنے کے لیے میتھڈز کی وضاحت کرتا ہے۔ ایکسٹینشن ان میتھڈز کو ہر انٹینٹ قسم کے لیے لاگو کرتی ہے جسے وہ سپورٹ کرتی ہے۔
resolve — انٹینٹ پیرامیٹرز کی توثیق اور وضاحت۔ Siri ہر پیرامیٹر کے لیے اس میتھڈ کو کال کرتا ہے۔ اگر کوئی پیرامیٹر غائب یا غلط ہو تو، ایکسٹینشن وضاحت کی درخواست لوٹاتی ہے، اور Siri صارف سے ایک اضافی سوال پوچھتا ہے۔ confirm — ارادے کی تصدیق۔ ایکسٹینشن چیک کرتی ہے کہ آیا وہ موجودہ سیاق و سباق میں انٹینٹ پر عمل درآمد کر سکتی ہے۔ handle — آپریشن کا حقیقی عمل درآمد اور نتیجہ لوٹانا۔
تین مراحل میں علیحدگی صوتی صارف تجربے کے لیے انتہائی اہم ہے: اگر کوئی پیرامیٹر پہچانا نہ جائے تو Siri عمل نہیں کرتا بلکہ وضاحت طلب کرتا ہے۔ مثال کے طور پر، اگر صارف نے کہا «Alex کو پیغام بھیجو» لیکن رابطوں میں تین Alex ہوں — ایکسٹینشن وضاحت کی درخواست کے ساتھ resolve لوٹاتی ہے، اور Siri پوچھتا ہے «کون سا Alex؟»
INIntentResponse ایک آبجیکٹ ہے جسے ایکسٹینشن انٹینٹ پر عمل درآمد کے بعد کمپلیشن ہینڈلر میں لوٹاتی ہے۔ جواب میں ایک نتیجہ کوڈ (success، failure، requiresAuthentication، inProgress) اور Siri کے آواز دینے کے لیے اختیاری ڈیٹا ہوتا ہے۔ کوڈ طے کرتا ہے کہ Siri کیسے جواب دیتا ہے: success — صوتی تصدیق، failure — خرابی کا پیغام، inProgress — طویل آپریشن کا اشارہ۔
func resolve(
for intent: INSendMessageIntent,
with completion: @escaping
(INStringResolutionResult) -> Void
) {
if let text = intent.content, !text.isEmpty {
completion(.success(with: text))
} else {
completion(.needsValue())
}
}
iOS 14 کے ساتھ، ڈیولپرز کو معیاری SiriKit ڈومینز سے باہر کسٹم انٹینٹس کی وضاحت کرنے کی صلاحیت ملی۔ کسٹم انٹینٹس Intents.intentdefinition فائل میں بیان کیے جاتے ہیں — Xcode کے اندر ایک بصری ایڈیٹر جہاں پیرامیٹرز اور جوابات کے ساتھ نئی کمانڈ اقسام بنائی جاتی ہیں۔
ہر کسٹم انٹینٹ INIntent (درخواست کی وضاحت) اور INIntentResponse (جواب کی وضاحت) پر مشتمل ہوتا ہے۔ INIntent میں ڈیٹا کی اقسام کے ساتھ پیرامیٹرز ہوتے ہیں — String، Integer، CurrencyAmount، ملنے والی اشیاء اور دیگر۔ INIntentResponse میں نتائج واپس کرنے کے لیے خصوصیات اور جوابی کوڈز کی ایک صف ہوتی ہے۔ Xcode اس وضاحت کی بنیاد پر خود بخود Swift کلاسز تیار کرتا ہے۔
Apple کسٹم انٹینٹ میں 5 سے زیادہ پیرامیٹرز شامل نہ کرنے کی سفارش کرتا ہے — ضرورت سے زیادہ پیرامیٹرز صوتی شناخت کو کم کرتے ہیں اور صارف کے تجربے کو پیچیدہ بناتے ہیں۔ ہر پیرامیٹر کے لیے، اسسٹنٹ ڈائیلاگ میں مثالی جملے فراہم کرنا مناسب ہے تاکہ Siri انہیں درست طریقے سے پہچاننا سیکھے۔
Intents.intentdefinition میں، ہر انٹینٹ کے لیے آپ مثالی جملے متعین کر سکتے ہیں — وہ فقرے جو صارف انٹینٹ کو فعال کرنے کے لیے Siri سے کہے گا۔ مثالیں: «میری ایپ میں کافی آرڈر کرو»، «میری ایپ سے پیزا کی ترکیب تلاش کرنے کو کہو»۔ Siri شناخت کی تربیت کے لیے ان فقروں کا استعمال کرتا ہے اور Shortcuts ترتیب دیتے وقت صارف کو تجویز کرتا ہے۔
// Intents.intentdefinition (بصری ایڈیٹر)
Intent: OrderCoffeeIntent
Parameters:
- beverage (String)
- size (String)
- quantity (Integer)
Response:
- orderNumber (String)
- price (CurrencyAmount)
Phrases:
- "Order coffee in MyApp"
- "Get a latte from MyApp"
INUIHostedViewProviding ایک پروٹوکول ہے جو Intents Extension کو کمانڈ پر عمل درآمد سے پہلے Siri کے اندر کسٹم انٹرفیس دکھانے کی اجازت دیتا ہے۔ مثال کے طور پر، سواری بک کرتے وقت، ایکسٹینشن راستے اور لاگت کے ساتھ نقشہ دکھا سکتی ہے، اور صارف ٹیپ کرکے عمل کی تصدیق کرتا ہے۔
پروٹوکول میتھڈ configure(with:for:completion:) کی وضاحت کرتا ہے، جہاں ایکسٹینشن انٹینٹ حاصل کرتی ہے اور Siri میں شامل کرنے کے لیے UIViewController لوٹاتی ہے۔ کنٹرولر کا سائز محدود ہے — زیادہ سے زیادہ اونچائی 200 پوائنٹس۔ کلیدی معلومات (رقم، وقت، پتہ) کے ساتھ کمپیکٹ کارڈ استعمال کرنے کی سفارش کی جاتی ہے۔
کسٹم انٹرفیس اختیاری ہے — اگر ایکسٹینشن INUIHostedViewProviding کو لاگو نہیں کرتی، Siri انٹینٹ کی قسم اور ایپ کے نام کے ساتھ ایک معیاری کارڈ دکھاتا ہے۔ زیادہ تر انٹینٹس کے لیے، معیاری UI کافی ہے، اور Apple صرف اس وقت کسٹم انٹرفیس شامل کرنے کی سفارش کرتا ہے جب یہ واقعی سمجھ کو بہتر بناتا ہے — مثال کے طور پر، راستہ دکھانے یا ادائیگی کی تصدیق کرنے کے لیے۔
مالی یا ذاتی ڈیٹا سے متعلق انٹینٹس کے لیے، تصدیق ضروری ہے۔ INIntentResponse requiresAuthentication کوڈ کو سپورٹ کرتا ہے، جو عمل درآمد سے پہلے Siri کو Face ID یا Touch ID کی درخواست کرنے پر مجبور کرتا ہے۔ تصدیق کے بعد، ایکسٹینشن ایک علیحدہ handle کال کے ذریعے تصدیق حاصل کرتی ہے، جہاں تصدیق کی حیثیت چیک کی جاتی ہے۔
Apple خاص طور پر زور دیتا ہے: Intents Extension کو اپنا پاس ورڈ یا بائیو میٹرکس طلب نہیں کرنا چاہیے — سسٹم تصدیق استعمال کی جاتی ہے۔ ایپ اور ایکسٹینشن کے درمیان مشترکہ رسائی کے ساتھ Keychain میں رسائی کے ٹوکن محفوظ کرنا طویل مدتی سیشنز کے لیے معیاری عمل ہے۔
class IntentViewController: UIViewController {
func configure(
with intent: INIntent,
completion: @escaping
(UIViewController?) -> Void
) {
let cardView = ConfirmationCardView()
let hostingController =
UIHostingController(rootView: cardView)
completion(hostingController)
}
}
اکثر پوچھے گئے سوالات
ہاں، ایکسٹینشن صوتی ان پٹ کے بغیر Shortcuts ایپ سے انٹینٹس پر کارروائی کر سکتی ہے۔ صارف تجویز کردہ اعمال سے شارٹ کٹ بناتا ہے، اور ایکسٹینشن Siri کی شرکت کے بغیر اسے انجام دیتی ہے۔
کسٹم انٹینٹس iOS 14 اور اس کے بعد کے ورژنز میں دستیاب ہیں۔ iOS 10–13 کے لیے، صرف معیاری SiriKit ڈومینز دستیاب ہیں۔ کسٹم انٹینٹس کے لیے Intents.intentdefinition اور Swift کلاس جنریشن کی ضرورت ہے۔
Siri ایکسٹینشن کے جواب کا تقریباً 15 سیکنڈ انتظار کرتا ہے۔ حد سے تجاوز کرنے پر، Siri صارف کو مطلع کرتا ہے کہ عمل مکمل نہیں ہو سکا۔ طویل آپریشنز کے لیے، inProgress جوابی کوڈ استعمال کریں۔
مین ایپ اور ایکسٹینشن کے درمیان رسائی گروپ کے ذریعے مشترکہ رسائی کے ساتھ Keychain استعمال کریں۔ App Group shared UserDefaults ایک متبادل ہے لیکن تحفظ میں Keychain سے کم تر ہے۔
Intents Extension منطق کو سنبھالتا ہے — resolve، confirm، handle۔ Intents UI Extension INUIHostedViewProviding کے ذریعے Siri کے اندر ظاہر کرنے کے لیے کسٹم انٹرفیس فراہم کرتا ہے۔ دونوں مل کر کام کر سکتے ہیں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں