Apple Engine

Apple, iPhone, iOS, その周辺のことについて

Xcode 9.3 Beta 2 の SDK での変更

ざっと見た感じ BusinessChat の API が追加されている模様。
Beta 1 の頃から Swift 4.0 > 4.1 の変更があるけど割愛。
(機能追加や、flatMap { $0 + [1] } の flatMap が compactMap に変更とか)

 

BusinessChat で追加された Class

  • BCChatButton
  • BCChatAction

アプリから BusinessChat を開くための API らしい。
ちなみに BusinessChat と連携するアプリは iMessage アプリの Extension で作成する。使用方法は以下を参照。

appleengine.hatenablog.com

 

BCChatButton

BusinessChat 用のボタン。
中身は light と dark のアピアランスが用意されているボタンの形状をした UIControl。

アクション用に BCChatAction が用意されているのでこのボタンを必ず使用する必要はなさそう。

 

BCChatAction

パラメーターとして intent、group、body がパラメーターとして用意されており、
openTranscript のメソッドでチャットの固有識別子と共にパラメーターに渡して、
iMessage アプリの BussinesChat を開く。

パラメーター名 説明
intent サポートエージェントまたはビジネスシステムが製品、サービス、アカウント、またはその他のコンテキストを識別する
group メッセージを適切なサポートエージェントグループにルーティングするのに役立つ
body コンテキストメッセージの設定。入力欄に自動的に挿入されるいわゆるメッセージ本文

 

チャットの固有識別子は BusinessChat アクセス時にコールされる「urn:biz:〜」の波線の部分。

 

使い方

いつも通り、プロジェクトの設定の「Link Binary With Libraries」の「+」ボタンから BusinessChat.framework を追加。

使用する Swift ファイルでどこかに下記を記載しインポート。

import BusinessChat

 

BCChatButton ボタン部分。
AutoLayout のコンストレイントは省略しているが普通のボタンの設定。

let button = BCChatButton(style: .light)
button.bounds = CGRect(x: 16, y: 16, width: 160, height: 44)

button.addTarget(self, action: #selector(change(sender: )), for: .touchUpInside)

self.view.addSubview(button)

 

BCChatAction は openTranscript にパラメーターを入れるだけで起動する

@objc
func callBusinessChat(sender: BCChatButton){
    BCChatAction.openTranscript(businessIdentifier: "test", intentParameters: [
        BCChatAction.Parameter.group : "group",
        BCChatAction.Parameter.intent : "intent",
        BCChatAction.Parameter.body : "body"
    ])
}