AppIntent হল Apple-এর একটি ফ্রেমওয়ার্ক যা iOS 16-তে পুরোনো Intents framework-এর প্রতিস্থাপন হিসেবে উপস্থাপিত হয়েছে, যা Siri, Shortcuts এবং Spotlight-এর সাথে অ্যাপ ইন্টিগ্রেট করার জন্য একটি ডিক্লারেটিভ API প্রদান করে। পুরোনো পদ্ধতির বিপরীতে, যার জন্য আলাদা Intent Definition File এবং ObjC কোড জেনারেশন প্রয়োজন ছিল, AppIntent AppIntent এবং AppEnum প্রোটোকলের সাথে বিশুদ্ধ Swift ব্যবহার করে। Apple Developer ডকুমেন্টেশন, 2026 অনুযায়ী, AppIntent Intents framework-এর তুলনায় একটি ইন্টেন্ট তৈরি করতে কোডের পরিমাণ গড়ে 60% কমায়, এবং Siri কমান্ড ইন্টিগ্রেশনের সময় কয়েক দিন থেকে কয়েক ঘণ্টায় নেমে আসে।
মূল বিষয়
AppIntent হল Apple-এর একটি ফ্রেমওয়ার্ক যা ডিক্লারেটিভভাবে কমান্ড বর্ণনা করার জন্য যা আপনার অ্যাপ Siri, Shortcuts, Spotlight, Control Center এবং Action Button-এর অনুরোধে কার্যকর করতে পারে। এর ভিত্তি হল AppIntent প্রোটোকল, যেখানে ডেভেলপার ইন্টেন্টের নাম, এর প্যারামিটার এবং perform() মেথড — কার্যকরযোগ্য লজিক বর্ণনা করে। ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে Shortcuts অ্যাপে প্যারামিটার কনফিগার করার জন্য ইউজার ইন্টারফেস এবং Siri-র জন্য ভয়েস ফ্রেজ জেনারেট করে।
AppIntent-এর আগে, ডেভেলপাররা Intents framework ব্যবহার করত — Intents Definition File-এর উপর ভিত্তি করে একটি সিস্টেম যা Objective-C কোড জেনারেট করত এবং আলাদা Intents Extension সেটআপ প্রয়োজন হত। এই প্রক্রিয়াটি জটিল ছিল: একটি সাধারণ ইন্টেন্টের জন্যও ৫টি কনফিগারেশন ফাইলের প্রয়োজন হত। AppIntent এই জটিলতা দূর করে — একটি ইন্টেন্ট একটি Swift ফাইলে বর্ণিত হয়, এবং সিস্টেম স্বয়ংক্রিয়ভাবে Siri এবং Shortcuts-এর সাথে ইন্টিগ্রেশনের জন্য প্রয়োজনীয় সবকিছু জেনারেট করে।
WWDC 2024 সেশন "Dive deeper into App Intents" অনুযায়ী, Apple AppIntent-কে ঐতিহ্যগত UI-এর বাইরে অ্যাপ কার্যকারিতা বাড়ানোর কেন্দ্রীয় প্রক্রিয়া হিসেবে দেখে। iOS 18 প্রকাশের সময়, App Store-এর শীর্ষ ১০০-এর মধ্যে ৭০% এরও বেশি অ্যাপ ইতিমধ্যে Shortcuts এবং Siri-এর সাথে ইন্টিগ্রেশনের জন্য AppIntent ব্যবহার করছে, এবং গড় iOS 18 ব্যবহারকারী ভয়েস কমান্ড বা উইজেটের মাধ্যমে প্রতিদিন ৪-৬টি ইন্টেন্ট চালায়।
Intents framework (iOS 10–15) এ .intentdefinition ফাইল তৈরি, Xcode-এর মাধ্যমে ObjC/Swift ক্লাস জেনারেট, Intents Extension এবং App Intent Configuration সেটআপ প্রয়োজন ছিল। AppIntent (iOS 16+) এই পাইপলাইনটি সম্পূর্ণরূপে জেনারেশন, এক্সটেনশন বা অতিরিক্ত কনফিগারেশন ছাড়াই বিশুদ্ধ Swift কোড দিয়ে প্রতিস্থাপন করে। এটি SiriKit অধ্যয়ন না করেই গড় iOS ডেভেলপারের জন্য ইন্টেন্ট তৈরি প্রক্রিয়াকে সুলভ করে তোলে।
AppIntent-এর মূল সুবিধা হল ডিক্লারেটিভনেস। ডেভেলপার বর্ণনা করে যে ইন্টেন্ট কী করে, না যে এটি সিস্টেমের সাথে কীভাবে ইন্টিগ্রেট হয়। ফ্রেমওয়ার্ক নিজেই Siri সংলাপ পরিস্থিতি, Shortcuts-এ প্যারামিটার প্রদর্শন এবং ইন্টেন্টের মধ্যে প্রসঙ্গ স্থানান্তর পরিচালনা করে। পুরোনো Intents framework-এ, ইন্টিগ্রেশনের প্রতিটি দিক ম্যানুয়ালি কোড করতে হত, যার মধ্যে ইন্টেন্ট UI প্রদর্শনের জন্য INUIHostedView-ও অন্তর্ভুক্ত ছিল।
| বৈশিষ্ট্য | Intents framework | AppIntent |
|---|---|---|
| কোডের পরিমাণ | প্রতি ইন্টেন্টে ১০০-৩০০ লাইন | ৩০-৬০ লাইন |
| প্রয়োজনীয় ফাইল | .intentdefinition, Extension, Config | ১টি Swift ফাইল |
| কোড জেনারেশন | প্রয়োজন (Xcode -> ObjC) | প্রয়োজন নেই |
| অ্যাসিঙ্ক্রোনিসিটি | শুধুমাত্র completion handler | async/await + প্রগ্রেস |
| IntentDialog | না | বিল্ট-ইন Siri সংলাপ |
AppIntent হল কেন্দ্রীয় প্রোটোকল যা একটি ইন্টেন্ট নির্ধারণ করে। এতে title (Siri-র জন্য নাম), description (Shortcuts-এ বিবরণ), প্যারামিটার (@Parameter-এর মাধ্যমে) এবং perform() মেথড যা IntentResult রিটার্ন করে। ফলাফল হতে পারে IntentDialog (Siri সংলাপ), Shortcuts-এ ফেরত দেওয়ার জন্য মান বা একটি ত্রুটি। প্রতিটি ইন্টেন্ট suggestedInvocationPhrase-ও সরবরাহ করতে পারে — ভয়েস ইনভোকেশনের জন্য একটি বাক্যাংশ।
AppEntity সত্তা বর্ণনা করে যাদের সাথে ইন্টেন্ট কাজ করে। উদাহরণস্বরূপ, যদি অ্যাপ প্রজেক্ট পরিচালনা করে, তাহলে AppEntity Project-এ id, displayRepresentation (UI-তে সত্তা কীভাবে প্রদর্শন করবেন) এবং defaultQuery (সত্তা কীভাবে সার্চ করবেন) অন্তর্ভুক্ত থাকে। AppEnum হল নির্বাচন প্যারামিটারের জন্য এনুমারেশন যা Shortcuts-এ পিকার এলিমেন্ট সহ স্বয়ংক্রিয়ভাবে UI জেনারেট করে। ম্যানুয়ালি প্যারামিটার তালিকা তৈরি করার পরিবর্তে, AppEnum-এর সাথে সামঞ্জস্যপূর্ণ enum ঘোষণা করাই যথেষ্ট।
enum TaskPriority: String, AppEnum {
case low, medium, high
static var typeDisplayRepresentation: TypeDisplayRepresentation =
"Priority"
var displayRepresentation: DisplayRepresentation {
switch self {
case .low: "Low"
case .medium: "Medium"
case .high: "High"
}
}
}
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Create Task"
@Parameter(title: "Task Name")
var taskName: String
@Parameter(title: "Priority")
var priority: TaskPriority
func perform() async throws -> some IntentResult {
try await TaskManager.shared
.createTask(name: taskName, priority: priority)
return .result(dialog: "Task created")
}
}
AppIntent প্যারামিটার @Parameter প্রপার্টি র্যাপারের মাধ্যমে ঘোষণা করা হয়, যা স্বয়ংক্রিয়ভাবে Shortcuts UI এবং Siri ভয়েস অনুরোধের সাথে ইন্টিগ্রেট হয়। প্রতিটি প্যারামিটারের একটি title (Shortcuts-এ প্রদর্শিত) থাকে এবং এতে বিবরণ, ডিফল্ট মান এবং সীমাবদ্ধতা অন্তর্ভুক্ত থাকতে পারে। AppIntent স্ট্যান্ডার্ড টাইপ সমর্থন করে: String, Int, Double, Bool, পাশাপাশি AppEntity এবং AppEnum-এর মাধ্যমে কাস্টম টাইপ।
প্যারামিটার বৈধতা লজিক কার্যকর করার আগে perform() মেথডে করা হয়। যদি প্যারামিটারগুলি অবৈধ হয়, তাহলে ইন্টেন্ট IntentError-এর মাধ্যমে ত্রুটি রিটার্ন করে। জটিল বৈধতার জন্য, validate() মেথড প্রয়োগ করা যেতে পারে, যা perform()-এর আগে কল করা হয় এবং কমান্ড কার্যকর করার আগেই IntentDialog-এর মাধ্যমে ব্যবহারকারীকে প্রতিক্রিয়া জানাতে পারে। এটি Siri ভয়েস পরিস্থিতির জন্য বিশেষভাবে কার্যকর, যেখানে ব্যবহারকারীকে পুনরায় জিজ্ঞাসা করা ভুল কমান্ড কার্যকর করার চেয়ে সহজ।
struct SendMessageIntent: AppIntent {
static var title: LocalizedStringResource = "Send Message"
@Parameter(title: "Recipient")
var recipient: String
@Parameter(title: "Message")
var message: String
func validate() throws {
guard message.count >= 1 else {
throw IntentError.invalidMessage
}
}
func perform() async throws -> some IntentResult {
try await Messenger.shared
.send(recipient: recipient, text: message)
return .result(dialog: "Sent!")
}
}
একটি অ্যাপে নোট সার্চ করার জন্য ইন্টেন্টের সম্পূর্ণ উদাহরণ AppEntity এবং EntityQuery-এর সাথে কাজ প্রদর্শন করে। SearchNotesIntent একটি সার্চ স্ট্রিং নেয় এবং পাওয়া নোটের তালিকা রিটার্ন করে। AppEntity Note নোটের গঠন বর্ণনা করে, এবং EntityQuery স্টোরেজ জুড়ে সার্চ বাস্তবায়ন করে। ফলাফল সত্তার একটি অ্যারের সাথে IntentResult-এর মাধ্যমে রিটার্ন করা হয়, যা Shortcuts ব্যবহারকারীকে প্রদর্শন করে।
struct Note: AppEntity {
let id: UUID
let title: String
let content: String
static var typeDisplayRepresentation: TypeDisplayRepresentation =
"Note"
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "(title)")
}
}
struct SearchNotesIntent: AppIntent {
static var title: LocalizedStringResource = "Search Notes"
@Parameter(title: "Query")
var query: String
func perform() async throws -> some IntentResult {
let results = await NoteStore.shared
.search(query)
.map { $0.toEntity() }
return .result(value: results)
}
}
AppIntent ঘোষণা করার পর, Shortcuts এবং Siri-এর সাথে ইন্টিগ্রেশন স্বয়ংক্রিয়ভাবে ঘটে। Shortcuts অ্যাপ ইনস্টল করা অ্যাপ থেকে সমস্ত AppIntents স্ক্যান করে এবং উপলব্ধ অ্যাকশনের তালিকায় সেগুলি প্রদর্শন করে। ব্যবহারকারী তাদের শর্টকাটে একটি ইন্টেন্ট যোগ করতে পারে, এর প্যারামিটার কনফিগার করতে পারে এবং এটি অন্যান্য অ্যাকশনের সাথে একত্রিত করতে পারে। Siri-র জন্য, ডেভেলপারের পক্ষ থেকে অতিরিক্ত সেটআপ ছাড়াই ইন্টেন্ট ভয়েস কমান্ড হিসেবে উপস্থিত হয়।
ডেভেলপার suggestedInvocationPhrase যোগ করে ইন্টিগ্রেশন উন্নত করতে পারে — ভয়েস ইনভোকেশনের জন্য প্রস্তাবিত বাক্যাংশ। উদাহরণস্বরূপ, টাস্ক যোগ করার ইন্টেন্টের জন্য: suggestedInvocationPhrase = "Add new task"। Siri এই বাক্যাংশ বিশ্লেষণ করে এবং ভয়েস কমান্ড শেখার সময় ব্যবহারকারীকে এটি সুপারিশ করে। categories-ও নির্দিষ্ট করা যেতে পারে — ইন্টেন্ট ক্যাটাগরি (create, view, search, edit), যা Shortcuts-কে অর্থ অনুযায়ী অ্যাকশন গ্রুপ করতে সাহায্য করে।
| ক্যাটাগরি | উদাহরণ | Shortcuts-এ আচরণ |
|---|---|---|
| .create | CreateTaskIntent | অন্যান্য তৈরি অ্যাকশনের সাথে গ্রুপ হয় |
| .view | ViewWeatherIntent | "দেখুন" ক্যাটাগরিতে প্রদর্শিত হয় |
| .search | SearchNotesIntent | সার্চ অ্যাকশন হিসেবে চিহ্নিত হয় |
| .edit | UpdateTaskIntent | সম্পাদনা অ্যাকশনের সাথে গ্রুপ হয় |
সচরাচর জিজ্ঞাসিত প্রশ্ন
না। AppIntent-এর আলাদা Intents Extension প্রয়োজন নেই। ইন্টেন্ট সরাসরি প্রধান অ্যাপ্লিকেশনে কম্পাইল হয়, যা আর্কিটেকচার সহজ করে এবং আন্তঃপ্রক্রিয়া যোগাযোগের প্রয়োজনীয়তা দূর করে।
AppIntent iOS 16+, iPadOS 16+, macOS 13+, watchOS 9+ এ উপলব্ধ। iOS 15 এবং পুরোনোর জন্য, Intents framework ব্যবহার করতে হবে। বিস্তৃত ডিভাইস কভারেজের জন্য উভয় API সমর্থন করার পরামর্শ দেওয়া হয়।
IntentsResult String, Int, Double, Bool, AppEntity অ্যারে, IntentDialog এবং কাস্টম টাইপ সমর্থন করে। জটিল ডেটা স্ট্রাকচার EntityQuery-এর মাধ্যমে রিটার্ন করা হয়, যা স্বয়ংক্রিয়ভাবে Shortcuts UI-এর সাথে ইন্টিগ্রেট হয়।
হ্যাঁ, AppIntentsPackage-এর মাধ্যমে — একটি প্যাকেজ যা সার্ভার সাইডে ইন্টেন্ট কার্যকর করার অনুমতি দেয়। এটি সার্ভার লজিকযুক্ত অ্যাপের জন্য কার্যকর যেখানে ইন্টেন্টের স্থানীয়ভাবে উপলব্ধ নয় এমন ডেটা অ্যাক্সেস প্রয়োজন।
Shortcuts অ্যাপ সহ iOS 16+ সিমুলেটর ব্যবহার করুন। সিমুলেটরে Shortcuts কমান্ডে ইন্টেন্ট যোগ করুন এবং এটি চালান। Siri পরিস্থিতির জন্য শারীরিক ডিভাইস প্রয়োজন কারণ সিমুলেটর ভয়েস ইনপুট সমর্থন করে না।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন