Привет!! Я всегда мечтал написать блог о том, что я узнаю. Но я никогда не заставлял себя начать, теперь самое время это сделать.

Да!!! это мой первый блог.

Технически я разработчик iOS с большим опытом работы в индустрии программного обеспечения. В последние дни у меня появилась возможность реализовать функцию Siri в своем приложении. К тому времени, когда я начал, не было никаких конкретных блогов или заметок, я внимательно просмотрел все и, наконец, закончил.

А теперь я собираюсь поделиться своими знаниями в моем первом блоге.

Siri - потрясающая функция, представленная Apple. Помощник использует голосовые запросы и пользовательский интерфейс на естественном языке, чтобы отвечать на вопросы, давать рекомендации и выполнять действия, делегируя запросы набору интернет-сервисов. Программное обеспечение адаптируется к индивидуальному использованию языка, поиску и предпочтениям пользователей при постоянном использовании. Возвращаемые результаты индивидуализированы.

Siri была представлена ​​в iOS 11 с ограниченными функциями, такими как вызов и отправка сообщения человеку из ваших контактов. В более поздних версиях у него были такие функции, как бронирование такси, заказ еды из ресторана, использование его в приложении для упражнений и многое другое. Тем не менее, у него были ограничения, и соответствующие приложения, которые поддерживают вышеуказанные функции, могут использовать только Siri. В будущих выпусках Apple разрешила создавать настраиваемые действия, которые будет выполнять Siri. Спасибо Apple, благодаря этому мы глубже узнали, как работает Siri.

В iOS 13 Apple представила ярлыки, которые помогают выполнять настраиваемые действия, созданные пользователем. Например, если вы скажете Siri создать будильник в 5:00 утра, он создаст для вас. Действие по созданию тревоги предназначено для системы (мобильной) и предназначено для этого. Мы также можем создать собственный ярлык, который может выполнять система. Например, если мое приложение поддерживает Siri, и я хотел бы изучить некоторые детали продукта в моем приложении. Создайте ярлык, и я попросил бы Siri выполнить его.

Конечно, да, я объясню, как это сделать.

Это похоже на выпечку торта в микроволновой печи: вы готовите ингредиенты и указываете духовке, как их приготовить. Таким же образом вы создаете свои собственные ярлыки и просите систему работать с Siri. В основном я просто обожаю торты.

Когда вы задаете Siri вопрос, связанный с приложением, запускаются определенные методы в расширениях Siri. В зависимости от настроек, выполненных в коде, Siri вернется с парой вопросов, которые ему потребуются. И, конечно же, пользователь должен ответить на вопрос Siri. Если быть более конкретным, мы сначала создаем ярлык с именем, а затем вы говорите «Привет, Siri», а затем имя ярлыка. Ура!! вы увидите, как Siri взаимодействует с вами и выполняет какие-то действия.

Приступим!

Теперь, чтобы начать работу, вам нужно создать приложение с одним представлением в Xcode, указав основные сведения, такие как имя проекта, идентификатор организации, и сохранить их в нужном месте.

Создание расширения Intent

После создания проекта щелкните проект и перейдите в целевой раздел, нажмите кнопку с плюсом в правом нижнем углу. Найдите расширение намерения и сохраните его с соответствующим именем. Установите флажок, чтобы включить расширение пользовательского интерфейса.

Есть цель для создания этих намерений, используя эту интенсивную связь Siri с приложением для выполнения действия и визуального отображения результата. Добавив эти намерения, вы увидите две новые папки, добавленные в проект.

Первое намерение имеет обработчик намерения для выполнения действий, а пользовательский интерфейс второго намерения помогает визуализировать конечный результат. Вы можете создавать свои собственные дизайны и отображать их. И в info.plist вам нужно указать намерение, которое он поддерживает, что я объясню в следующих шагах.

Создание файла определения намерения

Теперь выберите свой проект и щелкните правой кнопкой мыши - ›Создать и добавить файл определения намерения Siri.

Целью создания этого файла определения является создание параметров, благодаря которым Siri узнает, что ищет пользователь. Здесь вы должны ввести фразы, которые Siri будет просить для определения деталей.

Чтобы создать собственное намерение, нажмите кнопку «плюс» в правом нижнем углу, выберите новое намерение и введите имя, которое я назвал «Модель». В разделе параметров нажмите кнопку с плюсом и создайте его. Я создал параметр «Имя» типа string. Я также ввел в диалоги то, что Siri будет спрашивать и отвечать, когда я спрашиваю об имени.

На приведенном выше снимке экрана подсказка вводится как «Кого вы ищете», это будет первый вопрос, который задает SIRI при срабатывании ярлыка.

Щелкните вкладку ответа, вы можете ввести фразы, на которые SIRI ответит в зависимости от успеха или неудачи.

Создание обработчиков намерений

Теперь займемся обработчиками намерений, которые будут обрабатывать события Siri. Создайте новый файл Swift с именем CustomInternHandler. После создания файла определения намерения Apple по умолчанию создает протокол для его обработки. Имя будет именем намерения, за которым следует обработка ключевого слова. Во вновь созданном быстром файле расширьте обработчик, как показано ниже. Затем Xcode попросит вас импортировать заглушки протокола. На основе параметров, созданных в файле определения намерения, метод разрешения будет инициирован Xcode. Поскольку мы создали параметр «Имя», будет инициирован метод разрешения имени. Кроме того, метод под названием «handle» также включен по умолчанию для выполнения процесса и ответа на результат через блок завершения.

После срабатывания ярлыка будет вызван метод разрешения. Чтобы задать вопрос, нам нужно вернуться к пользователю, вернув блок завершения с needsvalue(). Фраза вопроса будет выбрана из файла определения намерения, который мы объявили ранее. Метод resoveName будет вызываться до тех пор, пока не будет установлен параметр name.

Доступны несколько других типов возврата, например, «неподдерживаемый» à Данные не поддерживаются, «устранение неоднозначности» à доступно несколько вариантов. Что можно использовать в зависимости от требований.

Siri запрашивает «Кого вы ищете», пользователь называет имя, например, «Ragul», будет вызван метод resolveName в методе «CustomIntentHandler». Здесь нужно выполнить действие, чтобы получить подробности. Вы можете использовать данные кода или любой API, чтобы получить подробную информацию.

Примечание. Чтобы получить доступ к информации из Core Data, группы приложений должны быть включены, а идентификаторы должны совпадать как для приложения, так и для расширений.

После создания файла определения намерения введите имя намерения в info.plist файле намерений Siri, как показано ниже. В нашем примере приложения имя намерения - модель, поэтому введите «ModelIntent» в файл info.plist.

Это делается для того, чтобы система могла определить, это конкретное намерение, для которого выполняется действие SIRI. В зависимости от требований может быть создано любое количество намерений.

Обработка намерений

После установки параметра имени будет вызван метод «handle». Вы можете выполнить всю необходимую проверку и вернуть успех или неудачу через блок завершения.

Первоначально, когда мы создавали проект, также будет создан «SiriIntentUI», где вы можете создать представление, чтобы показать конечный результат.

Возможна отладка методов обработчика намерений.

Мы рассмотрели темы для создания намерения и обработки его на основе созданных параметров. Теперь пора узнать, как создать ярлык программно.

В методе ViewDidLoad добавьте эти строки кода для добавления кнопки SIRI. Когда вы выберете его, приложение предложит ввести имя для ярлыка.

//property
private lazy var siriButton: INUIAddVoiceShortcutButton = {
let button = INUIAddVoiceShortcutButton(style: .automaticOutline)
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
override func viewDidLoad() {
self.view.addSubview(self.siriButton)
self.siriButton.centerXAnchor.constraint(equalTo: self.searchPlaceholderView.centerXAnchor).isActive = true
self.siriButton.topAnchor.constraint(equalTo: self.searchPlaceholderView.topAnchor, constant: 20).isActive = true
self.siriButton.widthAnchor.constraint(equalToConstant: 180).isActive = true
setupShortcut(to: self.siriButton)
}
func setupShortcut(to button: INUIAddVoiceShortcutButton?) {
let activity = NSUserActivity(activityType: "\(NSUserActivity.searchBcgEmployee)")
activity.userInfo = ["speech": "Hey Traverse"]
activity.title = "Hey Traverse"
activity.suggestedInvocationPhrase = "Hey Traverse"
activity.isEligibleForSearch = true
activity.isEligibleForPrediction = true
activity.persistentIdentifier = NSUserActivityPersistentIdentifier("\(NSUserActivity.searchBcgEmployee)")
view.userActivity = userActivity
activity.becomeCurrent()
self.userActivity = activity
if let intent = searchIntent {
button?.shortcut = INShortcut(intent: intent)
button?.shortcut = INShortcut(intent: intent)
button?.delegate = self
}
}

Примечание. Все эти настраиваемые намерения, которые я объяснил выше, доступны только после iOS 13. Наиболее важно добавить Siri в параметры возможностей проекта.

Наконец, к потоку «Привет, Siri» - ›« Ярлык ». Siri задаст вам несколько вопросов для подтверждения параметров и сообщит вам конечный результат.

Надеюсь, это будет полезно.