iOS向けASAP SDKの操作

iOS向けASAP SDKの操作

SDK バージョン2.0

はじめに

iOS向けのASAP SDK(ソフトウェア開発キット)を活用すると、iOSアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります:
  • カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット)
  • ナレッジベース(ヘルプ記事へのアクセス)
  • ユーザーコミュニティ(アプリを通じた他の顧客とやりとり)
この機能を活用すれば、エンドユーザーはアプリを終了してWebサイトにアクセスし直したり、サポートを受けるためにメールを送信したりする必要はありません。ユーザーはアプリ内でヘルプ記事を検索することができます。顧客満足度の向上につなげることができます。
ASAP SDKの機能を試す場合は、iPhoneまたはiPadにこの デモアプリ をインストールしてください。

バージョン2.0をリリースするにあたって、iOS 13のダークモードに対応しました。また、ユーザーのシステムにて設定されているフォントサイズに適合させることで、SDKをより便利に利用できるようにしました。また、開発者ユーザーからの要望に応じて、バージョン2.0ではチャットタブを他のタブと分割しました。連携するにあたって、ASAP Core SDK、ASAP Services SDKの2種類から選択できます。ASAP Core SDKには、ナレッジベース、コミュニティ、問い合わせタブが含まれています。ASAP Services SDKには、すべての主要なタブとチャットタブが含まれています。

ASAP SDKは、iOS 9以降のバージョンに対応しています。
現在バージョン1.1.12以前のASAP SDKを利用している場合、バージョン2.0を利用するには既存のコードを移行する必要があります。コードの移行手順については、この記事の 「バージョン1.xから2.0への移行」 セクションをご参照ください。

Zoho DeskでのSDKの設定

利用中のiOSアプリにASAPアドオンを追加する最初の手順として、Zoho Deskにアドオンを作成し、登録します。
以下の手順で、アドオンを作成できます:
  1. Zoho Deskで、 [設定] [チャネル] [ASAP] の順に移動します。
  2. 左側の 設定 メニューの ASAP にて、 モバイル の隣にある[+]ボタンをクリックします。 モバイルアドオンの作成 画面が表示されます。



  3. [アドオンの詳細] で、以下の内容を設定します:
    1. 名前: ASAPアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    2. 有効: ASAPアドオンを有効にする部門を選択します。
    3. バンドルID: iOS の項目に、iOSアプリのバンドルIDを入力します。(対象のアプリの設定内にある 一般 タブでバンドルIDを確認できます。)
      メモ :チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    4. チャット: 切り替えボタンを操作することで、チャット機能を有効または無効にできます。
      メモ :チャットタブには、ポータルのチャットチャネルにて設定された内容が反映されます。そのため、設定を変更するには、Zoho Deskの設定画面で行う必要があります。
    5. Zia: Zoho DeskのZia(ZohoのAIアシスタント)機能を有効にすると、顧客がモバイルアプリからZiaの案内に従って必要な情報を得ることができます。たとえば、質問を送信すると、対応するヘルプやよくある質問の記事(ナレッジベース)の内容が自動で表示されます。Zia機能を有効にするには、切り替えボタンをクリックします。

    6. 案内チャット :案内チャットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフローの事前設定が必要です。切り替えボタンをクリックすると、案内チャット機能の状態(有効/無効)を切り替えることができます。有効にしたら、使用したい案内チャットのフローを選択する必要があります。 詳細はこちら
      メモ :Ziaと案内チャットの機能は、両方を有効にすることも可能です。
    7. バンドルID: iOS の項目にiOSアプリのバンドルIDを入力します(対象のアプリの設定内にある [一般] タブでバンドルIDを確認できます)。
      メモ :チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    8. プッシュ通知: 切り替えボタンを操作することで、プッシュ通知を有効/無効にできます。詳細については、このドキュメントの「通知の有効化」セクションをご参照ください。
      メモ :通知を有効にするには、JWT方式でのユーザー認証が必須となります。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    9. 認証方法: このアドオンにおけるユーザーの認証方法を設定します。
    10. 匿名: この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
    11. JWT: この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせのステータスを表示したり、問い合わせに返信やコメントしたり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
  4. [保存] をクリックします。
コード のセクションが新しく表示されます。このセクションには組織ID、アプリID、配置の種類(データセンター)といったアプリの詳細が表示されます。これらの詳細データは、アプリでASAP SDKの初期設定を行う際に必要です。



SDKとアプリとの連携

次の手順では、ASAP SDKとiOSアプリを連携します。
以下のいずれかの方法を利用して連携処理を行うことができます。
CocoaPodsを利用した自動連携
この方法では、外部ライブラリの管理が可能な依存関係管理ツールであるCocoaPodsを利用します。外部サービスのフレームワークやライブラリを、Xcodeのプロジェクトに追加することができます。CocoaPodsのインストール方法については、 こちらのリンク をご参照ください。
CocoaPodsを利用してSDKとアプリを連携するにあたって、はじめにプロジェクトのPodfileを作成する必要があります。Podfileをまだ作成していない場合は、以下の手順で作成できます:
  1. ターミナルで、プロジェクトの最上位のフォルダーに移動します( xcodeproj ファイルが含まれるフォルダーです)。
  2. コマンド「$ pod init」を実行します。
  3. 次に、コマンド「 open -a Xcode Podfile 」を実行して、XcodeのPodfileを開きます。ファイルの内容が以下のように表示されます:
                
                   
                      # Uncomment this line to define a global platform for your project 
                      # platform :ios, '9.0' 
                      # Uncomment this line if you're using Swift 
                      # use_frameworks! t
                      arget 'My Sample App' do 
                      end
                   
                
                
  4. Swiftを利用する場合は、「use_frameworks!」の行に何も入力しないでください。
次に、Zoho DeskのポータルのSDKをPodfileに追加し、プロジェクトにSDKをインストールします。以下の手順で実施できます:
  1. はじめに、該当のSDKをPodfileに追加します。
    • ASAP Core SDK(問い合わせ、ナレッジベース、コミュニティ) を連携するには、以下のコードをPodfileのdoブロックに追加します。
                        
                           
                              target 'My Sample App' do 
                              pod 'ZohoDeskPortalCore' 
                              end
                           
                        
                        
    • ASAP Services SDK(問い合わせ、ナレッジベース、コミュニティ、チャット) を連携するには、以下のコードをPodfileのdoブロックに追加します。
                        
                           
                              target 'My Sample App' do 
                              pod 'ZohoDeskPortalServices' 
                              end
                           
                        
                        
  2. Podfileを保存します。
  3. ターミナルで、コマンド「 $ pod install 」を実行します。
以上で、CocoaPodsを利用したSDKとアプリとの連携が完了しました。技術的に説明すると、CocoaPodsによって管理されている依存関係が、プロジェクトに含まれている状態です。そのため、次の手順では、 .xcworkspace .xcodeproj ファイルではなく、PodfileからXcodeのプロジェクトを開く必要があります。CocoaPodsの利用方法については、 こちらをクリック してください。

手動連携
CocoaPodsを利用せずにASAP SDKとアプリを連携する場合、手動で行うことができます。以下の手順で実施できます:
  1. はじめに、該当のSDKをダウンロードします。
    • ASAP Core SDK(問い合わせ、ナレッジベース、コミュニティ) の場合は、 こちらのリンク を使用します。
    • ASAP Services SDK(問い合わせ、ナレッジベース、コミュニティ、チャット) の場合は、 こちらのリンク を使用します。
  2. ダウンロードしたファイルを解凍します。次に、拡張子「 .XCFramework」を持つ対象のフレームワークファイルを、 Xcodeのプロジェクトの Frameworks Libraries and Embedded Content セクションにドラッグ&ドロップします。
メモ:  ASAP Core SDKを連携する場合は、アプリの「info.plist」ファイルに NSPhotoLibraryUsageDescription NSCameraUsageDescription NSMicrophoneUsageDescription キーを追加してください。
ASAP Services SDKの場合は、上記のキーに加えて、 NSBluetoothPeripheralUsageDescription キーを追加してください。チャットタブではBluetoothの権限が求められるため、この手順は非常に重要です。 info.plist ファイルにこれらのキーが追加されていない場合、アプリを起動した際にアプリが正常に動作しません。また、関連するビューコントローラーが存在する場合、App Storeによる認証に失敗する可能性があります。

アプリ内のSDKの初期設定

次に、アプリ内のASAP SDKの初期設定を行います。
この手順では、以下の3つのキーが必須です。
  • 組織ID(Org ID)
  • アプリID(App ID)
  • データセンター(Datacenter)
これらのキーの値は、Zoho DeskのASAPアドオンの設定画面にある コード セクションに表示されます。
アプリ内のSDKの初期設定を行うには、以下の手順を実施します。
  1. Zoho DeskポータルのSDKフレームワークを、プロジェクトの AppDelegate ファイル内にインポートします。
    Swift
                   
                      
                         import ZohoDeskPortalAPIKit
                      
                   
                   
    Objective-C
                   
                      
                         @import ZohoDeskPortalAPIKit;
                      
                   
                   
  2. 以下の初期化コードを、引数「 didFinishLaunchingWithOptions 」を持つアプリケーションのメソッド内に貼り付けます。
    Swift
                
                   
                      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)-> Bool {
                          ZohoDeskPortalSDK.initialize(orgID:<#String#>, appID:<#String#>, dataCenter: <#ZDPDataCenter#>)
                          return true 
                      }
                   
                
                
    Objective-C
                
                   
                      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
                          [ZohoDeskPortalSDK initializeWithOrgID:<#NSString#>appID:<#NSString#>dataCenter:<#ZDPDataCenter#>];
                          return YES; 
                      }
                   
                
                
メモ:
配置の種類の応じたデータセンターの値は、以下のとおりです:
CN:ZDPDataCenter.CN
EU:ZDPDataCenter.EU
US:ZDPDataCenter.US
IN:ZDPDataCenter.IN
AU:ZDPDataCenter.AU

ヘルプタブの表示

このセクションでは、ASAPアドオンにて各ヘルプタブを表示する方法を説明します。これにより、初期設定、またはZoho Deskのポータルで行われた設定に基づいた各タブを表示することができます。初期設定のタブは、利用中のZoho Deskのプランによって異なります。
SDKダッシュボード
エンドユーザーは、SDKダッシュボードの画面を通じてヘルプセンターにアクセスすることができます。このダッシュボードにはボタンやアイコンが表示されます。このボタンやアイコンから、ナレッジベース、ユーザーコミュニティ、問い合わせ送信フォーム、問い合わせリスト(ログインしたユーザーから送信された問い合わせの一覧)、チャット(リアルタイムでカスタマーサポート担当者とやりとり)にアクセスすることができます。
メモ :ASAP Services SDKでチャットタブを表示する場合は、Zoho DeskのWebポータルにてチャットタブを有効にする必要があります。
SDKダッシュボードを表示するには、以下のコードをメソッド内に追加します。
Swift
      
         
            import ZohoDeskPortalCore 
            ...
            ZDPortalHome.show()
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalCore; 
            ...
            [ZDPortalHome showWithConfiguration:nil andTitle:nil];
         
      
      
メモ
  • 特定のヘルプタブをアドオン内に表示するには、はじめにZoho DeskのWebポータルで対象のタブを有効にする必要があります。
  • ダッシュボードでタブを表示せずに、アプリ内の別の場所から起動させることもできます。
  • アプリ内にSDKダッシュボードを表示せずに、それぞれのヘルプタブにアクセスできるようにするオプションも用意されています。


以下では、初期設定の各タブを表示する方法を説明します。
設定を上書きしたSDKダッシュボード
以下のメソッドにより、設定を上書きしたSDKダッシュボードが表示されます。
Swift
      
         
            let config = ZDPHomeConfiguration() 
            config.enableHelpCenter = true // disable/enable the Help center (Knowledge Base). 
            config.enableCommunity = false // disable/enable the Community. 
            config.enableCreateTicket = true // disable/enable the CreateTicket. 
            config.enableMyTicket = true // disable/enable My Tickets.
            ZDPortalHome.show(withConfiguration: config)
         
      
      
Objective-C
      
         
            ZDPHomeConfiguration * config = [[ZDPHomeConfiguration alloc]init]; 
            config.enableHelpCenter = YES; // disable/enable the Help center (Knowledge Base). 
            config.enableCommunity = NO; // disable/enable the Community. 
            config.enableCreateTicket = YES; // disable/enable the CreateTicket. 
            config.enableMyTicket = YES; // disable/enable My Tickets.
            [ZDPortalHome showWithConfiguration:config andTitle:<#(NSString * _Nullable)#>];
         
      
      
このコードは、コミュニティタブが表示されないように設定されているダッシュボードの例です。アプリ内にSDKダッシュボードを表示せずに、それぞれのヘルプタブにアクセスできるようにするオプションも用意されています。以下では、初期設定の各タブを表示する方法を説明します。
チャット
エンドユーザーは、チャットを通じてリアルタイムでサポート担当者とやりとりを行うことができます。
以下のメソッドにより、チャットタブが表示されます。
Swift
      
         
            import ZohoDeskPortalChat 
            ...
            ZDPortalChat.show()
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalChat; 
            ...
            [ZDPortalChat show];
         
      
      
ヘルプセンター(ナレッジベース)
エンドユーザーは、ヘルプセンタータブからナレッジベース内のヘルプ記事にアクセスすることができます。
ナレッジベースに関連するすべてのメソッドの呼び出しには、以下のインポートステートメントを追加します。
Swift
      
         
            import ZohoDeskPortalKB
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalKB;
         
      
      
以下のメソッドにより、ヘルプセンター(ナレッジベース)が表示されます。
Swift
      
         
            ZDPortakKB.show()
         
      
      
Objective-C
      
         
            [ZDPortalKB showKnowledgeBaseWithTitle:<#NSString#>];
         
      
      
パーマリンクを利用してナレッジベースのカテゴリーを表示するには、以下のメソッドを使用します。
Swift
      
         
            ZDPortalKB.showCategory(withPermalink: <#String#>)
         
      
      
Objective-C
      
         
            [ZDPortalKB showCategoryWithPermalink:<#NSString#>withTitle:<#NSString#>];
         
      
      
パーマリンクが対象のナレッジベースのカテゴリーのURLを指すようになります。



たとえば、上記の画像のURLでは、「/kb/」に続く部分は対象のカテゴリーのパーマリンクです。カテゴリー、またはサブカテゴリーのパスとして、この部分を指定することができます。
パーマリンクを利用して記事を直接表示するには、以下のメソッドを使用します。
Swift
      
         
            ZDPortalKB.showArticle(withPermalink : <#String#>)
         
      
      
Objective-C
      
         
            ZDPortalKB showArticleWithPermalink:<#NSString#>withTitle:<#NSString#>];
         
      
      
パーマリンクが、対象のヘルプ記事のURLを指すようになります。



たとえば、上記の画像のURLでは、「/articles/」に続く部分は対象の記事のパーマリンクです。
問い合わせタブ
問い合わせタブに関連するすべてのメソッドの呼び出しには、以下のインポートステートメントを追加します。
Swift
      
         
            import ZohoDeskPortalTicket
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalTicket;
         
      
      
問い合わせの送信
エンドユーザーは、問い合わせの送信画面から質問や要望を問い合わせとして送信することができます。
以下のメソッドにより、問い合わせの送信画面が表示されます。
Swift
      
         
            ZDPortalSubmitTicket.show()
         
      
      
Objective-C
      
         
            [ZDPortalSubmitTicket showWithTitle:<#NSString#>];
         
      
      
アプリに対して問い合わせの送信に関するイベントを記録させる場合、以下のメソッドを使用します。このメソッドには、イベントのコールバック処理が含まれています。
Swift
      
         
            ZDPortalSubmitTicket.showAddTicketForm(completion: { (ticket) in
              // The ticket parameter contains the details of the ticket created.
              // Your program logic goes here.
            }, onError: { error in
              // error creating Ticket 
            })
         
      
      
Objective-C
      
         
            [ZDPortalSubmitTicket showAddTicketFormWithTitle:<#(NSString * _Nullable)#> navigationMode:<#(enum ZDPNavigationMode)#> completion:^(ZDPTicket * ticket) {
             // The ticket parameter contains the details of the ticket created.
              // Your program logic goes here.
            } onError:^(NSError * error) {
              // error creating Ticket 
            }];
         
      
      
問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクトによって、問い合わせに関する情報がアプリに送信されます。
メモ :認証済みユーザーによって問い合わせが送信されると、問い合わせのすべての詳細情報が送信されます。ゲストユーザーによって問い合わせが送信されると、問い合わせ番号のみが送信されます。
自分の問い合わせ
エンドユーザーは、自分の問い合わせ画面から自身が送信した問い合わせにアクセスしたり、問い合わせを確認、編集したりすることができます。
以下のメソッドにより、自分の問い合わせ画面が表示されます。
Swift
      
         
            ZDPortalTicket.show()
         
      
      
Objective-C
      
         
            [ZDPortalTicket showWithTitle:<#NSString#>];
         
      
      
ユーザーコミュニティ
エンドユーザーは、ユーザーコミュニティタブを通じて、フォーラム(掲示板)にアクセスしたり、他のユーザーとやりとりしたりすることができます。
コミュニティタブに関連するすべてのメソッドの呼び出しには、以下のインポートステートメントを追加します。
Swift
      
         
            import ZohoDeskPortalCommunity
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalCommunity;
         
      
      
ユーザーコミュニティを表示するには、以下のメソッドを使用します。
Swift
      
         
            ZDPortalCommunity.show()
         
      
      
Objective-C
      
         
            [ZDPortalCommunity show];
         
      
      
特定のトピックを表示するには、以下のメソッドを使用します。
Swift
      
         
            ZDPortalCommunity.showTopic(withID: <#String#>)
         
      
      
Objective-C
      
         
            [ZDPortalCommunity showTopicWithID:<#NSString#>];
         
      
      

案内チャット
案内チャットは、顧客が、担当者からのサポートを受けずに、自力で問題を解決するのに役立つ機能です。自動応答によるやりとりを通じて、顧客の求めている内容を絞り込みながら、適切な解決策や手続きを提示できます。提供には、チャットのフローの事前設定が必要です。
案内チャットに関連するすべてのメソッドの実行には、以下のインポートステートメントを追加します。

Swift
         
            
               import ZohoDeskPortalLiveChat
            
         
         
            
Objective-C
            
               
                  @import ZohoDeskPortalLiveChat;
               
            
            
               

以下のメソッドにより、案内チャットが表示されます。

Swift
            
               
                  ZDPortalLiveChat.show()
               
            
            
               
Objective-C
            
               
                  [ZDPortalLiveChat show];
               
            
            
               

Ziaや案内チャットの機能を有効にすると、チャットの画面は以下のように表示されます。



  1. すでにサインインしているユーザーが最新のバージョンに移行し、案内チャットを利用する場合、一度サインアウト(ログアウト)してから、もう一度サインイン(ログイン)の操作を行い、再認証する必要があります。再認証が完了すると、ユーザーの認証情報が案内チャット機能に同期されます。
  2. 案内チャットとZiaを一緒に有効にすると、初期設定では案内チャットが読み込まれます。必要に応じて、Ziaに切り替えることもできます。会話を再開するメニューをクリックしてフローをリセットしない限り、フロー中にZiaと案内チャットを切り替えることはできませんので、ご注意ください。
  3. Ziaのボットから回答が得られなかったときに顧客が実行できる処理は、チャットタブが有効になっているかどうかによって異なります。たとえば、チャットタブが有効な場合、顧客は担当者とやりとりを行うように切り替えることもできます。無効になっている場合、顧客は問い合わせの送信のみを行うことができます。

SDKでのユーザー認証

アプリのエンドユーザーが自身の送信した問い合わせにアクセスするには、IDが必要です。これにより、ユーザーはZoho Deskのポータルユーザーとして自身を認証することができます。Zoho Deskでは、この認証方式を取り入れるためにJSON Web Token(JWT)を利用しています。
Zoho Deskでは2種類の認証方法に対応しています。匿名とJWTです。
  • 匿名: この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
  • JWT: この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
ASAP SDKでのJWTによるユーザー認証の設定方法については、 こちらのドキュメント をご参照ください。
以下のコードにより、SDKでユーザーを認証することができます。ユーザー認証に関連するすべてのメソッドにアクセスできるようにするには、以下のインポートステートメントを追加する必要があります。
Swift
      
         
            import ZohoDeskPortalAPIKit
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalAPIKit;
         
      
      
Swift
      
         
            if !ZohoDeskPortalSDK.isUserLoggedIn{ 
                ZohoDeskPortalSDK.login(withUserToken: String) { (isSuccess: Bool) in
            // isSuccess shows whether the login attempt was successful
            // any errors will be logged
                }
            }else{
            // user logged in already 
            }
         
      
      
Objective-C
      
         
            if (!ZohoDeskPortalSDK.isUserLoggedIn){
                [ZohoDeskPortalSDK loginWithUserToken:<#(NSString * _Nonnull)#> onCompletion:^(BOOL isSuccess) {
            // isSuccess shows whether the login attempt was successful
            // any errors will be logged
                }];
            }else{
            // user logged in already 
            }
         
      
      
「ZohoDeskPortalSDK.isUserLoggedIn」は、ユーザーが現在ログインしているかどうかを識別するための真偽値です。
ユーザーをSDKからログアウト
ユーザーをSDKからログアウトさせるには、以下のメソッドを使用します。
Swift
      
         
            ZohoDeskPortalSDK.logout { (isSuccess: Bool ) in
               // isSuccess shows whether the logout attempt was successful
               // any errors will be logged
            }
         
      
   
Objective-C
      
         
            [ZohoDeskPortalSDK logoutOnCompletion:^(BOOL isSuccess) {
            // isSuccess shows whether the logout attempt was successful
                // any errors will be logged
            }];
         
      
      
このメソッドを呼び出した後、対象の認証済みユーザーは匿名ユーザーとして識別されます。

ローカルデータのクリア

認証済みユーザーがASAPアドオンからログアウトすると、デバイスに保存されているすべてのデータは自動的にクリアされます。
匿名ユーザーのローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。
Swift
      
         
            ZohoDeskPortalSDK.clearAllLocalData()
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK clearAllLocalData];
         
      
      

アドオンの操作画面のカスタマイズ

ASAP SDKには、必要に応じてアドオンの操作画面をカスタマイズできるオプションが用意されています。
標準のテーマ
SDKの操作画面には、ホワイトとブラックの2種類の標準のテーマが用意されています。これらのテーマを適用するには、以下のメソッドを使用します。

テーマを変更するには、以下のインポートステートメントを追加する必要があります。このステートメントにより、Zoho Deskの各テーマがインポートされます。
Swift
      
         
            import ZDThemeKit
         
      
      
Objective-C
      
         
            @import ZDThemeKit;
         
      
      
ZDThemeKitモジュールには、すべてのテーマに関連するAPIが含まれています。そのため、ZDThemeManagerにてメソッドを呼び出す前に、このモジュールをインポートする必要があります。
ホワイトテーマを適用するメソッド(初期設定)
Swift
      
         
            ZDThemeManager.setTheme(type: .white)
         
      
      
Objective-C
      
         
            [ZDThemeManager setTheme:ZDThemeTypeWhite];
         
      
      
ブラックテーマを適用するメソッド
Swift
      
         
            ZDThemeManager.setTheme(type: .dark)
         
      
      
Objective-C
      
         
            [ZDThemeManager setTheme:ZDThemeTypeDark];
         
      
      
iOS 13では、システム全体にダーク、ライトの2種類のテーマを設定できるオプションが用意されています。そのため、iOS 13以降ではASAPアドオンでシステムのテーマを設定することができます。この場合、アドオンのテーマはOSと同じテーマに設定されます。
Swift
      
         
            ZDThemeManager.setTheme(type: .system)
         
      
      
Objective-C
      
         
            [ZDThemeManager setTheme:ZDThemeTypeSystem];
         
      
      
メモ
  1. 「ZDThemeType.system」は、iOS 13以降でのみ利用できます。
  2. 初期設定では、iOS 13以降でシステムテーマが適用されます。iOS 13以前ではライトテーマが適用されます。
テーマのカスタマイズ
アプリケーションの要件を満たすSDKを作成できるように、標準のダーク/ライトテーマを上書きすることができます。
標準のライトテーマを更新するには、以下のメソッドを使用します。
Swift
      
         
            ZDThemeManager.updateTheme(theme: <#ZDThemeProtocol#>)
         
      
      
Objective-C
      
         
            [ZDThemeManager updateThemeWithTheme:<#ZDThemeProtocol#>];
         
      
      
標準のダークテーマを更新するには、以下のメソッドを使用します。
Swift
      
         
            ZDThemeManager.updateDarkTheme(theme: <#ZDThemeProtocol#>)
         
      
      
Objective-C
      
         
            [ZDThemeManager updateDarkThemeWithTheme:<#ZDThemeProtocol#>];
         
      
      
「ZDThemeProtocol」には、プロパティの一覧が含まれています。この一覧では、「primaryTextColor」や「navigationBarTextColor」など、SDKで最も使用される色が表されます。プロトコル内のプロパティはすべて任意です。このプロトコルに適合するクラスを作成することができます。また、複数のプロパティを実装することもできます。クラスで設定した色によって、標準のテーマが上書きされます。
メモ :SDKのテーマの更新処理は、テーマの種類の設定処理とは異なります。通常、設定したテーマの種類に応じて、SDKにダークまたはライトテーマが適用されます。
カスタムフォントの活用
SDKの操作画面には、標準の各種フォントが用意されています。これとは別に、要件に応じてカスタマフォントを利用することもできます。
SDKの操作画面でカスタムフォントを表示できるようにするには、はじめに以下の手順を実施します:
  1. プロジェクトにフォントを追加します。
  2. アプリの「info.plist」ファイルを編集して、アプリケーションキーが提供する フォント を追加します。
  3. このキーには、SDKの操作画面で使用するすべてのフォントの名前が表示されます。
プロジェクトにフォントを追加した後、指定したフォントでテキストを表示するようにSDKの操作画面をカスタマイズできます。
SDKの操作画面でカスタムフォントを表示するには、以下のメソッドをアプリのコードに追加します。
Swift
      
         
            ZDPortalConfiguration.customFontName = <#String#>
         
      
      
Objective-C
      
         
            ZDPortalConfiguration.customFontName = <#NSString#>;
         
      
      
メモ :カスタムフォントを使用しない場合、初期設定ではシステムのフォントが表示されます。バージョン2.0からフォントのサイズを変更できるようになりました。カスタムフォントは、iOS 11以降でのみ対応しています。

言語設定の変更

ASAP SDKは、47種類の言語に対応しています。アプリを利用するエンドユーザーの地域に応じた言語を選択できます。
ASAPアドオンの言語を設定するには、以下のコードを使用します。ただし、SDLのサイズを制限するために、SDKのバージョン1.0が対応している13言語のみがバンドルされています。

ASAP SDKで対応している47言語は、次の表のとおりです:

言語

ロケールコード

英語(イギリス)              

en-GB

英語(アメリカ)

en

German

de

Spanish

es

Catalan

ca-ES

French

fr

French (Canada)

fr-CA

Italian

it

Russian

ru

Chinese (Traditional)

zh-Hant

Chinese (Simplified)

zh-Hans

Turkish

tr

Dutch

nl

Danish

da

Portuguese (Portugal)

pt-PT

Japanese

ja

Swedish

sv

Polish

pl

Arabic

ar

Hebrew

he

Afrikaans

af

Czech

cz

Bulgarian

bg

Finnish

fi

Greek

el

Hungarian

hu

Indonesian

id

Norwegian (Bokmal)

nb

Romanian

ro

Thai

th

Ukrainian

uk

Vietnamese

vi

Urdu

ur

Hindi

hi

Telugu

te

Kannada

kn

Tamil

ta

Marathi

mr

Korean

ko

Persian

fa

Bengali

bn

Gujarati

gu

Malay

ms

Malayalam

ml

Slovak

sk

Croatian

hr

Slovenian

sl


ASAPアドオンの言語を設定するには、以下のコードを使用します。メソッドに言語の識別子を指定します。たとえば、英語の場合は「en」を指定します。

Swift
      
         
            ZDPortalConfiguration.setSDKLanguage(<#String#>)
         
      
      
Objective-C
      
         
            [ZDPortalConfiguration setSDKLanguage:<#NSString#>];
         
      
      
SDKにバンドルされている13言語は、次の表のとおりです。

言語
ロケールコード
英語
en
ドイツ語
de
スペイン語
es
フランス語
fr
イタリア語
it
ロシア語
ru
中国語(繁体字)
zh-Hant
中国語(簡体字)
zh-Hans
トルコ語
tr
オランダ語
nl
デンマーク語
da
ポルトガル語(ポルトガル)
pt-PT
日本語
ja

34言語のいずれかをアプリに追加するには、次の手順を実行します:
  1. こちらのリンク  から、文字列のバンドルをダウンロードします。
  2. アプリに必要のない言語の「lproj」ファイルを削除します。
  3. プロジェクトにバンドルを追加します。

操作画面上の文字列のカスタマイズ

ASAP SDKでは、アドオンのそれぞれの画面に表示されるテキストをカスタマイズすることができます。カスタマイズ可能なテキストには、ヘルプタブの操作画面のラベル、エラーメッセージ、一般情報などが含まれます。テキストを変更するには、以下の手順を実施します:
  1. ASAPStrings.bundle 」という件名のバンドルを、アプリのXcodeのプロジェクトに作成します。このバンドルへのアクセスパスは、次のとおりです:Application-bundle/ASAPStrings.bundle.
  2. ファイル名を言語コードにした新しい「Iproj」ファイルを作成し、必要に応じて、キーの値をカスタマイズします。  以下に一覧されている主要なキー、または、言語バンドル内のすべてのキーをカスタマイズできます。
  3. この新しい「lproj」ファイルを、「 ASAPStrings 」バンドルに追加します。
メモ :言語ごとに個別の「lproj」ファイルが必要です。アドオンで対応する各言語で文字列をカスタマイズするには、手順2と手順3を必要な回数だけ繰り返します。

初期設定の「ASAPLocalizable.strings」ファイル内の主要なキーは、次の表のとおりです。

キー
初期設定のテキスト
説明
DeskPortal.Dashboard.Heading
「Welcome」
ヘルプセンターのダッシュボードに表示されるテキストです
DeskPortal.Dashboard.helpcenter.title
「Knowledge Base」
ダッシュボード上に表示されるナレッジベースタブのアイコンのタイトルです
DeskPortal.Dashboard.helpcenter.description
「Browse our extensive repository of help articles」
ナレッジベースの説明文です
DeskPortal.Dashboard.community.title
「Community」
ダッシュボード上に表示されるユーザーコミュニティタブのアイコンのタイトルです
DeskPortal.Dashboard.community.description
「Find and share solutions with the user community」
ユーザーコミュニティの説明文です
DeskPortal.Dashboard.addticket.title
「Submit Ticket」
ダッシュボード上に表示される問い合わせの送信タブのアイコンのタイトルです
DeskPortal.Dashboard.addticket.description
「Seek help from our agents」
問い合わせの送信画面の説明文です
DeskPortal.Dashboard.myticket.title
「My Tickets」
ダッシュボード上に表示される自分の問い合わせのアイコンのタイトルです
DeskPortal.Dashboard.myticket.description
「View and manage tickets that you submitted」
自分の問い合わせ画面の説明文です
DeskPortal.Helpcenter.article.detail.relatedtitle
「Related Articles」
ナレッジベース内のヘルプ記事の下部に表示されるテキストです
DeskPortal.Helpcenter.article.detail.vote.description
「Was this article helpful?」
ユーザーのフィードバックを促すテキストです
DeskPortal.Helpcenter.feedback.title
「Feedback」
フィードバックフォームのタイトルです
DeskPortal.Helpcenter.feedback.description
「We're sorry the article wasn't helpful.」
ユーザーが記事に対して低い評価を行った際に表示されるテキストです
DeskPortal.Myticket.option.closeticket
「Close Ticket」
ユーザーが送信した問い合わせを自身で完了できるようにするためのオプションのテキストです
DeskPortal.Error.message.reload
「Retry」
問い合わせを送信できなかった際に表示されるエラーメッセージです
DeskPortal.Network.failed.error.message
「Check your internet connection」
接続が切断された際に表示されるエラーメッセージです
DeskPortal.Dashboard.livechat.title
「Live Chat」
ヘルプセンターのダッシュボード上に表示されるチャットタブのタイトルです
DeskPortal.Helpcenter.category.subheading
「Section」
ナレッジベース内の記事のカテゴリーが1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.categories.subheading
「Sections」
ナレッジベース内の記事のカテゴリーが複数登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.article.detail.title
「FAQs」
各記事の画面のタイトルです
DeskPortal.Addticket.title
「Add Ticket」
問い合わせの送信フォームのタイトルです
DeskPortal.Myticket.comment.option.title
「Comment Actions」
ユーザーが問い合わせにコメントを追加した際に表示されるオプションメニューのタイトルです
DeskPortal.Myticket.option.editcomment
「Edit Comment」
ユーザーがコメントした内容を自身で編集できるようにするためのオプションのテキストです
DeskPortal.Helpcenter.article.subheading
「Article」
記事のカテゴリーに記事が1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.articles.subheading
「Articles」
記事のカテゴリーに記事が複数登録されている場合に表示されるテキストです

通知の有効化

担当者がチャットを通じて返信した際にエンドユーザーに通知が送信されるように、ASAPアドオンを設定することができます。SDKで通知を有効にするために、.p12形式のAPNs(Apple Push Notification service)証明書が使用されています。
APNs証明書の.p12ファイルを作成するには、以下の手順を実施します。
  1. Appleの開発者ポータルでAPNs証明書を作成し、ダウンロードします。
  2. 証明書をダブルクリックします。ダブルクリックすると、自動的に証明書がキーチェーンアクセスアプリケーションにインポートされます。
  3. キーチェーンアクセス内の証明書を開きます。証明書に対応するキーが表示されます。
  4. 証明書とキーを選択して、右クリックします。コンテキストメニューが表示されます。
  5. エクスポートオプションをクリックします。ダイアログボックスが表示されます。
  6. ダイアログボックスの [File Format] のドロップダウンで [.p12] が選択されていることを確認し、 [保存] をクリックします。
  7. ファイルにアクセスするためのパスワードを入力して、 [OK] をクリックします。証明書が.p12ファイルとしてエクスポートされます。
次に、Zoho DeskのASAP設定画面でプッシュ通知を有効にする必要があります。手順は次のとおりです:Zoho Deskのアドオンの設定画面で、作成した.p12ファイルと、ファイルにアクセスするためのパスワードをアップロードします。次に、AppDelegate内の「application:didRegisterForRemoteNotificationsWithDeviceToken:」メソッド内にあるAPI「enablePushNotification:」を呼び出すように、アドオンを設定します。
この設定を行うには、以下のメソッドをアプリのコードに追加します。
Swift
      
         
            func application(_ application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}).uppercased() ZohoDeskPortalSDK.enablePushNotification(deviceToken:token, mode: .production) }
         
      
      
Objective-C
      
         
            - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSString * token = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; [ZohoDeskPortalSDK enablePushNotificationWithDeviceToken:token isTestDevice:NO mode:APNSModeProduction]; }
         
      
      
メモ :開発モードで機能をテストして、通知が正しく送信されるかどうか検証することができます。開発モードに切り替えるには、上記のコードの「.production」を「.sandbox」に変更します。エンドユーザーに対してアプリを公開する前に、必ず本番環境モードに切り替えてください。
次に、プッシュ通知が受信された際にAppDelegateの「didReceiveRemoteNotification:」が自動的に呼び出されるように、SDKを設定する必要があります。その後、SDKが受信した通知を処理して対象の操作を実行するように、SDKの「processRemoteNotification」メソッドが通知の詳細データとともに呼び出す必要があります。以下のメソッドを追加します。

Swift
      
         
            import ZohoDeskPortalConfiguration 
            ... func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
               ZDPortalConfiguration.processRemoteNotification(userInfo: userInfo) 
            }
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalConfiguration; 
            ...
             - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
               [ZDPortalConfiguration processRemoteNotificationWithUserInfo:userInfo]; 
            }
         
      
      

担当者に対する匿名ユーザーの詳細データの表示

通常、匿名ユーザーからチャットを通じてサポート窓口に連絡が行われる際、担当者の画面にはユーザーの詳細データは表示されません。ただし、ASAPアドオンを設定することで、匿名ユーザーから連絡を受け取った際に詳細データを表示することができます。
設定するには、次のメソッドを追加します。

Swift
      
         
            import ZohoDeskPortalChat 
            ...
            ZDPortalChat.setGuestUser(email:<#Guest_User_Email#>, displayName:<#Guest_User_DisplayName#>", phoneNumber: <#Guest_User_PhoneNumber#>")
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalChat;
            ...
            [ZDPortalChat setGuestUserWithEmail:<#Guest_User_Email#>displayName:<#Guest_User_DisplayName#>phoneNumber:<#Guest_User_PhoneNumber#>];
         
      
      
また、ユーザーとのやりとりが引き続き必要な場合、担当者はチャットのやりとりを問い合わせに変換することができます。やりとりを行うには、メールアドレスが必須です。

プログラムによる問い合わせの追加

ASAPアドオンを通じて、エンドユーザーに対して手動での問い合わせの送信を許可できますが、アプリ内で特定のイベントが発生した際に自動的に問い合わせを記録するようにアプリを設定することもできます。たとえば、衣料品ビジネスを経営しており、ユーザーがアプリにアクセスした際に「 レディース 」画面を読み込めなかった場合、この読み込みに失敗したデータが自動的に問い合わせとしてヘルプデスクに記録されるようにすることができます。ユーザーは、ヘルプセンターにアクセスして手動で問い合わせを送信する必要がありません。
この問い合わせの自動送信を有効にするには、以下のメソッドをアプリのコードに追加します。

Swift
      
         
            import ZohoDeskPortalAPIKit
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalAPIKit;
         
      
      
ポータルにて部門のIDを取得するには、以下のメソッドを追加します。
Swift
      
         
            ZohoDeskPortalSDK.getDepartments(onCompletion: { (departments, error) in
            // on success, departments will return an array, error will return nil
            // on failure, error will return a value, departments will return nil 
            }
         
      
      
Objective-C
      
         
            ZohoDeskPortalSDK getDepartmentsOnCompletion:^(NSArray * departments, NSError * error) {
            // on success, departments will return an array, error will return nil
            // on failure, error will return a value, departments will return nil 
            }];
         
      
      
部門で設定した商品に関する情報を取得するには、以下のメソッドを追加します。
Swift
      
         
            ZohoDeskPortalSDK.getProducts(inDepartmentID: String, [String: Any]?){ (products, error) in
            // on success, products will return an array, error will return nil
            // on failure, error will return a value, products will return nil 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK getProductsInDepartmentID:<#NSString#>params:<#NSDictionary#>onCompletion:^(NSArray * products, NSError * error) {
            // on success, products will return an array, error will return nil
            // on failure, error will return a value, products will return nil 
            }];
         
      
      
部門の問い合わせのレイアウトで項目に関する情報を取得するには、以下のメソッドを追加します。

Swift
      
         
            ZohoDeskPortalSDK.Ticket.getFields([String: Any]?){ (fields, error) in
            // on success, fields will return an array, error will return nil
            // on failure, error will return a value, products will return nil 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDKTicket getFields:<#(NSDictionary * _Nullable)#>onCompletion:^(NSArray * fields, NSError * error) {
            // on success, fields will return an array, error will return nil
            // on failure, error will return a value, fields will return nil 
            }];
         
      
      
問い合わせに添付されたファイルを含めるには、以下のメソッドを追加します。

Swift
      
         
            ZohoDeskPortalSDK.Ticket.addAttachment(with:<#Data#>, andName:<#String#>, using: <#ZDPUploaderDelegate?#>) { (attachment, error) in
            // on success, attachment will return a value, error will return nil
            // on failure, error will return a value, attachment will return nil 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDKTicket addAttachmentWith:<#NSData#>andName:<#NSString#>using:<#(id _Nullable)#>onCompletion:^(ZDPortalAttachment * attachment, NSError * error) {
            // on success, attachment will return a value, error will return nil
            // on failure, error will return a value, attachment will return nil 
            }];
         
      
      
この問い合わせの自動送信を有効にするには、以下のメソッドをアプリのコードに追加します。認証済みユーザーと未認証ユーザーの問い合わせを投稿するには、別々のメソッドを呼び出す必要があります。

Swift
      
         
            if ZohoDeskPortalSDK.isUserLoggedIn {
            ZohoDeskPortalSDK.Ticket.add(withFields:<#T##[String : Any]#>) { (ticket, error) in
            // on success, ticket will return an object, error will return nil
            // on failure, error will return a value, ticket will return nil 
            } 
            } else {
            ZohoDeskPortalSDK.Ticket.addAsGuest(withFields: <#T##[String : Any]#>) { (ticketNumber, error) in
            // on success, ticketNumber will return a string value, error will return nil
            // on failure, error will return a value, ticketNumber will return nil 
            } 
            }
         
      
      
Objective-C
      
         
            if (ZohoDeskPortalSDK.isUserLoggedIn) {
                [ZohoDeskPortalSDKTicket addWithFields:<#(NSDictionary * _Nonnull)#>onCompletion:^(ZDPTicket * ticket, NSError * error) {
                   // on success, ticket will return an object, error will return nil
                   // on failure, error will return a value, ticket will return nil
                }]; 
            }else{
               [ZohoDeskPortalSDKTicket addAsGuestWithFields:<#(NSDictionary * _Nonnull)#>onCompletion:^(NSString * ticketNumber, NSError * error) {
                   // on success, ticketNumber will return a string value, error will return nil
                   // on failure, error will return a value, ticketNumber will return nil 
                }] 
            }
         
      
      
メモ :メソッドを呼び出すにあたって、 EmailAddress Subject DepartmentID は必須パラメーターです。

コミュニティタブのカスタマイズ

これらのメソッドを使用すると、ユーザーコミュニティや関連するコンテンツをASAPアドオンに表示することができます。
コミュニティ操作のカスタマイズ設定
ユーザーはコミュニティタブでさまざまな操作を行うことができます。操作には、トピックの編集/削除、コメントの追加/編集/削除が含まれます。
以下のメソッドでは、ユーザーがASAPアドオンを通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。

Swift
      
         
            ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#> 
            ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#> 
            ZDPCommunityConfiguration.isReplyAllowed = <#Bool#> 
            ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#> 
            ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>
         
      
      
Objective-C
      
         
            ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#>; 
            ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#>; 
            ZDPCommunityConfiguration.isReplyAllowed = <#Bool#>; 
            ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#>; 
            ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>;
         
      
      
最も人気のあるトピックの取得
以下のAPIを使用すると、最も評価の高いフォーラムのトピックを取得することができます。

Swift
      
         
            ZohoDeskPortalSDK.Community.getMostPopularTopics(<#[String:Any]?#>) { (result: Result<[ZDPCommunity.TopicDetail], ZDPError>) in
               // switch on result to get array of topics on success 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDKCommunity getMostPopularTopics:<#(NSDictionary * _Nullable)#>onCompletion:^(NSArray * topics, NSError * error) {
                // on success, topics will return an array, error will return nil
                // on failure, error will return a value, topics will return nil 
            }];
         
      
      
パラメーターキーと値の種類は、以下のとおりです。すべてのキーと値に関する詳細情報については、APIドキュメントをご参照ください。
  1. categoryId - string:トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType - string:フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int:インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int:取得するトピックの件数です。
  5. includeCount - Boolean:取得したトピックの件数を表示するかどうかを指定するパラメーターです。
最も議論されたトピックの取得
以下のAPIを使用すると、最もコメントが多かったフォーラムのトピックを取得することができます。

Swift
      
         
            ZohoDeskPortalSDK.Community.getMostDiscussedTopics(<#[String:Any]?#>) { (topics, error) in
               // on success, topics will return an array, error will return nil
               // on failure, error will return a value, products will return nil 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDKCommunity getMostDisuccedTopics:<#(NSDictionary * _Nullable)#>onCompletion:^(NSArray * topics, NSError * error) {
                // on success, topics will return an array, error will return nil
                // on failure, error will return a value, topics will return nil 
            }];
         
      
      
パラメーターキーと値の種類は、以下のとおりです。すべてのキーと値に関する詳細情報については、APIドキュメントをご参照ください。
  1. categoryId - string:トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType - string:フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int:インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int:取得するトピックの件数です。
  5. includeCount - Boolean:取得したトピックの件数を表示するかどうかを指定するパラメーターです。

問い合わせタブのカスタマイズ

これらのメソッドを利用すると、ASAPアドオンの問い合わせ送信フォームを要件に合わせて設定することができます。
問い合わせの送信フォームの項目を非表示にする
ASAPアドオンの問い合わせの送信フォームには、Zoho Deskのポータルの問い合わせのレイアウトで設定した項目が表示されます。フォーム内の任意の項目を非表示にするには、「 setFieldsListTobeShown() 」メソッドを使用します。

Swift
      
         
            ZDPortalSubmitTicket.setFieldsListTobeShown(fields: <#[ZDVisibleTicketField]#>)
         
      
      
Objective-C
      
         
            [ZDPortalSubmitTicket setFieldsListTobeShownWithFields:<#(NSArray * _Nonnull)#>];
         
      
      
上記の ZDVisibleTicketField は、 departmentId (任意の文字列)と項目名の配列の2種類のプロパティが含まれるクラスです。項目の一覧(apiNames)を文字列としてこのメソッドで指定する必要があります。また、アドオンに関連付けられている部門に応じて、 departmentId キーを指定する必要があります。たとえば、特定の単一の部門にてアドオンが設定されている場合、 departmentId キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、 departmentId キーを指定して、問い合わせの送信フォームで部門と問い合わせの項目を関連付ける必要があります。このメソッドを追加した後、フォームにはこのメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、項目名をメソッド内に指定しない場合でも表示されますのでご注意ください。

問い合わせの送信フォームの必須項目を非表示にする
フォームの必須項目を非表示にする必要がある場合は、必須項目を事前入力にすることで、非表示にすることができます。事前入力にするには、「 preFillTicketFields() 」メソッドを使用します。
preFillTicketFields() 」メソッドは、自動作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力させたい場合に役立ちます。
このメソッドを使用するには、「 PreFillTicketField 」オブジェクトの一覧を指定する必要があります。また、アドオンに関連付けられている部門に応じて、「departmentId」キーを指定する必要があります。
Swift
      
         
            ZDPortalSubmitTicket.preFillTicketFields(forForms: <#[ZDCustomizedTicketForm]#>)
         
      
      
Objective-C
      
         
            [ZDPortalSubmitTicket preFillTicketFieldsForForms:<#[ZDCustomizedTicketForm]#>];
         
      
      
上記の ZDCustomizedTicketForm は、 departmentId (任意の文字列)とカスタマイズした問い合わせ項目の2種類のプロパティが含まれるクラスです。「 setFieldsListTobeShown() 」メソッドと同様に、特定の単一の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定して、部門と項目を関連付ける必要があります。
ZDCustomizedTicketField 」オブジェクトには、主に3種類のプロパティが含まれています:
  1. fieldApiName - string:問い合わせ項目の「apiName」です。それぞれの項目の「apiName」を取得するには、「 getTicketForm() 」メソッドを使用します。
  2. fieldValue - object:
    1. 複数選択項目の場合、選択可能な文字列の値をコンマ区切りで指定します。
    2. 選択リスト項目の場合、選択可能な文字列の値のいずれかを指定します。
    3. 日付項目の場合、文字列の値を「 MM/dd/yyyy 」形式で指定します。
    4. 日時項目の場合、文字列の値を「 MM-dd-yyyy hh:mm aa 」形式で指定します。
    5. 真偽値項目の場合、文字列の値(「true」または「false」)を指定します。
    6. 他の項目の場合、文字列の値を指定します。
    7. こちらで指定した値が、項目で設定されている文字数や小数点の上限内になるようにしてください。
  3. isEditable - Boolean:対象の項目が編集可能かどうかを指定するキーです。
メモ :詳細については、 こちら をご確認ください。
問い合わせの操作のカスタマイズ設定
ユーザーは問い合わせに対して、返信、コメント、完了など、さまざまな操作を行うことができます。
以下のメソッドでは、ユーザーがASAPアドオンの問い合わせの送信画面を通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。

Swift
      
         
            ZDPTicketConfiguration.isCommentAllowed = <#Bool#> 
            ZDPTicketConfiguration.isCommentDeleteAllowed = <#Bool#> 
            ZDPTicketConfiguration.isCommentEditAllowed = <#Bool#> 
            ZDPTicketConfiguration.isReplyAllowed = <#Bool#> 
            ZDPTicketConfiguration.isTicketUpdateAllowed = <#Bool#>
         
      
      
Objective-C
      
         
            ZDPTicketConfiguration.isCommentAllowed = YES; 
            ZDPTicketConfiguration.isCommentDeleteAllowed = YES; 
            ZDPTicketConfiguration.isCommentEditAllowed = YES; 
            ZDPTicketConfiguration.isReplyAllowed = YES; 
            ZDPTicketConfiguration.isTicketUpdateAllowed = YES;
         
      
      

その他

以下のメソッドを使用すると、ASAPアドオンにてさまざまな他の操作を行うことができます。
ユーザーの詳細データの更新
以下のAPIを使用すると、ポータルに追加されたユーザーの詳細データを更新することができます。

Swift
      
         
            import ZohoDeskPortalAPIKit 
            ... var body = [String : Any]() 
            body["displayName"] = "displayName" 
            body["mobile"] = "123456" 
            ZohoDeskPortalSDK.updateUserInformation(with: body) { (profile, error) in {
               // on success only profile will return a value, error will return nil
               // on failure only error will return a value, profile will return nil 
            }
         
      
      
Objective-C
      
         
            NSMutableDictionary * body = [NSMutableDictionary new]; 
            [body setObject:@"displayName" forKey:@"displayName"]; 
            [body setObject:@"123456" forKey:@"mobile"]; 
            [ZohoDeskPortalSDK updateUserInformationWith:body onCompletion:^(Profile * profile, NSError * error) {
               // on success only profile will return a value, error will return nil
               // on failure only error will return a value, profile will return nil 
            }];
         
      
      
パラメーター
Dictionary [String : Any] data: キーと値のペアです。キーには次の値が含まれます: twitter phone facebook name displayName mobile countryLocale timeZone

SDKのログ

ASAP SDKには、アドオンの利用中に発生したエラーを解決するオプションも用意されています。解決するには、SDKのログを活用します。初期設定では、SDKのログは有効になっています。エラーについてコンソールログを確認し、必要に応じた処理を行うことができます。不要な場合はログを無効にすることができます。
SDKのログを無効にするには、以下のコードを追加します。

Swift
      
         
            import ZohoDeskPortalAPIKit 
            ...
            ZohoDeskPortalSDK.disableLogs()
         
      
      
Objective-C
      
         
            @import ZohoDeskPortalAPIKit; 
            ...
            [ZohoDeskPortalKit disableLogs]
         
      
      

リリースノート

バージョン2.1.2
  1. ZohoPubSubSDKにおける、App Storeにビルドをアップロードする際の問題を修正しました。
バージョン2.1.1
  1. SDKが日本のデータセンターのユーザーに対応しました。
  2. ダッシュボード画面におけるチャットボタンの問題を修正しました。
バージョン2.1.0
  1. 案内チャット機能に対応しました。
バージョン2.0.14
  1. SDKのすべての旧バージョン(バージョン 2.0.14より前のバージョン )は、 2022年3月31日(木)で廃止されます。 最新のバージョン 2.0.14にアップグレードしてください。
バージョン2.0.2
  1. ナレッジベースのディープリンクに独自の件名を付けて、ナビゲーションバーに表示できるようになりました。
  2. iOS13以降のデバイス用の初期設定のモーダル自動表示スタイルを更新しました。
  3. チャットモードで特定された重要な問題を修正しました。
  4. 不具合を修正し、パフォーマンスを改善しました。
バージョン2.0.1
  1. コミュニティタブで特定された重要な問題を修正しました。
バージョン2.0
  • 複数言語のナレッジベースの設定に対応しました。
  • iOS 14に対応しました。
  • 問い合わせの追加タブにて、条件付きレイアウトと問い合わせテンプレートが利用できるようになりました。
  • 利用可能なすべてのAPIを含む別のフレームワークとして、APIプロバイダーを追加しました。操作画面をカスタマイズして、APIを組み込めるようになりました。
  • ダークモードに対応しました。
  • システムにて設定されているフォントサイズに適合させることで、SDKのテキストをより便利に利用できるようにしました。
  • iOS 11以降にて、件名をより大きく表示できるオプションを追加しました。
  • iOS 11以降にて、ナビゲーションバーに検索バーを埋め込みました。


SDKバージョン1.0

はじめに

iOS向けのASAP SDK(ソフトウェア開発キット)を活用すると、iOSアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります:
  • カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット)
  • ナレッジベース(ヘルプ記事へのアクセス)
  • ユーザーコミュニティ(アプリを通じた他の顧客とやりとり)
この機能を活用すれば、エンドユーザーはアプリを終了してWebサイトにアクセスし直したり、サポートを受けるためにメールを送信したりする必要はありません。ユーザーはアプリ内でヘルプ記事を検索することができます。顧客満足度の向上につなげることができます。
ASAP SDKは、iOS 9以降のバージョンに対応しています。

Zoho DeskでのSDKの設定

利用中のiOSアプリにASAPアドオンを追加する最初の手順として、Zoho Deskにアドオンを作成し、登録します。
以下の手順で、アドオンを作成できます:
  1. Zoho Deskで、 [設定] > [チャネル] > [ASAP] の順に移動します。
  2. 左側の 設定 メニューの ASAP にて、 モバイル の隣にある [+] ボタンをクリックします。 モバイルアドオンの作成 画面が表示されます。 



  3. [アドオンの詳細] で、以下の内容を設定します:
    • 名前: ASAPアドオンの名前です。この名前は参照用です。アプリの操作画面上には表示されません。
    • 有効 :ASAPアドオンを有効にする部門を選択します。
    • バンドルID: iOS の項目に、iOSアプリのバンドルIDを入力します。(対象のアプリの設定内にある 一般 タブでバンドルIDを確認できます。)
      メモ :チャット機能を有効にしたり、プッシュ通知を送信したりするには、バンドルIDが必須です。
    • チャット: 切り替えボタンを操作することで、チャット機能を有効または無効にできます。
      メモ :チャットの項目には、ポータルのチャットチャネルにて設定された内容が反映されます。そのため、設定を変更するには、Zoho Deskの設定画面で行う必要があります。
    • プッシュ通知: 切り替えボタンを操作することで、プッシュ通知を有効または無効にできます。詳細については、このドキュメントの「通知の有効化」セクションをご参照ください。
      メモ :通知を有効にするには、JWT方式でのユーザー認証が必須となります。匿名ユーザーに対して、問い合わせに関するプッシュ通知を送信することはできません。
    • 認証方法: このアドオンにおけるユーザーの認証方法を設定します。
      • 匿名: この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
      • JWT この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせのステータスを表示したり、問い合わせに返信/コメントしたり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
  4. [保存] をクリックします。
コード のセクションが新しく表示されます。このセクションには組織ID、アプリID、配置の種類(データセンター)といったアプリの詳細が表示されます。これらの詳細データは、アプリでASAP SDKの初期設定を行う際に必要です。


SDKとアプリとの連携

次の手順では、ASAP SDKとiOSアプリを連携します。
以下のいずれかの方法を利用して連携処理を行うことができます。
CocoaPodsを利用した自動連携
この方法では、外部ライブラリの管理が可能な依存関係管理ツールであるCocoaPodsを利用します。外部サービスのフレームワークやライブラリを、Xcodeのプロジェクトに追加することができます。CocoaPodsのインストール方法については、こちらのリンクをご参照ください。
CocoaPodsを利用してSDKとアプリを連携するにあたって、はじめにプロジェクトのPodfileを作成する必要があります。Podfileをまだ作成していない場合は、以下の手順で作成できます:
  1. ターミナルで、プロジェクトの最上位のフォルダーに移動します( xcodeproj ファイルが含まれるフォルダーです)。
  2. コマンド「 $ pod init 」を実行します。
  3. 次に、コマンド「 open -a Xcode Podfile 」を実行して、XcodeのPodfileを開きます。ファイルの内容が以下のように表示されます:
                
                   
                      # Uncomment this line to define a global platform for your project 
                      # platform :ios, '9.0' 
                      # Uncomment this line if you're using Swift 
                      # use_frameworks! 
                      target 'My Sample App' do 
                      end
                   
                
                
  4. Swiftを利用する場合は、「 use_frameworks! 」の行に何も入力しないでください。
次に、Zoho DeskのポータルのSDKをPodfileに追加し、プロジェクトにSDKをインストールします。以下の手順で実施できます: 
  1. 以下のコードをPodfileのdoブロックに追加します。
                
                   
                      target 'My Sample App' do
                      pod 'ZohoDeskPortalSDK', :git => '
                      
                         https://github.com/zoho/ZohoDeskPortalSDK.git
                      
                      ' 
                      end
                   
                
                
  2. Podfileを保存します。
  3. ターミナルで、コマンド「 $ pod install 」を実行します。
以上で、CocoaPodsを利用したSDKとアプリとの連携が完了しました。技術的に説明すると、CocoaPodsによって管理されている依存関係が、プロジェクトに含まれている状態です。そのため、次の手順では、 .xcodeproj ファイルではなく、 .xcworkspace ファイルからXcodeのプロジェクトを開く必要があります。 
CocoaPodsの利用方法については、 こちらをクリック してください。 
メモ  
アプリの開発にSwiftを使用する場合、利用中のXcodeのバージョンに応じてPodfileに以下のいずれかの行を追加する必要があります。
手動連携
CocoaPodsを利用せずにASAP SDKとアプリを連携する場合、手動で行うことができます。以下の手順で実施できます:
  1. ZohoDeskPortalSDKを こちらのリンク から、Mobilisten SDKを こちらのリンク からそれぞれダウンロードします。
  2. ダウンロードしたzipファイルを解凍します。次に、 ZohoDeskPortalSDK.framework Mobilisten.framework ファイルをXcodeのプロジェクトの Embedded Binaries セクションにドラッグ&ドロップします。
  3. アプリ内の対象となる Build Phases タブにて、新しい実行スクリプトフェーズを作成します。以下のコードを、表示された実行スクリプトのテキスト項目に貼り付けます。(このスクリプトは Build Phases タブの後部に表示されますのでご注意ください。) 
                
                   
                      bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/
                      
                         ZohoDeskPortalSDK.framework/strip-frameworks.sh
                      
                      "
                   
                
                
    このスクリプトは、App Storeに送信されたアプリ内のUniversal Binaryのアーカイブに関するバグの解決に役立ちます。アプリに設定されている VALID_ARCHS ビルドに、リリース時の設定である i386 x86_64 が含まれていないことを確認してください。 
メモ NSPhotoLibraryUsageDescription NSCameraUsageDescription NSBluetoothPeripheralUsageDescription キーを、アプリ内の info.plist ファイルに追加してください。 

アプリ内のSDKの初期設定

次に、アプリ内のASAP SDKの初期設定を行います。
この手順では、以下の3つのキーが必須です。
  • 組織ID(Org ID)
  • アプリID(App ID)
  • データセンター(Datacenter)
これらのキーの値は、Zoho DeskのASAPアドオンの設定画面にある コード セクションに表示されます。
アプリ内のSDKの初期設定を行うには、以下の手順を実施します。
  1. Zoho DeskポータルのSDKフレームワークを、プロジェクトの AppDelegate ファイル内にインポートします。
    Swift
                
                   
                      import ZohoDeskPortalSDK
                   
                
                
    Objective-C
                
                   
                      @import ZohoDeskPortalSDK;
                   
                
                
  2. 以下の初期化コードを、引数「 didFinishLaunchingWithOptions 」を持つアプリケーションのメソッド内に貼り付けます。
    Swift
                
                   
                      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)-> Bool {
                        let config = ZDPortalConfiguration()
                        config.enableHelpCenter = true
                        config.enableCreateTicket = true
                        config.enableMyTicket = true
                        config.enableCommunity = false
                        ZohoDeskPortalSDK.initializeSDK(<#ORGID#>, appId: <#APPID#>, dataCenter: <#dataCenterValue#>, configuration: <#config#>)
                        return true 
                      }
                   
                
                
    Objective-C
                
                   
                      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
                          ZDPortalConfiguration * config = [[ZDPortalConfiguration alloc]init];
                          config.enableHelpCenter = YES;
                          config.enableCommunity = YES;
                          config.enableCreateTicket = YES;
                          config.enableMyTicket = YES;
                          [ZohoDeskPortalSDK initializeSDK:<#ORGID#> appId:<#APPID#> dataCenter:<#dataCenterValue#> configuration:<#config#>];
                          return YES; 
                      }
                   
                
                
メモ
:配置の種類の応じたデータセンターの値は、以下のとおりです:
CN:ZDDataCenter.CN
EU:ZDDataCenter.EU
US:ZDDataCenter.US
IN:ZDDataCenter.IN

ヘルプ項目の表示

このセクションでは、SDKの操作画面にて各ヘルプ項目を表示する方法を説明します。これにより、初期設定、またはZoho Deskのポータルで行われた設定に基づいた各項目を表示することができます。初期設定の項目は、利用中のZoho Deskのプランによって異なります。
SDKダッシュボード
エンドユーザーは、SDKダッシュボードの画面を通じてヘルプセンターにアクセスすることができます。このダッシュボードにはボタンやアイコンが表示されます。このボタンやアイコンから、ナレッジベース、ユーザーコミュニティ、問い合わせ送信フォーム、問い合わせリスト(ログインしたユーザーから送信された問い合わせの一覧)、チャット(リアルタイムでカスタマーサポート担当者とやりとり)にアクセスすることができます。
メモ :初期設定では、SDKの操作画面にてチャット機能は無効になっています。利用するには、はじめにZoho Deskのポータルでチャット機能を有効にする必要があります。
以下のメソッドにより、SDKダッシュボードが表示されます。
Swift
      
         
            ZohoDeskPortalSDK.showHomePage(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showHomePageWithController:self];
         
      
      
self 」は、SDKダッシュボードを表示させるための「UIViewController」のインスタンスです。



アプリ内にSDKダッシュボードを表示せずに、それぞれのヘルプ項目にアクセスできるようにするオプションも用意されています。以下では、初期設定の各項目を表示する方法を説明します。
設定を上書きしたSDKダッシュボード
以下のメソッドにより、設定を上書きしたSDKダッシュボードが表示されます。
Swift
      
         
            let config = ZDPortalConfiguration()
            config.enableHelpCenter = true // disable/enable the Help center (Knowledge Base). 
            config.enableCommunity = false // disable/enable the Community. 
            config.enableCreateTicket = true // disable/enable the CreateTicket. 
            config.enableMyTicket = true // disable/enable My Tickets.
            ZohoDeskPortalSDK.showHomePage(controller: self, withConfiguration: config)
         
      
      
Objective-C
      
         
            ZDPortalConfiguration * 
            config = [[ZDPortalConfiguration alloc]init]; 
            config.enableHelpCenter = YES; // disable/enable the Help center (Knowledge Base). 
            config.enableCommunity = NO; // disable/enable the Community. 
            config.enableCreateTicket = YES; // disable/enable the CreateTicket. 
            config.enableMyTicket = YES; // disable/enable My Tickets.
            [ZohoDeskPortalSDK showHomePageWithController:self withConfiguration:config];
         
      
      
self 」は、SDKダッシュボードを表示させるための「UIViewController」のインスタンスです。
このコードは、コミュニティの項目が表示されないように設定されているダッシュボードの例です。
アプリ内にSDKダッシュボードを表示せずに、それぞれのヘルプ項目にアクセスできるようにするオプションも用意されています。以下では、初期設定の各項目を表示する方法を説明します。
チャット
エンドユーザーは、チャットを通じてリアルタイムでカスタマーサポート担当者とやりとりを行うことができます。
以下のメソッドにより、チャットの項目が表示されます。
Swift
      
         
            ZohoDeskPortalSDK.showLiveChat(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showLiveChatWithController:self];
         
      
      
self 」は、チャットを表示させるための「UIViewController」のインスタンスです。
ヘルプセンター(ナレッジベース)
エンドユーザーは、ヘルプセンターの項目からナレッジベース内のヘルプ記事にアクセスすることができます。
以下のメソッドにより、ヘルプセンター(ナレッジベース)が表示されます。
Swift
      
         
            ZohoDeskPortalSDK.showHelpCenter(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showHelpCenterWithController:self];
         
      
      
self 」は、ナレッジベースを表示させるための「UIViewController」のインスタンスです。
問い合わせの送信
エンドユーザーは、問い合わせの送信画面から質問や要望を問い合わせとして送信することができます。
以下のメソッドにより、問い合わせの送信画面が表示されます。
Swift
      
         
            ZohoDeskPortalSDK.addTicket(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK addTicketWithController:self];
         
      
      
self 」は、問い合わせの送信画面を表示させるための「UIViewController」のインスタンスです。
アプリに対して問い合わせの送信に関するイベントを記録させる場合 、以下のメソッドを使用します。このメソッドには、イベントのコールバック処理が含まれています。
Swift
      
         
            ZohoDeskPortalSDK.addTicket(controller: self, onCompletion: { (ticketDetail) in
              // The ticketDetail parameter contains the details of the ticket created.
              // Your program logic goes here.
            }) { (error) in
              // error creating Ticket 
            }
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK addTicketWithController:self onCompletion:^(TicketDetailJsonObject * ticket) {
               // The ticketDetail parameter contains the details of the ticket created.
               // Your program logic goes here.
            } onError:^(NSError * error) {
               // error creating Ticket 
            }];
         
      
      
self 」は、問い合わせの送信画面を表示させるための「UIViewController」のインスタンスです。
問い合わせの送信画面を通じて問い合わせが送信されると、コールバックオブジェクトによって、問い合わせに関する情報が送信されます。
メモ :認証済みユーザーによって問い合わせが送信されると、問い合わせのすべての詳細情報がアプリに送信されます。ゲストユーザーによって問い合わせが送信されると、問い合わせ番号のみが送信されます。
自分の問い合わせ
エンドユーザーは、自分の問い合わせ画面から自身が送信した問い合わせにアクセスしたり、問い合わせを確認、編集したりすることができます。
以下のメソッドにより、自分の問い合わせ画面が表示されます。
Swift
      
         
            ZohoDeskPortalSDK.ticketList(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK ticketListWithController:self];
         
      
      
self 」は、自分の問い合わせ画面を表示させるための「UIViewController」のインスタンスです。
ユーザーコミュニティ
エンドユーザーは、ユーザーコミュニティタブを通じて、フォーラム(掲示板)にアクセスしたり、他のユーザーとやりとりしたりすることができます。
以下のメソッドにより、ユーザーコミュニティが表示されます。
Swift
      
         
            ZohoDeskPortalSDK.showCommunity(controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showCommunityWithController:self];
         
      
      
self 」は、ユーザーコミュニティを表示させるための「UIViewController」のインスタンスです。

SDKでのユーザー認証

アプリのエンドユーザーが自身の送信した問い合わせにアクセスするには、IDが必要です。これにより、ユーザーはZoho Deskのポータルユーザーとして自身を認証することができます。Zoho Deskでは、この認証方式を取り入れるためにJSON Web Token(JWT)を利用しています。
Zoho Deskでは2種類の認証方法に対応しています。 匿名 JWT です。
  • 匿名: この方法では、エンドユーザーはゲストユーザーとみなされます。ゲストユーザーが行える操作は、問い合わせの送信、ユーザーコミュニティでの投稿内容の表示、サポート担当者とのチャット、に限定されます。自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることはできません。
  • JWT: この方法では、エンドユーザーは認証済みユーザーとみなされます。ゲストユーザーが行える操作に加えて、認証済みユーザーは、自分が送信した問い合わせを表示したり、ユーザーコミュニティに参加したりすることもできます。コミュニティでは、トピックのフォロー、トピックの追加、既存の投稿へのコメントの追加など、さまざまな操作を行うことができます。
ASAP SDKでのJWTによるユーザー認証の設定方法については、 こちらのドキュメント をご参照ください。
以下のコードにより、SDKでユーザーを認証することができます。
Swift
      
         
            if !ZohoDeskPortalSDK.isZDUserSignedIn{
              ZohoDeskPortalSDK.set(jwtUserIdentifier: <#Remote user Token#>, onCompletion: {
              }, onError: { (error) in
              }) 
            }else{
              //User already signed into SDK 
            }
         
      
      
Objective-C
      
         
            if (![ZohoDeskPortalSDK isZDUserSignedIn]){
              [ZohoDeskPortalSDK setWithJwtUserIdentifier:<#Remote user Token#> onComplition:^{
              } onError:^(NSError * error) {
              }]; 
            }else{
               //User already signed into SDK 
            }
         
      
      
ZohoDeskPortalSDK.isZDUserSignedIn 」は真偽値です。「true」の場合、ユーザーはログインしていることを表します。「false」の場合、ユーザーは匿名ユーザーであることを表します。
そのため、アドオンを以下のように設定する必要があります:
  • 真偽値が「true」を返す場合、ユーザーはアドオンの認証ユーザーとしてタスクを行うことができます。
  • 真偽値が「false」を返す場合、 ZohoDeskPortalSDK.set によってユーザーにログインするように促されます。
ユーザーが認証されていない場合、コールバック機能によってエラーメッセージが返されます。
ユーザーをSDKからログアウト
Swift
      
         
            ZohoDeskPortalSDK.logout()
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK logout];
         
      
      
このメソッドを呼び出した後、対象の認証済みユーザーは匿名ユーザーとして識別されます。

ローカルデータのクリア

認証済みユーザーがASAPアドオンからログアウトすると、デバイスに保存されているすべてのデータは自動的にクリアされます。
匿名ユーザーのローカルデータもクリアする必要がある場合は、以下のメソッドを使用します。
Swift
      
         
            ZohoDeskPortalSDK.clearAllLocalData()
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK clearAllLocalData];
         
      
      

ヘルプ項目の非表示

初期設定では、ASAP SDKにすべてのヘルプ項目を表示することができます。表示できる項目は、利用中のZoho DeskのプランやZoho Deskのポータルでの設定に基づきます。また、Zoho Deskでは、「 ZDPortalConfiguration 」を使用することで、アプリ内の各ヘルプ項目を非表示にすることもできます。
アプリ内で各ヘルプ項目を非表示にするには、以下のコードを使用します。
Swift
      
         
            let config = ZDPortalConfiguration() 
            config.enableHelpCenter = false // disable the Help center (Knowledge Base). 
            config.enableCommunity = false // disable the Community. 
            config.enableCreateTicket = false // disable the CreateTicket. 
            config.enableMyTicket = false // disable My Tickets. 
            config.showLeftMenu = true // enable/disable left Menu
         
      
      
Objective-C
      
         
            ZDPortalConfiguration * config = [[ZDPortalConfiguration alloc]init]; 
            config.enableHelpCenter = NO; // disable the Help center (Knowledge Base). 
            config.enableCommunity = NO; // disable the Community. 
            config.enableCreateTicket = NO; // disable the CreateTicket. 
            config.enableMyTicket = NO; // disable My Tickets. 
            config.showLeftMenu = YES; // enable/disable left Menu
         
      
      
メモ :「 ZohoDeskPortalSDK.initializeSDK 」関数に設定したオブジェクトを送信する必要があります。詳細については、このドキュメントの「 アプリ内のSDKの初期設定 」セクションをご参照ください。

アドオンの操作画面のカスタマイズ

ASAP SDKには、必要に応じてアドオンの操作画面をカスタマイズできるオプションが用意されています。
標準のテーマ
SDKの操作画面には、ホワイトとブラックの2種類の標準のテーマが用意されています。これらのテーマを適用するには、以下のメソッドを使用します。

ホワイトテーマを適用するメソッド(初期設定)
Swift
      
         
            ZDTheme.applyTheme(theme: .white)
         
      
      
Objective-C
      
         
            [ZDTheme applyThemeWithTheme:ZDThemeTypeWhite];
         
      
      
ブラックテーマを適用するメソッド
Swift
      
         
            ZDTheme.applyTheme(theme: .dark)
         
      
      
Objective-C
      
         
            [ZDTheme applyThemeWithTheme:ZDThemeTypeDark];
         
      
      
テーマのカスタマイズ
APIを使用すると、記事、問い合わせの送信、問い合わせの一覧、といったアドオンの各画面のテーマをカスタマイズすることができます。
たとえば、以下のメソッドを使用すると、ナレッジベース内の記事の画面のテーマをカスタマイズすることができます。
Swift
      
         
            let articleTheme = ZDThemeArticle.init() 
            articleTheme.tintColor = UIColor.white 
            articleTheme.primaryTextColor = UIColor.white 
            articleTheme.secondryTextColor = UIColor(red:0.12, green:0.13, blue:0.15, alpha:1.00) 
            articleTheme.primaryBackgroundColor = UIColor(red:0.12, green:0.13, blue:0.15, alpha:1.00) 
            articleTheme.secondryBackgroundColor = UIColor(red:0.12, green:0.13, blue:0.15, alpha:1.00) 
            articleTheme.cellSeporatorColor = UIColor(red:0.12, green:0.13, blue:0.15, alpha:1.00) 
            articleTheme.headerColor = UIColor(red:0.13, green:0.18, blue:0.15, alpha:1.00)
         
      
      
Objective-C
      
         
            ZDThemeArticle * articleTheme = [ZDThemeArticle init]; 
            articleTheme.tintColor = [UIColor whiteColor]; 
            articleTheme.primaryTextColor = [UIColor whiteColor]; 
            articleTheme.secondryTextColor = [UIColor colorWithRed:0.12 green:0.13 blue:0.15 alpha:1.00]; 
            articleTheme.primaryBackgroundColor = [UIColor colorWithRed:0.12 green:0.13 blue:0.15 alpha:1.00]; 
            articleTheme.secondryBackgroundColor = [UIColor colorWithRed:0.12 green:0.13 blue:0.15 alpha:1.00]; 
            articleTheme.cellSeporatorColor = [UIColor colorWithRed:0.12 green:0.13 blue:0.15 alpha:1.00]; 
            articleTheme.headerColor = [UIColor colorWithRed:0.12 green:0.13 blue:0.15 alpha:1.00];
         
      
      
メモ :同様に、記事の一覧画面や問い合わせの送信画面のテーマをカスタマイズすることもできます。テーマをカスタマイズすると、SDKのテーマが上書きされますのでご注意ください。
ナビゲーションバーとステータスバーのカスタマイズ
ASAPアドオンのナビゲーションバーやステータスバーをカスタマイズするには、以下のコードを使用します:
Swift
      
         
            ZDNavigationTheme.navigationBarColor = UIColor.blue 
            ZDNavigationTheme.titleColor = UIColor.white 
            ZDNavigationTheme.barButtonTextColor = UIColor.white 
            ZDNavigationTheme.translucent = false 
            ZDNavigationTheme.statusBarApperance = .lightContent 
            ZDNavigationTheme.backButtonStyle = ZDNavigationBackButtonStyle.icon
         
      
      
Objective-C
      
         
            [ZDNavigationTheme setNavigationBarColor:[UIColor blueColor]]; 
            [ZDNavigationTheme setTitleColor:[UIColor blueColor]]; 
            [ZDNavigationTheme setBarButtonTextColor:[UIColor blueColor]]; 
            [ZDNavigationTheme setTranslucent:NO]; 
            [ZDNavigationTheme setStatusBarApperance:UIStatusBarStyleLightContent]; 
            [ZDNavigationTheme setBackButtonStyle:ZDNavigationBackButtonStyleIcon];
         
      
      
カスタムフォントの活用
SDKの操作画面には、標準の各種フォントが用意されています。これとは別に、要件に応じてカスタマフォントを利用することもできます。
SDKの操作画面でカスタムフォントを表示できるようにするには、はじめに以下の手順を実施します:
  1. プロジェクトにフォントを追加します。
  2. アプリの「info.plist」ファイルを編集して、 アプリケーションキーが提供するフォント を追加します。
  3. このキーには、SDKの操作画面で使用するすべてのフォントの名前が表示されます。
プロジェクトにフォントを追加した後、指定したフォントでテキストを表示するようにSDKの操作画面をカスタマイズできます。
SDKの操作画面でカスタムフォントを表示するには、以下のメソッドをアプリのコードに追加します。
Swift
      
         
            let font = ZDCustomFont() 
            font.fontFamilyName = "ProximaNova" 
            font.regularFontName = "ProximaNova-reg" 
            font.lightFontName = "ProximaNova-light" 
            font.boldFontName = "ProximaNova-Bold" 
            font.mediumFontName = "ProximaNova-Bold"
         
      
      
Objective-C
      
         
            ZDCustomFont * font = [ZDCustomFont init]; 
            font.fontFamilyName = @"ProximaNova"; 
            font.regularFontName = @"ProximaNova-reg"; 
            font.lightFontName = @"ProximaNova-light"; 
            font.boldFontName = @"ProximaNova-Bold"; 
            font.mediumFontName = @"ProximaNova-Bold";
         
      
      
メモ :カスタムフォントを使用しない場合、初期設定ではシステムのフォントが表示されます。

言語設定の変更

ASAP SDKは、12種類の言語に対応しています。アプリを利用するエンドユーザーの地域に応じた言語を選択することができます。
ASAPアドオンの言語を設定するには、以下のコードを使用します。
Swift
      
         
            ZDPortalConfiguration.setSDKLanguage = "en"
         
      
      
Objective-C
      
         
            ZDPortalConfiguration.setSDKLanguage = @"en";
         
      
      
以下の表は、対応しているすべての言語の一覧です。
言語
ロケールコード
英語
en
ドイツ語
de
スペイン語
es
フランス語
fr
イタリア語
it
ロシア語
ru
中国語
zh
トルコ語
tr
オランダ語
nl
デンマーク語
da
ポルトガル語
pt
日本語
ja

操作画面上の文字列のカスタマイズ

ASAP SDKでは、アドオンのそれぞれの画面に表示されるテキストをカスタマイズすることができます。カスタマイズ可能なテキストには、ヘルプ項目の操作画面のラベル、エラーメッセージ、一般情報などが含まれます。テキストを変更するには、以下の手順を実施します:
  1. ASAPStrings.bundle 」という件名のバンドルを、アプリのXcodeのプロジェクトに作成します。このバンドルへのアクセスパスは、次のとおりです:Application-bundle/ASAPStrings.bundle.
  2. こちらのリンク から、SDKの操作画面に表示される初期設定の文字列が含まれる「lproj」ファイルをダウンロードします。
  3. ダウンロードした「lproj」ファイルを、「 ASAPStrings 」バンドルに追加します。
  4. 「lproj」ファイル内で「 ASAPLocalizable.strings 」ファイルを開き、必要に応じてテキストをカスタマイズします。
メモ :言語が複数ある場合は、それぞれに「lproj」ファイルが必要です。SDKで複数の言語を表示する場合、文字列をカスタマイズするには、手順2で対応する「lproj」ファイルを選択し、手順3、4を繰り返します。

以下の表は、初期設定の「ASAPLocalizable.strings」ファイル内のそれぞれのキーの一覧です。

キー
初期設定のテキスト
説明
DeskPortal.Dashboard.Heading
「Welcome」
ヘルプセンターのダッシュボードに表示されるテキストです
DeskPortal.Dashboard.helpcenter.title
「Knowledge Base」
ダッシュボード上に表示されるナレッジベースタブのアイコンのタイトルです
DeskPortal.Dashboard.helpcenter.description
「Browse our extensive repository of help articles」
ナレッジベースの説明文です
DeskPortal.Dashboard.community.title
「Community」
ダッシュボード上に表示されるユーザーコミュニティタブのアイコンのタイトルです
DeskPortal.Dashboard.community.description
「Find and share solutions with the user community」
ユーザーコミュニティの説明文です
DeskPortal.Dashboard.addticket.title
「Submit Ticket」
ダッシュボード上に表示される問い合わせの送信タブのアイコンのタイトルです
DeskPortal.Dashboard.addticket.description
「Seek help from our agents」
問い合わせの送信画面の説明文です
DeskPortal.Dashboard.myticket.title
「My Tickets」
ダッシュボード上に表示される自分の問い合わせのアイコンのタイトルです
DeskPortal.Dashboard.myticket.description
「View and manage tickets that you submitted」
自分の問い合わせ画面の説明文です
DeskPortal.Helpcenter.article.detail.relatedtitle
「Related Articles」
ナレッジベース内のヘルプ記事の下部に表示されるテキストです
DeskPortal.Helpcenter.article.detail.vote.description
「Was this article helpful?」
ユーザーのフィードバックを促すテキストです
DeskPortal.Helpcenter.feedback.title
「Feedback」
フィードバックフォームのタイトルです
DeskPortal.Helpcenter.feedback.description
「We're sorry the article wasn't helpful.」
ユーザーが記事に対して低い評価を行った際に表示されるテキストです
DeskPortal.Myticket.option.closeticket
「Close Ticket」
ユーザーが送信した問い合わせを自身で完了できるようにするためのオプションのテキストです
DeskPortal.Error.message.reload
「Retry」
問い合わせを送信できなかった際に表示されるエラーメッセージです
DeskPortal.Network.failed.error.message
「Check your internet connection」
接続が切断された際に表示されるエラーメッセージです
DeskPortal.Dashboard.livechat.title
「Live Chat」
ヘルプセンターのダッシュボード上に表示されるチャットタブのタイトルです
DeskPortal.Helpcenter.category.subheading
「Section」
ナレッジベース内の記事のカテゴリーが1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.categories.subheading
「Sections」
ナレッジベース内の記事のカテゴリーが複数登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.article.detail.title
「FAQs」
各記事の画面のタイトルです
DeskPortal.Addticket.title
「Add Ticket」
問い合わせの送信フォームのタイトルです
DeskPortal.Myticket.comment.option.title
「Comment Actions」
ユーザーが問い合わせにコメントを追加した際に表示されるオプションメニューのタイトルです
DeskPortal.Myticket.option.editcomment
「Edit Comment」
ユーザーがコメントした内容を自身で編集できるようにするためのオプションのテキストです
DeskPortal.Helpcenter.article.subheading
「Article」
記事のカテゴリーに記事が1件のみ登録されている場合に表示されるテキストです
DeskPortal.Helpcenter.articles.subheading
「Articles」
記事のカテゴリーに記事が複数登録されている場合に表示されるテキストです

通知の有効化

担当者がチャットを通じて返信した際にエンドユーザーに通知が送信されるように、ASAPアドオンを設定することができます。SDKで通知を有効にするために、.p12形式のAPNs(Apple Push Notification service)証明書が使用されています。
APNs証明書の.p12ファイルを作成するには、以下の手順を実施します。
  1. Appleの開発者ポータルでAPNs証明書を作成し、ダウンロードします。
  2. 証明書をダブルクリックします。ダブルクリックすると、自動的に証明書がキーチェーンアクセスアプリケーションにインポートされます。
  3. キーチェーンアクセス内の証明書を開きます。証明書に対応するキーが表示されます。
  4. 証明書とキーを選択して、右クリックします。コンテキストメニューが表示されます。
  5. エクスポートオプションをクリックします。ダイアログボックスが表示されます。
  6. ダイアログボックスの File Format のドロップダウンで .p12 が選択されていることを確認し、[ 保存 ]をクリックします。 
  7. ファイルにアクセスするためのパスワードを入力して、[ OK ]をクリックします。証明書が.p12ファイルとしてエクスポートされました。 
次に、Zoho DeskのASAP設定画面でプッシュ通知を有効にする必要があります。
手順は次のとおりです:
Zoho Deskのアドオンの設定画面で、作成した.p12ファイルと、ファイルにアクセスするためのパスワードをアップロードします。
次に、AppDelegate内の「 application:didRegisterForRemoteNotificationsWithDeviceToken: 」メソッド内にあるAPI「 enablePushNotification: 」を呼び出すように、アドオンを設定します。 
この設定を行うには、以下のメソッドをアプリのコードに追加します。
Swift
      
         
            func application(_ application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
              let token = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}).uppercased()
              ZohoDeskPortalSDK.enablePushNotification(deviceToken:token, mode: .production) 
            }
         
      
      
Objective-C
      
         
            - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
                NSString * token = [[[[deviceToken description]
                                                stringByReplacingOccurrencesOfString: @"<" withString: @""]
                                                stringByReplacingOccurrencesOfString: @">" withString: @""]
                                                stringByReplacingOccurrencesOfString: @" " withString: @""];
                [ZohoDeskPortalSDK enablePushNotificationWithDeviceToken:token isTestDevice:NO mode:APNSModeProduction]; 
            }
         
      
      
メモ
  • 開発モードで機能をテストして、通知が正しく送信されるかどうか検証することができます。開発モードに切り替えるには、上記のコードの「.production」を「.sandbox」に変更します。
  • エンドユーザーに対してアプリを公開する前に、必ず本番環境モードに切り替えてください。
次に、プッシュ通知が受信された際にAppDelegateの「 didReceiveRemoteNotification: 」が自動的に呼び出されるように、SDKを設定する必要があります。 
その後、SDKが受信した通知を処理して対象の操作を実行するように、SDKの「 processRemoteNotification 」メソッドが通知の詳細データとともに呼び出す必要があります。以下のメソッドを追加します。
Swift
      
         
            func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
              ZohoDeskPortalSDK.processRemoteNotification(userInfo: userInfo)  
            }
         
      
      
Objective-C
      
         
            - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
                [ZohoDeskPortalSDK processRemoteNotificationWithUserInfo:userInfo]; 
            }
         
      
      

担当者に対する匿名ユーザーの詳細データの表示

通常、匿名ユーザーからチャットを通じてサポート窓口に連絡が行われる際、担当者の画面にはユーザーの詳細データは表示されません。ただし、ASAPアドオンを設定することで、匿名ユーザーから連絡を受け取った際に詳細データを表示することができます。
設定するには、次のメソッドを追加します。
Swift
      
         
            ZDPortalConfiguration.setGuestUser(email: <#Guest_User_Email#>, displayName: <#Guest_User_DisplayName#>", phoneNumber: <#Guest_User_PhoneNumber#>")
         
      
      
Objective-C
      
         
            [ZDPortalConfiguration setGuestUserWithEmail:<#Guest_User_Email#> displayName:<#Guest_User_DisplayName#> phoneNumber:<#Guest_User_PhoneNumber#>];
         
      
      
また、ユーザーとのやりとりが引き続き必要な場合、担当者はチャットのやりとりを問い合わせに変換することができます。やりとりを行うには、メールアドレスが必須です。

プログラムによる問い合わせの追加

ASAPアドオンを通じて、エンドユーザーに対して手動での問い合わせの送信を許可できますが、アプリ内で特定のイベントが発生した際に自動的に問い合わせを記録するようにアプリを設定することもできます。
たとえば、衣料品ビジネスを経営しており、ユーザーがアプリにアクセスした際に「 レディース 」画面を読み込めなかった場合、この読み込みに失敗したデータが自動的に問い合わせとしてヘルプデスクに記録されるようにすることができます。ユーザーは、ヘルプセンターにアクセスして手動で問い合わせを送信する必要がありません。
この問い合わせの自動送信を有効にするには、以下のメソッドをアプリのコードに追加します。
Swift
      
         
            ZDProvoider.sharedInstance.getDepartments(onCompletion: { (departments) in
            // get departments list in departments variable 
            }) { (error) in
                // error in departments fetch 
            }
         
      
      
Objective-C
      
         
            [[ZDProvoider sharedInstance] getDepartmentsOnCompletion:^(NSArray<DepartmentJsonObject *> * departments) {
                // get departments list in departments variable 
            } onError:^(NSError * error) {
                // error in departments fetch 
            }];
         
      
      
メソッドを呼び出すにあたって、 EmailAddress Subject DepartmentID は必須パラメーターです。 
ポータルにて部門のIDを取得するには、以下のメソッドを追加します。
Swift
      
         
            ZDProvoider().getProductsFor(<#Department ID#>, from: <#T##Int#>, limit: <#T##Int#>, onCompletion: { (products) in
                // get products list in products variable 
            }) { (error) in
                // error in products fetch 
            }
         
      
      
Objective-C
      
         
            [ZDProvoider sharedInstance] getProductsFor:@"Department ID" from:<#(NSInteger)#> limit:<#(NSInteger)#> onCompletion:^(NSArray products) {
                // get products list in products variable 
            } onError:^(NSError * error) {
                // error in products fetch 
            }
         
      
      
部門で設定した商品に関する情報を取得するには、以下のメソッドを追加します。
Swift
      
         
            ZDProvoider.sharedInstance.getTicketForm(<#Department ID#>, onCompletion: { (ticketFilelds) in
               // get Ticket Form in ticketFilelds variable 
            }) { (error) in
               // error in TicketForm fetch 
            }
         
      
      
Objective-C
      
         
            [[ZDProvoider sharedInstance] getTicketForm:<#Department ID#> onCompletion:^(NSArray<TicketFieldsJsonObject *> * ticketFilelds) {
                // get Ticket Form in ticketFilelds variable 
            } onError:^(NSError * error) {
               // error in TicketForm fetch 
            }];
         
      
      
部門の問い合わせのレイアウトで項目に関する情報を取得するには、以下のメソッドを追加します。
Swift
      
         
            ZDProvoider.sharedInstance.uploadTicketAttachment(<#Your File path#>, onCompletion: { (attachement) in
                // get uploaded attachement object in attachement variable 
            }) { (error) in
                // error in Attachement upload 
            }
         
      
      
Objective-C
      
         
            [[ZDProvoider sharedInstance] uploadTicketAttachment:<#Your File path#> onCompletion:^(AttachmentJsonObject * attachement) {
                // get Ticket Form in ticketFilelds variable 
            } onError:^(NSError * error) {
               // error in Attachement upload 
            }];
         
      
      
問い合わせに添付されたファイルを含めるには、以下のメソッドを追加します。
Swift
      
         
            let ticketForm = ZDTicketForm() 
            ticketForm.emailID = <#User email ID#> 
            ticketForm.contactName = <#Contact Name#> 
            ticketForm.subject = <#Ticket Subject#> 
            ticketForm.departmentID = <#Ticket Department ID#> 
            ticketForm.descriptionText = <#Ticket Description Text#> 
            ZDProvoider.sharedInstance.createTicket(form: ticketForm, onCompletion: { (ticket) in
                // get created ticket object in ticketDetail variable 
            }) { (error) in
                // error in ticket submission 
            }
         
      
      
Objective-C
      
         
            ZDTicketForm * ticketForm = [ZDTicketForm init]; 
            [ticketForm setEmailID:<#User email ID#>]; 
            [ticketForm setContactName:<#Contact Name#>]; 
            [ticketForm setSubject:<#Ticket Subject#>]; 
            [ticketForm setDepartmentID:<#Ticket Department ID#>]; 
            [ticketForm setDescriptionText:<#Ticket Description Text#>]; 
            [[ZDProvoider sharedInstance] createTicketWithForm:ticketForm onCompletion:^(TicketDetailJsonObject * ticket) {
                // get created ticket object in ticketDetail variable 
            } onError:^(NSError * error) {
               // error in ticket submission 
            }]
         
      
      

ナレッジベース

これらのメソッドを使用すると、ナレッジベースや関連するコンテンツをASAPアドオンに表示することができます。
カテゴリーのディープリンク
以下のメソッドを使用すると、各カテゴリー内にナレッジベース、ヘルプ記事のカテゴリーやサブカテゴリーの一覧を表示することができます。
Swift
      
         
            ZohoDeskPortalSDK.showCatgoryByPermalink(forPermaLink:"permalink", controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showCatgoryByPermalinkForPermaLink:@"permalink" controller:self];
         
      
      
  1. 「self」は、「UIViewController」のインスタンスです。
  2. パーマリンクが対象のナレッジベースのカテゴリーのURLを指すようになります。


たとえば、上記の画像のURLでは、「/kb/」に続く部分は対象のカテゴリーのパーマリンクです。カテゴリー、またはサブカテゴリーのパスとして、この部分を指定することができます。
記事のディープリンク
以下のメソッドを使用すると、ASAPアドオン内に直接ヘルプ記事の内容を表示することができます。
Swift
      
         
            ZohoDeskPortalSDK.showHelpPage(forPermaLink: "permalink", controller: self)
         
      
      
Objective-C
      
         
            [ZohoDeskPortalSDK showHelpPageForPermaLink:@"permalink" controller:self];
         
      
      
  1. 「self」は、「UIViewController」のインスタンスです。
  2. パーマリンクが対象のヘルプ記事のURLを指すようになります。


たとえば、上記の画像のURLでは、「/articles/」に続く部分は対象の記事のパーマリンクです。

コミュニティ

これらのメソッドを使用すると、ユーザーコミュニティや関連するコンテンツをASAPアドオンに表示することができます。
コミュニティ操作のカスタマイズ設定
ユーザーはコミュニティタブでさまざまな操作を行うことができます。操作には、トピックの編集/削除、コメントの追加/編集/削除が含まれます。
以下のメソッドでは、ユーザーがASAPアドオンを通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
Swift
      
         
            ZDCommunityConfiguration.configure.isTopicDeleteAllowed = true 
            ZDCommunityConfiguration.configure.isTopicEditAllowed = true 
            ZDCommunityConfiguration.configure.isReplyDeleteAllowed = true 
            ZDCommunityConfiguration.configure.isReplyEditAllowed = true 
            ZDCommunityConfiguration.configure.isReplyAllowed = true
         
      
      
Objective-C
      
         
            [ZDCommunityConfiguration configure].isTopicDeleteAllowed = YES; 
            [ZDCommunityConfiguration configure].isTopicEditAllowed = YES; 
            [ZDCommunityConfiguration configure].isReplyDeleteAllowed = YES; 
            [ZDCommunityConfiguration configure].isReplyEditAllowed = YES; 
            [ZDCommunityConfiguration configure].isReplyAllowed = YES;
         
      
      
最も人気のあるトピックの取得
以下のAPIを使用すると、最も評価の高いフォーラムのトピックを取得することができます。
Swift
      
         
            ZDProvoider.sharedInstance.getZDMostPopularCommunityTopics(forCategory: "Your Category ID", filterType: "ALL", from: 1, limit: 10, includeCount: false, { (communityTopics) in
                // get most popular topic list in communityTopics callback 
            }) { (error) in
               // error 
            }
         
      
      
Objective-C
      
         
            [[ZDProvoider sharedInstance] getZDMostPopularCommunityTopicsForCategory:@"Your Catehory ID" filterType:@"ALL" from:1 limit:10 includeCount:NO :^(NSArray communityTopics) {
                // get most popular topic list in communityTopics callback 
            } onError:^(NSError * error) {
                // error 
            }];
         
      
      
パラメーター
  1. categoryId - string:トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType - string:フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int:インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int:取得するトピックの件数です。
  5. includeCount - Boolean:取得したトピックの件数を表示するかどうかを指定するパラメーターです。
最も議論されたトピックの取得
以下のAPIを使用すると、最もコメントが多かったフォーラムのトピックを取得することができます。
Swift
      
         
            ZDProvoider.sharedInstance.getZDMostDiscussedCommunityTopics(forCategory: "Your Category ID", filterType: "ALL", from: 1, limit: 10, includeCount: false, { (communityTopics) in
                // get most discussed topic list in communityTopics callback 
            }) { (error) in
                // error 
            }
         
      
      
Objective-C
      
         
            [[ZDProvoider sharedInstance] getZDMostDiscussedCommunityTopicsForCategory:@"Your Catehory ID" filterType:@"ALL" from:1 limit:10 includeCount:NO :^(NSArray communityTopics) {
                // get most discussed topic list in communityTopics callback 
            } onError:^(NSError * error) {
               // error 
            }];
         
      
      
パラメーター
  1. categoryId - string:トピックを取得するコミュニティのカテゴリーのIDです。すべてのカテゴリーを追加する場合、値に「-1」を指定します。
  2. filterType - string:フォーラムのトピックの種類です。指定可能な値は次のとおりです: QUESTION IDEA ANNOUNCEMENT PROBLEM DISCUSSION
  3. from - int:インデックス番号です。この番号からトピックのデータを取得します。値は「1」から開始できます。
  4. limit - int:取得するトピックの件数です。
  5. includeCount - Boolean:取得したトピックの件数を表示するかどうかを指定するパラメーターです。

問い合わせ

これらのメソッドを利用すると、ASAPアドオンの問い合わせ送信フォームを要件に合わせて設定することができます。
問い合わせの送信フォームの項目を非表示にする
ASAPアドオンの問い合わせの送信フォームには、Zoho Deskのポータルの問い合わせのレイアウトで設定した項目が表示されます。フォーム内の任意の項目を非表示にするには、「 setFieldsListTobeShown() 」メソッドを使用します。 
項目の一覧(apiNames)を文字列としてこのメソッドで指定する必要があります。また、アドオンに関連付けられている部門に応じて、 departmentId キーを指定する必要があります。たとえば、特定の単一の部門にてアドオンが設定されている場合、 departmentId キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、 departmentId キーを指定して、問い合わせの送信フォームで部門と問い合わせの項目を関連付ける必要があります。 
このメソッドを追加した後、フォームにはこのメソッドで指定した項目のみが表示されます。ただし、必須項目に関しては、項目名をメソッド内に指定しない場合でも表示されますのでご注意ください。
問い合わせの送信フォームの必須項目を非表示にする
フォームの必須項目を非表示にする必要がある場合は、必須項目を事前入力にすることで、非表示にすることができます。事前入力にするには、「 preFillTicketFields() 」メソッドを使用します。
preFillTicketFields() 」メソッドは、自動作成されたIDやデバイスのOSのバージョンといった値を項目に事前入力させたい場合に役立ちます。
このメソッドを使用するには、「 PreFillTicketField 」オブジェクトの一覧を指定する必要があります。また、アドオンに関連付けられている部門に応じて、「 departmentId 」キーを指定する必要があります。
setFieldsListTobeShown() 」メソッドと同様に、特定の単一の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定する必要はありません。複数の部門にてアドオンが設定されている場合、「 departmentId 」キーを指定して、部門と項目を関連付ける必要があります。 
PreFillTicketField 」オブジェクトには、主に3種類のプロパティが含まれています:
  1. fieldApiName - string:問い合わせ項目の「apiName」です。それぞれの項目の「apiName」を取得するには、「 getTicketForm() 」メソッドを使用します。
  2. fieldValue - object:
    • 複数選択項目の場合、選択可能な文字列の値をコンマ区切りで指定します。
    • 選択リスト項目の場合、選択可能な文字列の値のいずれかを指定します。
    • 日付項目の場合、文字列の値を「 MM/dd/yyyy 」形式で指定します。
    • 日時項目の場合、文字列の値を「 MM-dd-yyyy hh:mm aa 」形式で指定します。
    • 真偽値項目の場合、文字列の値(「true」または「false」)を指定します。
    • 他の項目の場合、文字列の値を指定します。
    • こちらで指定した値が、項目で設定されている文字数や小数点の上限内になるようにしてください。
  3. isEditable - Boolean:対象の項目が編集可能かどうかを指定するキーです。
メモ :詳細については、 こちら をご確認ください。
問い合わせの操作のカスタマイズ設定
ユーザーは問い合わせに対して、返信、コメント、完了など、さまざまな操作を行うことができます。
以下のメソッドでは、ユーザーがASAPアドオンの問い合わせの送信画面を通じてコミュニティにアクセスした際に許可する操作や許可しない操作を定義できます。
Swift
      
         
            ZDTicketConfiguration.configure.isCommentAllowed = true 
            ZDTicketConfiguration.configure.isCommentDeleteAllowed = true 
            ZDTicketConfiguration.configure.isCommentEditAllowed = true 
            ZDTicketConfiguration.configure.isReplyAllowed = true 
            ZDTicketConfiguration.configure.isTicketUpdateAllowed = true
         
      
      
Objective-C
      
         
            ZDTicketConfiguration.configure.isCommentAllowed = YES; 
            ZDTicketConfiguration.configure.isCommentDeleteAllowed = YES; 
            ZDTicketConfiguration.configure.isCommentEditAllowed = YES; 
            ZDTicketConfiguration.configure.isReplyAllowed = YES; 
            ZDTicketConfiguration.configure.isTicketUpdateAllowed = YES;
         
      
      

その他

以下のメソッドを使用すると、ASAPアドオンにてさまざまな他の操作を行うことができます。
ユーザーの詳細データの更新
以下のAPIを使用すると、ポータルに追加されたユーザーの詳細データを更新することができます。
Swift
      
         
            var body = [String : Any]() 
            body["displayName"] = "displayName" 
            body["mobile"] = "123456" 
            ZDProvoider.sharedInstance.UpdateUserInformation(userInfo: body, { (userInfo) in
            // get updated user information in userInfo variable 
            }) { (error) in
            // error 
            }
         
      
      
Objective-C
      
         
            NSMutableDictionary * body = [NSMutableDictionary new]; 
            [body setObject:@"displayName" forKey:@"displayName"]; 
            [body setObject:@"123456" forKey:@"mobile"]; 
            [[ZDProvoider sharedInstance] UpdateUserInformationWithUserInfo:body :^(NSDictionary * userInfo) {
            // get updated user information in userInfo variable 
            } onError:^(NSError * error) {
            // error 
            }];
         
      
      
パラメーター
Dictionary [String : Any] data:キーと値のペアです。キーには次の値が含まれます: twitter phone facebook name displayName mobile countryLocale timeZone  

SDKのログ

ASAP SDKには、アドオンの利用中に発生したエラーを解決するオプションも用意されています。解決するには、SDKのログを活用します。
SDKのログを有効にするには、以下のコードを追加します。
Swift
      
         
            ZDPortalConfiguration.enableLogMessages = true
         
      
      
Objective-C
      
         
            ZDPortalConfiguration.enableLogMessages = YES;
         
      
      
SDKのログを有効にした後、エラーについてコンソールログを確認し、必要に応じた処理を行うことができます。

リリースノート

バージョン1.1.5
  • イベントのコールバック機能を追加しました。これにより、チャットタブが機能を停止した際に検知することができます。
  • 起動時のチャット画面の読み込み時間に時間がかかる問題を解決しました。
  • ユーザーがカスタムテキストやラベルを表示する条件を追加しました。
  • 問い合わせの送信画面でのユーザーの操作を有効または無効にする条件を追加しました。詳細については、 こちらをクリック してください。
  • ファイルの添付に関する機能を改善しました。
バージョン1.1.4
  • ユーザーの詳細データを更新するAPIを追加しました。詳細については、 こちらをクリック してください。
バージョン1.1.3
  • ユーザーがアドオンにログインしようとする際にアプリが突然終了する問題を解決しました。
バージョン1.1.2
  • イベントのコールバック機能を追加しました。これにより、ZohoDeskPortalSDKのビューコントローラーが機能を停止した際に検知することができます。
    Swift
                   
                      
                         ZohoDeskPortalSDK.dismissController {(controller) in
                         // You can find dismissed from ZohoDeskPortalSDK using ZDViewController object
                         switch controller{ 
                         case .DashBoard:
                         print("DashBoard")
                         default:
                         break
                         } 
                         }
                      
                   
                   
    Objective-C
                   
                      
                         [ZohoDeskPortalSDK dismissControllerOnCompletion:^(enum ZDViewController controller) {
                         switch (controller) {
                         case ZDViewControllerDashBoard:
                         NSLog(@"DashBoard");
                         default:
                         break;
                         }
                         }];
                      
                   
                   
バージョン1.1.1
  • ログアウトメソッドにイベントのコールバック機能を追加しました。
    Swift
                   
                      
                         ZohoDeskPortalSDK.logout(onComplition: {
                         print("User sucessfully logged out")
                         }) { (error) in
                         print(error) 
                         }
                      
                   
                   
    Objective-C
                   
                      
                         [ZohoDeskPortalSDK logoutOnComplition:^{
                         // 
                         } onError:^(NSError * error) {
                         // 
                         }];
                      
                   
                   
バージョン1.1
  • コミュニティタブのサブフォーラムに「すべて」のオプションを追加しました。
  • ナレッジベースのカテゴリーに対してディープリンクを利用できるようになりました。
  • コミュニティタブでのユーザーの操作を有効または無効にする条件を追加しました。詳細については、 こちら をご確認ください。
バージョン1.0.1
  • 問い合わせの送信画面の項目でカスタマイズ設定を行えるメソッドを追加しました。詳細については、 こちらをクリック してください。
  • ポータルで登録されている部署が1件のみの場合に部署の項目が表示されない、といった問い合わせの送信フォームの機能を調整しました。
バージョン1.0
  • 問い合わせのコメントにてリッチテキスト(書式付きテキスト)でテキストの書式を設定できるようにしました。
  • ユーザーコミュニティのフォーラムのトピックにスレッド形式でコメントを追加できるようにしました。
  • フォーラムのトピックでのコメントに対して、操作を行えるようにしました。
  • ユーザーコミュニティに検索機能を追加しました。
  • コミュニティのカテゴリー、最も人気のあるトピック、最も議論されたトピックに関連するAPIを追加しました。
  • トピックIDが入力された際にトピックの詳細画面が表示されるようにするメソッドを追加しました。
  • コミュニティタブにディスカッションのトピックの種類を追加しました。
  • イベントのコールバック機能を追加しました。詳細については、以下のサンプルコードをご参照ください。
    Swift
                   
                      
                         ZohoDeskPortalSDK.ZDAnalyticsTracker { (analyticsObject) in
                            if analyticsObject?.getEventAction() == .KBArticleClicked{
                                print("An Article is clicked.")
                                //An Article is clicked.You can Log or Push this to any of the Analytics tools.
                            }else if analyticsObject?.getEventAction() == .CommunityTopicClicked{
                                print("A Topic is clicked.")
                                //A topic is clicked.You can Log or Push this to any of the Analytics tools.
                            } 
                         }
                      
                   
                   
    Objective-C
                   
                      
                         [ZohoDeskPortalSDK ZDAnalyticsTrackerOnCompletion:^(ZDAnalytics * analyticsObject) {
                             if ([analyticsObject getEventAction] == ZDPortalUIActionKBArticleClicked) {
                                NSLog(@"An Article is clicked.");
                                //An Article is clicked.You can Log or Push this to any of the Analytics tools.
                             }else if ([analyticsObject getEventAction] == ZDPortalUIActionCommunityTopicClicked) {
                                 NSLog(@"A Topic is clicked."); 
                                 //A topic is clicked.You can Log or Push this to any of the Analytics tools.
                             } 
                         }];
                      
                   
                   
  • コミュニティタブの検索機能に関連する問題を解決しました。(バージョン1.0からSDKを使用し始めた場合、この問題に対して操作を行う必要はありません。1.0以前のバージョンからSDKを使用しており、Zoho DeskのポータルでJWT認証を有効にしている場合は、1.0にアップグレードした後にユーザートークンを再生成する必要があります。エンドユーザーに対する影響はありません。)詳細については、以下のサンプルコードをご参照ください。
    Swift
                   
                      
                         if !ZohoDeskPortalSDK.isZDUserSignedIn || !ZohoDeskPortalSDK.isZDSDKMigratedTo1_0{ 
                            ZohoDeskPortalSDK.set(jwtUserIdentifier: <#Remote user Token#>, onComplition: { 
                            }, onError: { (error) in
                            })
                         }else{
                           //User already signed into SDK 
                         }
                      
                   
                   
    Objective-C
                   
                      
                         if (![ZohoDeskPortalSDK isZDUserSignedIn] || ![ZohoDeskPortalSDK isZDSDKMigratedTo1_0]){ 
                            [ZohoDeskPortalSDK setWithJwtUserIdentifier:<#Remote user Token#> onComplition:^{ 
                            } onError:^(NSError * error) { 
                            }]; 
                         }else{
                           //User already signed into SDK 
                         }
                      
                   
                   
バージョン0.2.7
  • コミュニティタブのカテゴリーに「 フォロー 」オプションを追加しました。
  • ナビゲーションバーの「戻る」ボタンにてカスタマイズ設定を利用できるようにしました
    Swift
                   
                      
                         ZDNavigationTheme.backButtonStyle = ZDNavigationBackButtonStyle.icon
                      
                   
                   
    Objective-C
                   
                      
                         [ZDNavigationTheme setBackButtonStyle:ZDNavigationBackButtonStyleIcon];
                      
                   
                   
バージョン0.2.6
  • インドのデータセンターのサポートを開始しました。インドのデータセンターにてASAPアドオンをホスティングするには、 SDKの初期設定 時にデータセンターのキーに「 ZDDataCenter.IN 」と指定してください。
  • 設定を上書きしたアドオンのダッシュボードを表示できる新しいメソッドを追加しました。詳細については、 こちらをクリック してください
バージョン0.2.5
  • 商品に関するAPIにパラメーター「 from 」、「 limit 」を追加しました。パラメーター「 from 」はリソースのインデックス番号を表します。パラメーター「 limit 」は返すデータの件数を表します。この2種類のパラメーターがAPIリクエストで指定されない場合、初期設定で最初の10件の商品が返されます。
  • 問い合わせの作成に関するAPIにて、問い合わせにファイルが添付されている場合に問い合わせが送信できない、といった問題を解決しました。
バージョン0.2.4
  • 以下の操作が行われた際にプッシュ通知を送信できるようにしました:
    • 担当者がユーザーの代わりに問い合わせを作成。
    • 担当者が新たに問い合わせに返信。
    • 問い合わせの優先度の変更。
    • 問い合わせのステータスの変更。
    • 問い合わせに新たにコメントを追加。
    • 問い合わせのコメントを編集。
  • 問い合わせの送信画面にコールバックメソッドを追加しました。このメソッドを使用すると、問い合わせの送信後に、問い合わせの詳細データが即座にアプリに送信されるように、ASAPアドオンを設定することができます。
バージョン0.2.3
  • ASAPのフレームワークがCore Dataにアクセスする際にアプリが突然終了する問題を解決しました。

バージョン1.xから2.0への移行

SDKとiOSアプリとの連携

Zoho Deskでは、2018年下半期にASAP機能を追加しました。これにより、ユーザーはアプリをより便利に利用できるようになりました。別のタブに移動する手間や、ヘルプ記事を検索する手間を省くことができます。ASAP SDKを使用すると、iOSアプリにウィジェットを埋め込むことができます。これにより、顧客はサポート記事をすばやく表示することができます。

ASAP SDKを追加してから本日まで、Zoho DeskではASAP SDKを改善し続けてきました。より便利に利用しやすくしました。そして2020年、Zoho DeskではASAP SDKを一新しました。iOS向けASAP SDKバージョン2.0が利用できるようになりました。

現在、以前のバージョンのiOS向けASAP SDKを利用している場合、バージョン2.0に対応するための移行処理があります。

以下の表は、移行処理をスムーズに行うための変更内容の一覧です。
バージョン1.x
バージョン2.0
pod 'ZohoDeskPortalSDK', :git => ' https://github.com/zoho/ZohoDeskPortalSDK.git 'end
pod 'ZohoDeskPortalServices'
「AppDelegate.swift」にて

import ZohoDeskPortalSDK
...
config.enableHelpCenter = true
config.enableCreateTicket = true
config.enableMyTicket = true
config.enableCommunity = false
ZohoDeskPortalSDK.initializeSDK(<#ORGID#>, appId: <#APPID#>, dataCenter: <#dataCenterValue#>, configuration: <#config#>)
import ZohoDeskPortalAPIKit
...
ZohoDeskPortalSDK.initialize(orgID:<#String#>, appID:<#String#>, dataCenter: <#ZDPDataCenter#>)

you can set configuration when showing dashboard.
ホーム画面を表示するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
....
ZohoDeskPortalSDK.showHomePage()
import ZohoDeskPortalCore
...
ZDPortalHome.show() // By default, all modules are enabled. To hide any module, pass the configuration object as shown here
ヘルプセンター(ナレッジベース)を表示するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
....
ZohoDeskPortalSDK.showHelpCenter(_:)
import ZohoDeskPortalKB
...
ZDPortalKB.show()
問い合わせの送信画面を表示するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
....
ZohoDeskPortalSDK.addTicket(_:)
import ZohoDeskPortalTicket
...
ZDPortalSubmitTicket.show()
自分の問い合わせの一覧を表示するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
....
ZohoDeskPortalSDK.ticketList(_:)
import ZohoDeskPortalTicket
...
ZDPortalTicket.show()
コミュニティタブを表示するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
....
ZohoDeskPortalSDK.showCommunity(_:)
import ZohoDeskPortalCommunity
...
ZDPortalCommunity.show()
SDKでユーザーを認証するメソッド
バージョン1.x
バージョン2.0
ZohoDeskPortalSDK.set(jwtUserIdentifier: _, onCompletion: _ -> (), onError: _ -> () )
ZohoDeskPortalSDK.loginUser(withJWTidentifier: <#String#>, onCompletion: (Bool) -> Void)
ユーザーの認証状態を確認するメソッド
バージョン1.x
バージョン2.0
ZohoDeskPortalSDK.isZDUserSignedIn
ZohoDeskPortalSDK.isUserLoggedIn
ユーザーをSDKからログアウトさせるには

ZohoDeskPortalSDK.logout()
ZohoDeskPortalSDK.logout(onCompletion: (Bool) -> Void)
//現時点ではカスタマイズは省略

ユーザーへのプッシュ通知の送信を有効にするメソッド
バージョン1.x
バージョン2.0
ZohoDeskPortalSDK.enablePushNotifications(deviceToken: _, mode: )
ZohoDeskPortalSDK.enablePushNotification(deviceToken:token, mode: .production)
SDKに通知を把握させるには、「AppDelegate.swift」にて

import ZohoDeskPortalSDK
...
ZohoDeskPortalSDK.processRemoteNotification(userInfo: userInfo)
import ZohoDeskPortalConfiguration
...
ZDPortalConfiguration.processRemoteNotification(userInfo: userInfo)
//チャット内でゲストを設定します

プログラミングを利用して問い合わせを追加する場合、この手順を行ってください。
ナレッジベースのカテゴリーに対してディープリンクを利用するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
...
ZohoDeskPortalSDK.showCatgoryByPermalink(forPermaLink:"permalink", controller: self)
import ZohoDeskPortalKB
...
ZDPortalKB.showCategory(withPermalink : <#String#>)
ナレッジベースの記事に対してディープリンクを利用するメソッド
バージョン1.x
バージョン2.0
import ZohoDeskPortalSDK
...
ZohoDeskPortalSDK.showHelpPage(forPermaLink: "permalink", controller: self)
import ZohoDeskPortalKB
...
ZDPortalKB.showArticle(withPermalink : <#String#>)
コミュニティタブをカスタマイズするメソッド
バージョン1.x
バージョン2.0
ZDCommunityConfiguration.configure.isTopicDeleteAllowed = true
ZDCommunityConfiguration.configure.isTopicEditAllowed = true
ZDCommunityConfiguration.configure.isReplyDeleteAllowed = true
ZDCommunityConfiguration.configure.isReplyEditAllowed = true
ZDCommunityConfiguration.configure.isReplyAllowed = true
ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#>
ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#>
ZDPCommunityConfiguration.isReplyAllowed = <#Bool#>
ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#>
ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>
最も人気のあるトピックの一覧を取得するメソッド
バージョン1.x
バージョン2.0
ZDProvoider.sharedInstance.getZDMostPopularCommunityTopics( with all parameters)
ZohoDeskPortalSDK.Community.getMostPopularTopics(<#[String: Any]?#>, onCompletion: <#Result<[ZDPCommuity.TopicDetail], ZDPError> -> Void#>
for the list of parameters which can be passed in, refer here
最も議論されたトピックの一覧を取得するメソッド
バージョン1.x
バージョン2.0
ZDProvoider.sharedInstance.getZDMostDiscussedCommunityTopics( with all parameters)
ZohoDeskPortalSDK.Community.getMostDiscussedTopics(<#[String: Any]?#>, onCompletion: <#Result<[ZDPCommuity.TopicDetail], ZDPError> -> Void#>
for the list of parameters which can be passed in, refer here
ticket configuration - same as community configuration - static changes pending

ユーザー情報を更新するメソッド
バージョン1.x
バージョン2.0
ZDProvoider.sharedInstance.UpdateUserInformation(userInfo: <#data#>, onCompletion: _ -> (), onError: _ -> ())
ZohoDeskPortalSDK.updateUserInformation(with: [String: String], onCompletion: (Result) -> Void)
SDKでログを有効にするメソッド
バージョン1.x
バージョン2.0
ZDPortalConfiguration.enableLogMessages = true
ZohoDeskPortalSDK.enableLogs()
SDKでログを無効にするメソッド
バージョン1.x
バージョン2.0
ZDPortalConfiguration.enableLogMessages = false
ZohoDeskPortalSDK.disableLogs()
メモ  
バージョン2.0以降 :
  • 表示メソッドでは、View Controllerは必要ありません。
  • すべての表示メソッドでは、件名とスタイルのパラメーターに初期値が設定してあります。必要に応じてパラメーターを上書きできます。


    Zoho CRM 管理者向けトレーニング

    「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。

    日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。

    Zoho CRM Training










                          • Related Articles

                          • React Native向けASAP SDKの操作

                            React Native向けのASAP SDK(ソフトウェア開発キット)を活用すると、モバイルアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、iOSやAndroidアプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります: カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット) ナレッジベース(ヘルプ記事へのアクセス) ...
                          • Android向けASAP SDKの操作

                            SDK バージョン2.0 はじめに Android向けのASAP SDK(ソフトウェア開発キット)を活用すると、Androidアプリのエンドユーザーが手軽に利用できるヘルプ機能を提供することができます。SDKを使用することで、アプリ内のアドオンを作成したり、カスタマイズしたりできます。また、エンドユーザーが以下の機能に簡単にアクセスできるようになります: カスタマーサポートチームへの問い合わせ(問い合わせの送信、サポート担当者とのチャット) ナレッジベース(ヘルプ記事へのアクセス) ...
                          • Web用のASAPアドオン

                            はじめに Webサイト用のASAPアドオンを使用すると、エンドカスタマー用のヘルプセンターにすぐにアクセスできます。このアドオンをWebサイトに連携すると、顧客は簡単に次にアクセスできます:  カスタマーサポートチーム(問い合わせをするため) ナレッジベース(ヘルプ記事にアクセスするため)  ユーザーコミュニティー(他の顧客とやりとりするため) Ziaボット(AI搭載のバーチャルアシスタント「Zia」を通じてすばやく回答を探し出すため) ...
                          • ASAPアドオンでの認証ユーザー用のJWT

                            はじめに エンドユーザーが、ASAPアドオンにサインインするかどうかによって、ゲストユーザーや認証済みユーザーに分類できます。サインインしなかったユーザーはゲストユーザー、サインインしたユーザーは認証済みユーザーと呼ばれます。ASAPアドオンでは、表示するコンポーネントとコンテンツを、ユーザーの種類別に設定できます。  ゲストユーザーは、ナレッジベースへのアクセス/問い合わせの送信/ユーザーコミュニティの投稿の閲覧/カスタマーサポート担当者とのチャットを行うことができます。   ...

                          Resources

                          Videos

                          Watch comprehensive videos on features and other important topics that will help you master Zoho CRM.



                          eBooks

                          Download free eBooks and access a range of topics to get deeper insight on successfully using Zoho CRM.



                          Webinars

                          Sign up for our webinars and learn the Zoho CRM basics, from customization to sales force automation and more.



                          CRM Tips

                          Make the most of Zoho CRM with these useful tips.