SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitでできること
1
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
2
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
3
Copyright © Up-frontier, Inc. All rights reserved.
これまでのSiri
• デバイスごとに⼀⼈ずつSiriが内包されている
• Siriからアプリの操作が可能(Apple純正のみ)
• 「タイマーで3分」→ 時計アプリ
• 「明⽇の天気」→ 天気アプリ
• サードパーティ製のアプリは、Siriとは連携不可
4
Copyright © Up-frontier, Inc. All rights reserved.
これからのSiri
• サードパーティ製のアプリも、Siriと連携できる
ようになる
• Siriとアプリを連携させるためのものがSiriKit
• 本体アプリに対して、SiriKitのExtensionを追加
するイメージ
5
Copyright © Up-frontier, Inc. All rights reserved.
公式アプリは
もともと連携できていた
これまでのSiri
6
Copyright © Up-frontier, Inc. All rights reserved.
これからのSiri
7
公式アプリは
もともと連携できていた
サードパーティ製のアプリと
SiriをつなぐのがSiriKitの役割!
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン
• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
8
• CarPlay
• Restaurant
Reservations
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン
• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
9
• CarPlay
• Restaurant
Reservations
特定のベンダーのみに
解放されるらしい
(例) ⾃動⾞メーカーなど
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitが解釈できるドメイン
• VoIP Calling
• Messaging
• Payments
• Photos
• Workouts
• Ride Booking
10
• CarPlay
• Restaurant
Reservations
• メッセージの送信
• 〇〇さんに「おはよう」
• メッセージの検索
• ▲▲からのメッセージを検索
Copyright © Up-frontier, Inc. All rights reserved.
思った以上に限定的
• 恩恵を受けることができるアプリ・サービス
は、今の所はかなり限られている
• 以下のようなことはできない
• カメラアプリで撮影
• オンデマンドアプリで動画を検索して再⽣
• 今後、利⽤可能な機能が増えることに期待
11
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
12
Copyright © Up-frontier, Inc. All rights reserved.
SiriKitの構成
• SiriKitは、以下の2つのframeworkからなる
• Intents.framework
• IntentsUI.framework
• SiriKit.frameworkというものは存在しない
• ○○○Kitって⼀体…
13
Copyright © Up-frontier, Inc. All rights reserved.
Intents.framework
• ユーザの⾳声⼊⼒を受け取る
• ⾳声を解析し、Intentを⽣成してアプリに渡す
• 実装は必須
14
Copyright © Up-frontier, Inc. All rights reserved.
IntentsUI.framework
• SiriのUI上に表⽰するView関連のクラス
• カスタムUIを利⽤する場合に任意で実装する
• Apple「ちゃんと使うよね?」 チラッ
15
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリの使い⽅
• 必要なワードを含んだ⽂章で話しかけること
で、メッセージ送信ができる
• メッセージの場合は「宛先」と「メッセージ」
16
• [アプリ名] で [宛先] に [メッセージ] と送って
• [メッセージ] を [宛先] に [アプリ名] で送って
Copyright © Up-frontier, Inc. All rights reserved.
アジェンダ
• SiriKitの概要
• SiriKitの構成としくみ
• 実装してみる
17
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
18
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
19
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
20
Copyright © Up-frontier, Inc. All rights reserved.
ターゲットの追加
• Intent Extension の
ターゲットを追加す
る
• Intent UI を同時に
追加することもでき
る
21
Copyright © Up-frontier, Inc. All rights reserved.
ターゲットの追加
• Intent Extension の
ターゲットを追加す
る
• Intent UI を同時に
追加することもでき
る
22
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
23
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IntentsSupported</key>
<array>
<string>INSendMessageIntent</string>
</array>
<key>IntentsRestrictedWhileLocked</key>
<array>
<string>INSendMessageIntent</string>
</array>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.intents-service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>
24
• サポートするIntentのタイプ
• 今回はSendMessageIntent
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IntentsSupported</key>
<array>
<string>INSendMessageIntent</string>
</array>
<key>IntentsRestrictedWhileLocked</key>
<array>
<string>INSendMessageIntent</string>
</array>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.intents-service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>
25
• プライバシーへの配慮
• デバイスロック中に利⽤させない
場合は、これを追記する
Copyright © Up-frontier, Inc. All rights reserved.
plistの説明
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>IntentsSupported</key>
<array>
<string>INSendMessageIntent</string>
</array>
<key>IntentsRestrictedWhileLocked</key>
<array>
<string>INSendMessageIntent</string>
</array>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.intents-service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).IntentHandler</string>
</dict>
26
Extensionを実装しているクラス
Copyright © Up-frontier, Inc. All rights reserved.
メッセージアプリ
• アプリを作る
• ターゲットの追加(Intent Extension)
• plistに必要事項を追記
• Extensionの実装
27
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
28
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
29
• ⼊⼒パラメータの解決
• ⼊⼒値のバリデーション
• ⾜りない場合はSiriが聞き返す
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
30
• 最終確認
• タスク実⾏に向けた最終確認
• ビジネスロジック的なチェックなど
Copyright © Up-frontier, Inc. All rights reserved.
Extensionの実装
• Extensionの3ステップ
• Resolve
• Confirm
• Handle
31
• タスクの実⾏
• 実際の処理を⾏う
• メッセージの送信、検索など
Copyright © Up-frontier, Inc. All rights reserved.
tips
• 実機必須
• 恥ずかしがらずに堂々と
• Extension特有の「なぜか動かない」
32
Copyright © Up-frontier, Inc. All rights reserved.
まとめ
• つかえるDomainは6種類
• ⾳声は、SiriがIntentに変換して渡してくれる
• Resolve, Confirm, Handle の順でタスク実⾏
33

Contenu connexe

Similaire à SiriKit iOS10

Dist 29 gcp_serverless_web_app_development
Dist 29 gcp_serverless_web_app_developmentDist 29 gcp_serverless_web_app_development
Dist 29 gcp_serverless_web_app_developmentShotaro Suzuki
 
Nifty cloud jtf2014ハンズオン資料
Nifty cloud jtf2014ハンズオン資料Nifty cloud jtf2014ハンズオン資料
Nifty cloud jtf2014ハンズオン資料亮介 山口
 
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!natsumo
 
JavaからAkkaハンズオン
JavaからAkkaハンズオンJavaからAkkaハンズオン
JavaからAkkaハンズオンTIS Inc.
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractSpring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractTakuya Iwatsuka
 
How to create android's c to c EC APP !
How to create android's c to c EC APP !How to create android's c to c EC APP !
How to create android's c to c EC APP !Saiki Iijima
 
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)aitc_jp
 
第38回載せられないapp
第38回載せられないapp第38回載せられないapp
第38回載せられないappcivic Sasaki
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipelineMasatomo Ito
 
iOS 8 App Extension
iOS 8 App ExtensioniOS 8 App Extension
iOS 8 App ExtensionTakeo Nanba
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
ちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonitaちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonitaKentaro Takasaki
 
いま注目のセンサー&デバイス
いま注目のセンサー&デバイスいま注目のセンサー&デバイス
いま注目のセンサー&デバイスKaoru NAKAMURA
 

Similaire à SiriKit iOS10 (20)

Dist 29 gcp_serverless_web_app_development
Dist 29 gcp_serverless_web_app_developmentDist 29 gcp_serverless_web_app_development
Dist 29 gcp_serverless_web_app_development
 
Nifty cloud jtf2014ハンズオン資料
Nifty cloud jtf2014ハンズオン資料Nifty cloud jtf2014ハンズオン資料
Nifty cloud jtf2014ハンズオン資料
 
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!
【Monaca×mobile backend】 プッシュ通知をカンタン実装! スピード感ある開発をしよう!
 
JavaからAkkaハンズオン
JavaからAkkaハンズオンJavaからAkkaハンズオン
JavaからAkkaハンズオン
 
Api設計
Api設計Api設計
Api設計
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
Spring I/O 2018 報告会
Spring I/O 2018 報告会Spring I/O 2018 報告会
Spring I/O 2018 報告会
 
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractSpring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
 
How to create android's c to c EC APP !
How to create android's c to c EC APP !How to create android's c to c EC APP !
How to create android's c to c EC APP !
 
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
第5回 デジタルガジェット祭り! スマートスピーカー特集(4)
 
第38回載せられないapp
第38回載せられないapp第38回載せられないapp
第38回載せられないapp
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 
iOS 8 App Extension
iOS 8 App ExtensioniOS 8 App Extension
iOS 8 App Extension
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Unity Services
Unity ServicesUnity Services
Unity Services
 
Tizenについて
TizenについてTizenについて
Tizenについて
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
ちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonitaちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonita
 
いま注目のセンサー&デバイス
いま注目のセンサー&デバイスいま注目のセンサー&デバイス
いま注目のセンサー&デバイス
 

Plus de Gaprot

AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!Gaprot
 
Unity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめUnity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめGaprot
 
1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書Gaprot
 
New Notification API in iOS 10
New Notification API in iOS 10New Notification API in iOS 10
New Notification API in iOS 10Gaprot
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new CameraGaprot
 
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるHTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるGaprot
 
Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Gaprot
 
GoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGaprot
 
Java の Collection 関連について整理してみました
Java の Collection 関連について整理してみましたJava の Collection 関連について整理してみました
Java の Collection 関連について整理してみましたGaprot
 
Salmon Hunt
Salmon HuntSalmon Hunt
Salmon HuntGaprot
 
SONY Camera Remote API
SONY Camera Remote APISONY Camera Remote API
SONY Camera Remote APIGaprot
 
「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!Gaprot
 

Plus de Gaprot (12)

AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!AR開発高速化!「CFA」作りました!
AR開発高速化!「CFA」作りました!
 
Unity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめUnity + iOS/Android VR ことはじめ
Unity + iOS/Android VR ことはじめ
 
1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書1201 ギャップロ軍団企画書
1201 ギャップロ軍団企画書
 
New Notification API in iOS 10
New Notification API in iOS 10New Notification API in iOS 10
New Notification API in iOS 10
 
iOS 10 new Camera
iOS 10 new CameraiOS 10 new Camera
iOS 10 new Camera
 
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させるHTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
HTML5 + JavaScriptでDRMつきMPEG-DASHを再生させる
 
Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料Aiマッシュアップ委員会 仕様説明資料
Aiマッシュアップ委員会 仕様説明資料
 
GoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターンGoF のデザインパターンじゃないけど、よくあるパターン
GoF のデザインパターンじゃないけど、よくあるパターン
 
Java の Collection 関連について整理してみました
Java の Collection 関連について整理してみましたJava の Collection 関連について整理してみました
Java の Collection 関連について整理してみました
 
Salmon Hunt
Salmon HuntSalmon Hunt
Salmon Hunt
 
SONY Camera Remote API
SONY Camera Remote APISONY Camera Remote API
SONY Camera Remote API
 
「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!「バグあるある」と「仕様変更あるある」一挙大放出SP!
「バグあるある」と「仕様変更あるある」一挙大放出SP!
 

SiriKit iOS10

  • 1. Copyright © Up-frontier, Inc. All rights reserved. SiriKitでできること 1
  • 2. Copyright © Up-frontier, Inc. All rights reserved. アジェンダ • SiriKitの概要 • SiriKitの構成としくみ • 実装してみる 2
  • 3. Copyright © Up-frontier, Inc. All rights reserved. アジェンダ • SiriKitの概要 • SiriKitの構成としくみ • 実装してみる 3
  • 4. Copyright © Up-frontier, Inc. All rights reserved. これまでのSiri • デバイスごとに⼀⼈ずつSiriが内包されている • Siriからアプリの操作が可能(Apple純正のみ) • 「タイマーで3分」→ 時計アプリ • 「明⽇の天気」→ 天気アプリ • サードパーティ製のアプリは、Siriとは連携不可 4
  • 5. Copyright © Up-frontier, Inc. All rights reserved. これからのSiri • サードパーティ製のアプリも、Siriと連携できる ようになる • Siriとアプリを連携させるためのものがSiriKit • 本体アプリに対して、SiriKitのExtensionを追加 するイメージ 5
  • 6. Copyright © Up-frontier, Inc. All rights reserved. 公式アプリは もともと連携できていた これまでのSiri 6
  • 7. Copyright © Up-frontier, Inc. All rights reserved. これからのSiri 7 公式アプリは もともと連携できていた サードパーティ製のアプリと SiriをつなぐのがSiriKitの役割!
  • 8. Copyright © Up-frontier, Inc. All rights reserved. SiriKitが解釈できるドメイン • VoIP Calling • Messaging • Payments • Photos • Workouts • Ride Booking 8 • CarPlay • Restaurant Reservations
  • 9. Copyright © Up-frontier, Inc. All rights reserved. SiriKitが解釈できるドメイン • VoIP Calling • Messaging • Payments • Photos • Workouts • Ride Booking 9 • CarPlay • Restaurant Reservations 特定のベンダーのみに 解放されるらしい (例) ⾃動⾞メーカーなど
  • 10. Copyright © Up-frontier, Inc. All rights reserved. SiriKitが解釈できるドメイン • VoIP Calling • Messaging • Payments • Photos • Workouts • Ride Booking 10 • CarPlay • Restaurant Reservations • メッセージの送信 • 〇〇さんに「おはよう」 • メッセージの検索 • ▲▲からのメッセージを検索
  • 11. Copyright © Up-frontier, Inc. All rights reserved. 思った以上に限定的 • 恩恵を受けることができるアプリ・サービス は、今の所はかなり限られている • 以下のようなことはできない • カメラアプリで撮影 • オンデマンドアプリで動画を検索して再⽣ • 今後、利⽤可能な機能が増えることに期待 11
  • 12. Copyright © Up-frontier, Inc. All rights reserved. アジェンダ • SiriKitの概要 • SiriKitの構成としくみ • 実装してみる 12
  • 13. Copyright © Up-frontier, Inc. All rights reserved. SiriKitの構成 • SiriKitは、以下の2つのframeworkからなる • Intents.framework • IntentsUI.framework • SiriKit.frameworkというものは存在しない • ○○○Kitって⼀体… 13
  • 14. Copyright © Up-frontier, Inc. All rights reserved. Intents.framework • ユーザの⾳声⼊⼒を受け取る • ⾳声を解析し、Intentを⽣成してアプリに渡す • 実装は必須 14
  • 15. Copyright © Up-frontier, Inc. All rights reserved. IntentsUI.framework • SiriのUI上に表⽰するView関連のクラス • カスタムUIを利⽤する場合に任意で実装する • Apple「ちゃんと使うよね?」 チラッ 15
  • 16. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリの使い⽅ • 必要なワードを含んだ⽂章で話しかけること で、メッセージ送信ができる • メッセージの場合は「宛先」と「メッセージ」 16 • [アプリ名] で [宛先] に [メッセージ] と送って • [メッセージ] を [宛先] に [アプリ名] で送って
  • 17. Copyright © Up-frontier, Inc. All rights reserved. アジェンダ • SiriKitの概要 • SiriKitの構成としくみ • 実装してみる 17
  • 18. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリ • アプリを作る • ターゲットの追加(Intent Extension) • plistに必要事項を追記 • Extensionの実装 18
  • 19. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリ • アプリを作る • ターゲットの追加(Intent Extension) • plistに必要事項を追記 • Extensionの実装 19
  • 20. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリ • アプリを作る • ターゲットの追加(Intent Extension) • plistに必要事項を追記 • Extensionの実装 20
  • 21. Copyright © Up-frontier, Inc. All rights reserved. ターゲットの追加 • Intent Extension の ターゲットを追加す る • Intent UI を同時に 追加することもでき る 21
  • 22. Copyright © Up-frontier, Inc. All rights reserved. ターゲットの追加 • Intent Extension の ターゲットを追加す る • Intent UI を同時に 追加することもでき る 22
  • 23. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリ • アプリを作る • ターゲットの追加(Intent Extension) • plistに必要事項を追記 • Extensionの実装 23
  • 24. Copyright © Up-frontier, Inc. All rights reserved. plistの説明 <dict> <key>NSExtensionAttributes</key> <dict> <key>IntentsSupported</key> <array> <string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array> <string>INSendMessageIntent</string> </array> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string> </dict> 24 • サポートするIntentのタイプ • 今回はSendMessageIntent
  • 25. Copyright © Up-frontier, Inc. All rights reserved. plistの説明 <dict> <key>NSExtensionAttributes</key> <dict> <key>IntentsSupported</key> <array> <string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array> <string>INSendMessageIntent</string> </array> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string> </dict> 25 • プライバシーへの配慮 • デバイスロック中に利⽤させない 場合は、これを追記する
  • 26. Copyright © Up-frontier, Inc. All rights reserved. plistの説明 <dict> <key>NSExtensionAttributes</key> <dict> <key>IntentsSupported</key> <array> <string>INSendMessageIntent</string> </array> <key>IntentsRestrictedWhileLocked</key> <array> <string>INSendMessageIntent</string> </array> </dict> <key>NSExtensionPointIdentifier</key> <string>com.apple.intents-service</string> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).IntentHandler</string> </dict> 26 Extensionを実装しているクラス
  • 27. Copyright © Up-frontier, Inc. All rights reserved. メッセージアプリ • アプリを作る • ターゲットの追加(Intent Extension) • plistに必要事項を追記 • Extensionの実装 27
  • 28. Copyright © Up-frontier, Inc. All rights reserved. Extensionの実装 • Extensionの3ステップ • Resolve • Confirm • Handle 28
  • 29. Copyright © Up-frontier, Inc. All rights reserved. Extensionの実装 • Extensionの3ステップ • Resolve • Confirm • Handle 29 • ⼊⼒パラメータの解決 • ⼊⼒値のバリデーション • ⾜りない場合はSiriが聞き返す
  • 30. Copyright © Up-frontier, Inc. All rights reserved. Extensionの実装 • Extensionの3ステップ • Resolve • Confirm • Handle 30 • 最終確認 • タスク実⾏に向けた最終確認 • ビジネスロジック的なチェックなど
  • 31. Copyright © Up-frontier, Inc. All rights reserved. Extensionの実装 • Extensionの3ステップ • Resolve • Confirm • Handle 31 • タスクの実⾏ • 実際の処理を⾏う • メッセージの送信、検索など
  • 32. Copyright © Up-frontier, Inc. All rights reserved. tips • 実機必須 • 恥ずかしがらずに堂々と • Extension特有の「なぜか動かない」 32
  • 33. Copyright © Up-frontier, Inc. All rights reserved. まとめ • つかえるDomainは6種類 • ⾳声は、SiriがIntentに変換して渡してくれる • Resolve, Confirm, Handle の順でタスク実⾏ 33