[iOS 10] SiriKitでメッセージ送信アプリを作成してみた 〜”たこ焼き”でメッセージ送って!〜(その1)

[iOS 10] SiriKitでメッセージ送信アプリを作成してみた 〜”たこ焼き”でメッセージ送って!〜(その1)

Clock Icon2016.09.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

今回は、iOS 10で使用可能になったSiriKitを使用して、メッセージを送るアプリ「たこ焼き」を作成してみました。

「たこ焼き」とは、常に決まっている特定の相手にメッセージを送信するアプリです。 メッセージ送信には、「宛先」・「宛先グループ」・「本文」の諸元が有りますが、このうち「本文」以外は常に一定なので、「本文」だけを伝えれば、直ちにメッセージを送信できます。

なお、本記事は、2回に分かれております。 今回(その1)は、インテント拡張を作成して、Siriに認識させ、アプリ名を付けるところまで、そして、次回(その2)においては、独自のビューをSiriに表示する方法を紹介します。

2 プロジェクト作成

Xcodeのメニューから、File > New > Project> Single View Applicationと辿って、新しいプロジェクトを作成します。

001

ここで、プロジェクト名は「SiriKitSample」としました。

000

続いて File > New > Target > Intents Extentionでインテント拡張をプロジェクトに追加します。

002

こちらは、名前をExtensionSampleとし、Include UI Extensionにチェックした状態でFinishボタンを押します。

003

作成されたプロジェクトは、次のようになっていました。

004

3 info.plist

テンプレートで作成されたプロジェクトのinfo.plistを確認すると、ExtensionSampleの方は、IntentsSupportedの中に、既に、INSendMessageIntentINSearchForMessagesIntentINSetMessageAttributeIntentの3つが指定されています。 今回は、メッセージ送信のインテントを扱おうと考えているので、INSendMessageIntent以外の2つは、削除します。 また、IntentsRestrictedWhileLockedの方は、空ですが、ロック画面からは使用しないということで、そのままにしておきます。

005

こちらは、ExtensionUISampleの方ですが、こちらも、既にINSendMessageIntentが設定されていますので、このままとしておきます。

006

4 他のインテント用のコードを削除

info.plistからも分かるように、テンプレートでは、INSendMessageIntent以外のインテントにも対応しています。 そこで、不要なコードを削除することにしました。

(1) プロトコル宣言

ExtensionSampleIntentHandler.swiftを見ると、IntentHanderクラスが、3つのプロトコルを実装するようになっています。 ここで、INSendMessageIntentHandling以外のハンドリングプロトコルは、今回使用しないので削除しました。

//class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessagesIntentHandling, INSetMessageAttributeIntentHandling {
class IntentHandler: INExtension, INSendMessageIntentHandling {

(2) プロトコル実装

プロトコル削除のため不要となって下記のメソッドも削除します。

// MARK: - INSearchForMessagesIntentHandling

//func handle(searchForMessages intent: INSearchForMessagesIntent, completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
// MARK: - INSetMessageAttributeIntentHandling

//func handle(setMessageAttribute intent: INSetMessageAttributeIntent, completion: @escaping (INSetMessageAttributeIntentResponse) -> Void) {

5 アプリ名

007

この時点で、メッセージ送信のインテントで、アプリ名が認識できているかどうかのテストをしてみます。 コンパイル実行して、Siriが立ち上がったら、「たこ焼きでメッセージ送って」と話しかけてみます。 もし、「私が”たこ焼き”のデータにアクセスする必要があります。」と返事が返ってきたら、もうアプリ名「たこ焼き」は、Siriに認識されていると判断できます。「Siri設定」をタップして、Appサポートで「たこ焼き」にチェックを入れて、許可を与えておきます。

008 009

ここで、もう一度、「たこ焼きでメッセージ送って」と話しかけると、今度は「”たこ焼き”でどなたにメッセージを送信しますか」と返事が返ってきます。

010

6 最後に

今回は、Siriからメッセージ送信のインテントを受け取るアプリの基本的な部分を作成しました。 次回は、これを拡張して、独自のビューをSiriに表示する方法を紹介致します。

[iOS 10] SiriKitでメッセージ送信アプリを作成してみた 〜”たこ焼き”でメッセージ送って!〜(その2)

11 参考にさせて頂いたリンク


Siri + Apps
SiriKit Programming Guide
Introducing SiriKit
Extending Your Apps with SiriKit

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.