Siri Entegrasyonu ile iOS'ta bir ses-Enabled To-Do Listesi App inşa

Ses kontrolü, modern verimlilik uygulamaları için önemli bir beklenti haline geldi. Kullanıcılara işleri el özgürleştirmek için izin vererek iOS geliştiricileri, başlangıç projesinden ileri niyetle ve en iyi dağıtım uygulamaları için önemli ölçüde daha erişilebilir ve verimli bir şekilde oluşturabilir.Eğer bir sezon akıllı ses asistanı, uygulamanıza doğrudan entegre etmek için sağlam bir çerçeve sunar.Bu kılavuz, uygulamanıza yardımcı olacaktır.

SiriKit ve Görev Yönetimindeki Rolü

SiriKit, uygulamanızın Siri'ye işlevselliğini uzatmasına izin veren bir çerçevedir. Farklı bir ses arayüzü oluşturmak yerine, eylemleri tanımlayabilirsiniz kullanıcıların ses komutları aracılığıyla performans gösterebilir ve Siri konuşma tanıma ve doğal dil işleme ile uğraşır.For a to-do list app, SiriKit, bir görevi yerine getirmek, mevcut görevleri göstermek veya hatta tam olarak bir görevi işaretlemek gibi eylemleri sağlar.

Çerçeve, kullanıcı eylemlerinizi temsil eden nesnelerdir. Uygulamanız, kullanıcı adınızı ve listelerini destekleyen özel amaçlara sahiptir.Bir kullanıcı “Hey Siri, alışveriş listeme süt ekle” gibi konuştuğunda, kullanıcınıza doğru ifadeyi doğrulayan yanıt verir.

SiriKit kullanmanın temel faydaları şunlardır:

  • [FONT:0]Hands-free operation:) Kullanıcılar, sürüş, yemek pişirme veya egzersiz yaparken görevleri yönetebilir.
  • [[Dönetici:0)İncreased accessibility:) Ses kontrolü, kullanıcıların motor veya görsel bozukluklarla yardımcı olur.
  • [FONT:0) Sistem ses etkileşimleri ile ilgili olarak kabul edilebilirlik:) Uygulamanız ilk sınıf iOS vatandaşı gibi hissettiriyor.
  • [FONT:0)Shortcut entegrasyonu:) Kullanıcılar sık kullanılan eylemler için özel Siri kısayolları oluşturabilir.

SiriKit vs. Diğer Ses Çözümleri

SiriKit, özel konuşma tanıma ( Konuşma çerçevesi ile) veya Google Talk-Text gibi üçüncü taraf hizmet için önerilen bir yaklaşımdır. SiriKit, sistemin asistanıyla entegrasyon için önerilen bir yaklaşımdır, çünkü ayrı bir ses kaydı UI gerektirmez ve Apple cihazlarla çalışır. Konuşma çerçevesi, keyfi ses akışları işlemeniz gereken uygulamalar için daha uygundur (örneğin, SiriKit.

Siri Entegrasyon için Projenizi Ayarlayın

Sesli bir uygulama oluşturmak standart Xcode proje yapılandırmasıyla başlar. Siri kapasitesinin ve uygulama çalışmıyorken bile taleplerin üstesinden gelmeleri için bir niyet eklemelisiniz.

Adım 1: Yeni bir Xcode Project oluşturun

Xcode'u başlatın ve yeni bir proje oluşturun. [FONTD:0]App) Projenize bir isim verin, örneğin [[Üyelim:2|VoiceTodo) ve SwiftUI veya UIKit'in tercihinize göre seçili olmasını sağlayın.

2. Adım: Siri Capability

Uygulama hedefinizin [[0)Signing & Capivity[Döneticileri sekmesine tıklayın, niyetinizi kabul etmeyecektir.[Dönetici:2).

Adım 3: Bir niyet ekin

Siri'nin uygulamanızda bile niyetleri ele geçirmesine izin vermek veya başlatmanıza izin vermek için, aşağıdaki tablonun "Uygulama" bölümünden (örneğin, "Uygulamalar" başlığı altında) bir sonraki dosyanın (örneğin) ve adın (örneğin,) "WinT:0)) ile ayrı bir hedef oluşturacağız.

Adım 4: Bir niyet Tanımlama Dosyası Oluşturun

Ana uygulama hedefinizde, [[Döntme:0)Intents Tanım) şablon (önetici Şablonları altında) İsim iturFLT:2.TodoIntents).Bu dosya özel niyetlerinizi tanımladığınız yerdir.

Tanım dosyasının her iki hedefe de mevcut olmasını sağlamak için, hem ana uygulamanızı hem de niyetlerinizi seçin:0)TodoIntents Bu adım genellikle göz ardı edilir, ancak gerekli Swift sınıflarını oluşturmak için kritiktir.

To-Do Operasyonları için Özel Niyetleri Tanımlamak

Önlem dosyası hazırla, şimdi ses komutlarınızı güçlendirecek özel niyetleri yaratabilirsiniz. temel bir to-do listesi uygulaması için, en az üç niyet isteyeceksiniz: [[Üye:0}AddTaskIntent).

AddTaskIntent

  1. OpenFLT:0)TodoIntents.intentdefinition[DK:2)|[Dönetici:0)|Dolt|Dönemli-solda (D))[[Dönemli))))
  2. Ad: Ad the goalFL: 1).
  3. [Üye Olmayanlar İçin Tıklayınız.)[Üye Olmayanlar İçin Tıklayınız.
  4. parametrenin [[0) adı:([değiştir | kaynağı değiştir))[değiştir | kaynağı değiştir] ve [[Task Name”) ve ).Prompt).
  5. [FONT:0]Response[[DÜDÜT 1: 1 ) Bölüm, [DÜDÜ:3) ve “Eklenmiş {{taskName}} gibi bir yanıt şablonu tanımlamak.
  6. Emin olun:0)Müşteri Sınıfı[[Dönetici: 1) kontrol edilir ve sınıf adı ►FLT:4).

Rehre'yi yaratmak

Bir ►FLT:5 için süreci tekrarlayın.AİLMİŞEŞİYLEM {{taskName}} veya “{{taskName}} bulunamadı” (Mezun:0Failure yanıt) türü, görevin mevcut olmadığı zaman için.

ShowTasksIntent

AŞAM 7) Bunun yerine, herhangi bir parametreye ihtiyacınız olmayabilir. Bunun yerine, bir görev listesi içeren bir yanıta güvenebilirsiniz. Cevap bölümünde, aİLFLT:0)Content).

Dersin Çıktıları

Tüm niyetleri tanımlamadan sonra, projenizi inşa edin. Xcode, her niyet ve cevabı için Swift sınıflarını otomatik olarak üretecektir.Bu sınıflar DÜDÜ'de yaşar:0)DerivedData) klasörü ancak editörünüzde görünürsünüz.

Uygulamanızda ve Dahiliye Yönelik Niyetleri Uygulama ve

Şimdi niyetlerin tanımlanması, Siris uygulamanızı talep ettiğinde onları idare eden kodu yazmanız gerekir.

niyetleri işlemek,

İstekler uzatma hedefi varsayılan bir dosyayı içerir. Açıklayın ve üretilen niyet işleme protokollerine uygun bir sınıfla içeriklerini yerine getirir.Her niyet kendi eller yöntemine sahip olacaktır.

import Intents

class IntentHandler: INExtension, AddTaskIntentHandling, RemoveTaskIntentHandling, ShowTasksIntentHandling {

 override func handler(for intent: INIntent) -> Any? {
 return self
 }

 // MARK: - Add Task
 func handle(intent: AddTaskIntent, completion: @escaping (AddTaskIntentResponse) -> Void) {
 guard let taskName = intent.taskName else {
 completion(AddTaskIntentResponse.failure(taskName: "unknown"))
 return
 }
 // Persist the task to your data store (Core Data, UserDefaults, etc.)
 // For simplicity, we'll assume a shared data manager
 TaskDataManager.shared.addTask(taskName: taskName, listName: intent.listName ?? "Default")
 completion(AddTaskIntentResponse.success(taskName: taskName))
 }

 func resolveTaskName(for intent: AddTaskIntent, with completion: @escaping (INStringResolutionResult) -> Void) {
 if let taskName = intent.taskName, !taskName.isEmpty {
 completion(.success(with: taskName))
 } else {
 // Prompt user for a task name
 completion(.needsValue())
 }
 }

 // MARK: - Remove Task
 func handle(intent: RemoveTaskIntent, completion: @escaping (RemoveTaskIntentResponse) -> Void) {
 guard let taskName = intent.taskName else {
 completion(.failure(taskName: "unknown"))
 return
 }
 let removed = TaskDataManager.shared.removeTask(taskName: taskName)
 if removed {
 completion(.success(taskName: taskName))
 } else {
 completion(.notFound(taskName: taskName))
 }
 }

 // MARK: - Show Tasks
 func handle(intent: ShowTasksIntent, completion: @escaping (ShowTasksIntentResponse) -> Void) {
 let tasks = TaskDataManager.shared.allTasks()
 let taskList = tasks.map { $0.name }.joined(separator: ", ")
 let count = tasks.count
 let response = ShowTasksIntentResponse.success(count: count, content: taskList)
 completion(response)
 }
}

Paylaşılan Data Store

Yukarıdaki kod, paylaşılan bir konteyner (App Group) kullanarak ortak bir yerde, paylaşılan görevlerde işlerinizi doğrudan erişime gerek yoktur.(0UserDefaults) Uygulama grubu rehberinde yaşayan bir Core Data mağazası.

Main App'te niyetleri işleme

Uygulamanızın ön planda olduğu ve kullanıcı Siri kısayolunu tetiklediğinde, uygulamanın doğrudan ana uygulamada niyetleri işlemek isteyebilirsiniz ( uzatmadan). Uygulamanızın delege veya sahne delegenize aynı niyet protokollerine uygun olabilirsiniz. Ancak, çoğu kullanım için, uzatma yeterlidir çünkü uygulama ön planda olup olmadığınız sürece çalışır.

Fonksiyonelliği uzatın: Onay, Undo ve Parametreler

Temel niyet işleme sadece başlangıçtır. Sesli to-do listesini sağlam yapmak, onay diyalogları ve parametre çözünürlüğü için destek ekleyin.

Çözüm Yöntemleri

Her parametre için, birİLETİŞİM için geçerli olan bir yöntem uygulayabilirsiniz veya clarification talep edebilirsiniz. Örneğin, kullanıcı hangi listeyi belirtmeden “Ek yumurtalar” diyorsa, “Ücretsiz: “Hangi liste yumurta eklemek ister misiniz?

Cevapları Onaylama

Siri'nin kullanıcıyı bunu yapmadan önce bir eylemi onaylamasını isteyebilirsin. Bu, kullanıcınızı doğrulama gibi yıkıcı işlemler için faydalıdır ve doğrulanan durumda, [[Dönetici:0)Confirmation) yanıt türü ile tekrar adlandırılacaktır.

URL Deep Linking için

Bir eylem yaptıktan sonra, uygulamanızı güncel listeyi göstermek için açmak isteyebilirsiniz. niyetiniz eller kullanılabilir veya ana uygulamanız URL şemalarına cevap verebilir.Add anFLT:16) özelliğinizi otomatik derin bağlantınıza taşımak için.

Sesinizi test et -Enabled App

Siri entegrasyonunun bazı kurulum gerektirir çünkü konuşulan komutlar doğrudan simüle edilemez. aşağıdaki yaklaşımlar kullanın:

Xcode'da Siri Simulator kullanarak

Ana uygulamanızı bir simülatörün üzerinde çalıştırın, sonra uygulamayı durdurun. Sonraki, bir program kullanılarak yapılan bir plan kullanarak, simülatörün için yapılandırılan bir Siri arayüzü başlatacaktır. Xcode, komutunuzu türündelayabileceğiniz bir simdi Siri arayüzü başlatacaktır.Bu, fiziksel bir cihaz olmadan test etmenin en hızlı yoludur.

Gerçek bir Device ile test

Belirli niyetlerinizin doğru tanınması için, iOS 14 veya daha sonra çalışan gerçek bir iOS cihazı test edin. Uygulamanızı yükledikten sonra açık ayarlar vegt; Siri & Arama > MyToDoApp ve amacım devam ediyor. ”Hey Siri, MyToDoApp'te listeme yazmak için kod ekle ve sonucu doğrulayın.

Common Issues and Debugging

  • [FONT=0)Intent'in kabul etmediği bir şey değildir:[Dönetici:0)[Döneticileri) [Döneticileri) .
  • [FONT:0)Data paylaşılmadı:[Dönetici:[Dönetici:0) Her iki hedef aynı App Group'a ait ve veri deposu yolundan doğru olduğunu garanti edin.
  • [[Dönem:0)Response konuşmadı:[Dönem: 1)
  • [0]Parametre eksik:[Dönetici:[Dönemli girişleri işlemek için doğrulanmış çözüm yöntemleri.

İşsizlik ve App Store Tahminleri

App Store'a uygulamanızı göndererek Siri yeteneğinizi beyan etmeniz gerekir. App Store Connect'te, niyetlerinizin ne yaptığını ve test komutlarını sunacağı konusunda bir not ekleyin. Apple, her şeyin doğru çalışmasını sağlayacaktır.

Kullanıcı kabulünü en üst düzeye çıkarmak için aşağıdaki en iyi uygulamaları düşünün:

  • [FONT:0]Onboard kullanıcıları:[Dönetici:[Dönetici:0) Uygulama ilk başladığında mevcut sesli komutlarda kısa bir ders göster.
  • [FONT:0)Depres:[Dönetici:[Dönetici:0)Depresler:[Dönler:)) Kullanıcılara belirli görevler için özel ses kısayolları oluşturmalarına izin verin (örneğin, “Hey Siri, ek marketler ekleyin) üzerinden 03.03.2012
  • [FONT:0) Hedeflerinizi genişletin: Farklı diller için yerelleştirilmiş hızlı ve yanıt şablonları sağlayın.
  • [FONT:0]Handle hataları lütufla:[Dönemli bir yanıt geri döndürür – görev başarısız olsa bile – kullanıcıyı yönlendirmek.

Gelişmiş Özellikler ve Sonraki Adımlar

Temel sese sahip olan liste çalışmasına sahipseniz, bunu genişletebilirsiniz:

  • [FONT:0) Doğal dil tarihi parsing:[Dönem: 1) Kullanıcılar “Yarın için süt satın al” ve otomatik olarak tarih boyunca [[GİLMİŞT:20” olarak ayarlayalım.
  • [FONT:0) Grup ve etiket desteği:[Dönetici:[Dönetici:0)) veya [[FONTD:0) gibi kategoriler için parametreleri ekleyin.
  • [FONT=0) Uygulama:[Dönetici:[Dönetici:0))[Dönetici:0))))))) · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
  • [FONT:0)Müşteri: [Dönetici: [Dönetici:0))) Bir kelime pliste Siri'yi “benim market liste” veya “iş görevleri” gibi özel ifadeler tanımasını sağlamak için eğitmek için bir kelime plist sağlayın.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Siri entegrasyonu ile bir ses efektif bir liste uygulaması oluşturmak, kullanıcı verimliliğini ve erişilebilirliği geliştirmek için pratik bir yoldur. Özel niyetleri tanımlamak, uygulamanıza entegre bir kayıt yaptırın ve paylaşılan bir veri mağazası kullanarak, bu kılavuzda belirtilen adımları oluşturabilirsiniz - proje kurulumundan test etmek ve teslim etmek için - size sağlam bir temel verin. - ses etkileşimi daha yaygın hale gelir, App Store'da ayarlamanızı sağlar.

[FONT:0) Daha fazla ayrıntı için Apple'ın resmi olarak SiriKit belgesi) ve [[Döneticileri için[Döntmeler kılavuzu[DDDDDönetici)[Döneticileri yeniyseniz, iOS gelişimine yeniyseniz, aynı zamanda gözden geçirin.