このユーザーガイドでは、ストーリーボードUIにAlli iOS SDKを統合する方法について説明します。 Alli SDKにはiOS 10以降が必要です。

Step 1. SDKをダウンロードして解凍します

  1. Alliダッシュボードにログインして、設定メニューに進みます。 下にスクロールしてiOS SDKのダウンロードを見つけ、SDKをダウンロードします。
  2. ファイルを解凍すると、フォルダー内に次のファイルが表示されます。

Step 2. SDKをプロジェクトに追加します

  1. XcodeのProject Navigatorでプロジェクトアイコンを右クリックします。
  2. [アプリにファイルを追加]ボタンをクリックします。 ダイアログが表示されます。
  3. AlliFrameworkフォルダーを選択します。
  4. ”Destination:[必要に応じてアイテムをコピー]"の✔をオンにします。
  5. ダイアログの内容が下記キャプチャーのようになっていることを確認し、[追加]ボタンをクリックします

Step 3.埋め込みバイナリ、フレームワーク、ライブラリを追加します

  1. Project Navigatorでプロジェクトアイコンをクリックします。
  2. 全般 > [フレームワーク、ライブラリ、および埋め込みコンテンツ]に移動し、Alli Framework.frameworkを[署名なしで埋め込み]に設定します。
  3. ビルドフェーズ > [ライブラリとバイナリをリンク]および[埋め込みフレームワーク]を確認します。 AlliFramwork.frameworkが追加されていることを確認してください。

Steps 4. Info.plistで権限を指定します

AlliFramework.frameworkフォルダーのinfo.plistファイルを開き、情報プロパティリストの横にある「+」記号をクリックします。 ドロップダウンリストを[プライバシー]オプションまでスクロールし、カメラにアクセスするための[プライバシーカメラ使用法の説明]またはフォトライブラリにアクセスするためのプライバシーフォトライブラリ使用法の説明を選択します。
これにより、ユーザーは領収書ファイルまたは製品画像をチャットにアップロードできます。

選択した後、右側の文字列値を入力して、警告ポップアップが許可を求めたときにユーザーに表示するテキストを含めます。

Step 5. Alli SDKを初期化する

1.アプリケーションのデリゲートクラスファイルViewController.swiftの先頭に「import AlliFramework」を追加します。 これにより、Alliフレームワークにプロジェクトからアクセスできるようになります。
2. ViewControllerに以下を追加して、APIキーでAlliライブラリを初期化します。

  var alli: Alli?
  override func viewDidLoad() {
    // showHeader - optional, default: true, If you want to remove the header, turn off this option.
    // showFooter - optional, default: true, If you want to remove the footer, turn off this option.
    // showBackButton - optional, default: true, If you want to remove the back button on the header, turn off this option.
    alli = Alli("YOUR_API_Key", eventHandler: self, showHeader: true, showFooter: true, showBackButton: false)
  }

APIキーは、左側のナビゲーションから[設定](歯車アイコン)をクリックし、プロジェクト設定ページより取得ができます。

Step 6. ダイアログを作成する

ユーザーとAlliが会話することができるダイアログを作成するには、下記を呼び出します。

alli!.event(view: parentView)

特定のユーザIDとPlacementを指定したい場合は以下のように呼び出します。

alli!.event(userId:"YOUR_userId", placement:"YOUR_placement", view:parentView)

サービスにログインして、ユーザが特定されている場合、上記のようにAlliに情報を渡すことができます。あるいはログインしていないユーザーのために、一時的なIDを生成することもできます。

Placement情報は、ユーザーにスキルを表示したいアプリ内の場所を決定するために使用されます。Placementを作成した後、Alliダッシュボードで必要なスキルにPlacementを指定することができます。この機能の利点は、プレースメントに表示するスキルをいつでも決定できることです。

Alliダイアログは、親ビューコントローラで実装する必要があります。このとき、親ビューコントローラを委任属性に割り当てる必要があります。この呼び出しに渡されたViewControllerが最上位のビューであり、他のビューに隠れないようにしてください。そして親ビューは、最小の高さと幅が必要です。

Step 7: Alliイベントを処理するデリゲートメソッド

次のデリゲートメソッドは、チャットの会話ステータスに関するフィードバックを提供します。

import WebKit

public protocol AlliEventHandler {
    // Called when initialized successfully. 
    // You may receive NOT_INITIALIZE_YET error if 
    // called before this event.
    func onInitialized(_ view:WKWebView!)

    // Called when chat started successfully.
    func onConversationStarted(_ view: WKWebView!, userId: String, placement: String, context: Any?)

    // Called when conversation did not start 
    // even when Alli.event was called.
    func onConversationNotStarted(_ view: WKWebView!, userId: String, placement: String, context: Any?)

    // Called when user has closed the chat 
    // window or Alli.close() is called.
    func onConversationStopped(_ view: WKWebView!, userId: String, placement: String, context: Any?)

    func onError(_ view: WKWebView!, errorCode: AlliErrorCode, userId:String?, placement:String?, context:Any?)
  }

Step 8: 他のアプリとの接続

Alliチャットでhttpまたはhttpsにリンクすると、顧客のデフォルトのブラウザーが起動します。 他のアプリケーションへのリンクを追加する場合は、AlliEventHandlerからhandleUrlLoadingメソッドを実装します。


func handleUrlLoading(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    let strUrl = navigationAction.request.url!.absoluteString
    if(<condition>) {
        UIApplication.shared.open(URL(string: strUrl)!, options: [:], completionHandler: nil)
        decisionHandler(.allow)
    }
    else {
        decisionHandler(.cancel)
    }
}

(例)Apple Mapを起動する場合

let strUrl = "http://maps.apple.com/?q=seoul"