# 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
target 'My SampApp' do pod 'ZohoDeskPortalCore' end
target 'My Sample App' do pod 'ZohoDeskPortalServices' end
CocoaPodsのインストール前は、「xcodeproj」としてファイルが開きます。
import ZohoDeskPortalAPIKit
@import ZohoDeskPortalAPIKit;
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?)-> Bool { ZohoDeskPortalSDK.initialize(orgID:<#String#>, appID:<#String#>, dataCenter: <#ZDPDataCenter#>) return true }
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [ZohoDeskPortalSDK initializeWithOrgID:<#NSString#>appID:<#NSString#>dataCenter:< #ZDPDataCenter#>]; return YES; }
import ZohoDeskPortalCore ...ZDPortalHome.show()
@import ZohoDeskPortalCore; ...[ZDPortalHome showWithConfiguration:nil andTitle:nil];
let config = ZDPHomeConfiguration()
config.enableHelpCenter = true
config.enableCommunity = true
config.enableCreateTicket = true
config.enableMyTicket = true
config.enableAddTopic = true
config.showChat = true
config.showChatBot = true
ZDPortalHome.updateConfiguration(with: config)
ZDPortalHome.show()
ZDPHomeConfiguration * config = [[ZDPHomeConfiguration alloc]init];
config.enableHelpCenter = YES;
config.enableCommunity = YES;
config.enableCreateTicket = YES;
config.enableMyTicket = YES;
config.enableAddTopic = YES;
config.showChat = YES;
config.showChatBot = YES;
[ZDPortalHome updateConfigurationWith:config];
[ZDPortalHome showTitle:<#(NSString * _Nullable)#>];
import ZohoDeskPortalChat ...ZDPortalChat.show()
@import ZohoDeskPortalChat; ...[ZDPortalChat show];
import ZohoDeskPortalKB
@import ZohoDeskPortalKB;
ZDPortakKB.show()
[ZDPortalKB showWithTitle:<#NSString#>];
ZDPortalKB.showCategory(withPermalink: <#String#>)
[ZDPortalKB showCategoryWithPermalink:<#NSString#>withTitle:<#NSString#>];
ZDPortalKB.showArticle(withPermalink : <#String#>)
ZDPortalKB showArticleWithPermalink:<#NSString#>withTitle:<#NSString#>];
import ZohoDeskPortalTicket
@import ZohoDeskPortalTicket;
ZDPortalSubmitTicket.show()
[ZDPortalSubmitTicket showWithTitle:<#NSString#>];
ZDPortalSubmitTicket.showAddTicketForm(completion: { (ticket) in // 「ticket」のパラメーターには、作成した問い合わせの詳細情報が入ります// こちらに実行処理を記述します}, onError: { error in // 問い合わせの作成エラー })
[ZDPortalSubmitTicket showAddTicketFormWithTitle: <#(NSString * _Nullable)#> navigationMode:<#(enum ZDPNavigationMode)#> completion:^(ZDPTicket * ticket) { // 「ticket」のパラメーターには、作成した問い合わせの詳細情報が入ります// こちらに各自でコードによる処理を記載します} onError:^(NSError * error) { // 問い合わせの作成エラー }];
ZDPortalTicket.show()
[ZDPortalTicket showWithTitle:<#NSString#>];
import ZohoDeskPortalCommunity
@import ZohoDeskPortalCommunity;
ZDPortalCommunity.show()
[ZDPortalCommunity show];
ZDPortalCommunity.showTopic(withID: <#String#>)
[ZDPortalCommunity showTopicWithID:<#NSString#>];
import ZohoDeskPortalLiveChat
@import ZohoDeskPortalLiveChat;
ZDPortalLiveChat.show()
[ZDPortalLiveChat show];
import ZohoDeskPortalAPIKit
@import ZohoDeskPortalAPIKit;
if !ZohoDeskPortalSDK.isUserLoggedIn { ZohoDeskPortalSDK.login(withUserToken: String) { (isSuccess: Bool) in // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合はログに記録されます } }else { // ユーザーがすでにサインインしている場合 }
iif (!ZohoDeskPortalSDK.isUserLoggedIn) { [ZohoDeskPortalSDK loginWithUserToken: <#(NSString * _Nonnull)#> onCompletion:^(BOOL isSuccess) { // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます }]; }else { // ユーザーがすでにサインインしている場合 }
ZohoDeskPortalSDK.logout { (isSuccess: Bool ) in // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます }
[ZohoDeskPortalSDK logoutOnCompletion:^(BOOL isSuccess) { // 「isSuccess」ではサインインが成功したかどうかを表示します // エラーが発生した場合は記録されます }];
ZohoDeskPortalSDK.clearAllLocalData()
[ZohoDeskPortalSDK clearAllLocalData];
import ZohoDeskPortalConfiguration
@import ZohoDeskPortalConfiguration;
ZD ThemeManager.setTheme(type: .white)
[ZDPThemeManager setTheme:ZDPThemeTypeWhite];
ZDPThemeManager.setTheme(type: .dark)
[ZDPThemeManager setTheme:ZDPThemeTypeDark];
ZDPThemeManager.setTheme(type: .system)
[ZDPThemeManager setTheme:ZDPThemeTypeSystem];
ZDPThemeManager.updateLightTheme(theme: <#ZDPThemeProtocol#>)
[ZDPThemeManager updateLightThemeWithTheme:<#ZDPThemeProtocol#>];
ZDPThemeManager.updateDarkTheme(theme: <#ZDPThemeProtocol#>)
[ZDPThemeManager updateDarkThemeWithTheme:<#ZDPThemeProtocol#>];
ZDPortalConfiguration.customFontName = <#String#>
ZDPortalConfiguration.customFontName = <#NSString#>;
言語 | 言語コード |
英語(イギリス) | en-GB |
英語(アメリカ) | en |
ドイツ語 | de |
スペイン語 | es |
カタロニア語 | ca-ES |
フランス語 | fr |
フランス語(カナダ) | fr-CA |
イタリア語 | it |
ロシア語 | ru |
中国語(繁体字) | zh-Hant |
中国語(簡体字) | zh-Hans |
トルコ語 | tr |
オランダ語 | nl |
デンマーク語 | da |
ポルトガル語(ポルトガル) | pt-PT |
日本語 | ja |
スウェーデン語 | sv |
ポーランド語 | pl |
アラビア語 | ar |
ヘブライ語 | he |
アフリカーンス語 | af |
チェコ語 | cz |
ブルガリア語 | bg |
フィンランド語 | fi |
ギリシャ語 | el |
ハンガリー語 | hu |
インドネシア語 | id |
ノルウェー語(ブークモール) | nb |
ルーマニア語 | ro |
タイ語 | 位 |
ウクライナ語 | uk |
ベトナム語 | vi |
ウルドゥー語 | ur |
ヒンディー語 | hi |
テルグ語 | te |
カンナダ語 | kn |
タミル語 | ta |
マラーティー語 | mr |
韓国語 | ko |
ペルシャ語 | fa |
ベンガル語 | bn |
グジャラート語 | gu |
マレー語 | ms |
マラヤーラム語 | ml |
スロバキア語 | sk |
クロアチア語 | 時間 |
スロベニア語 | sl |
ZDPortalConfiguration.setSDKLanguage(<#String#>)
[ZDPortalConfiguration setSDKLanguage:<#NSString#>];
言語 | 言語コード |
英語 | en |
ドイツ語 | de |
スペイン語 | es |
フランス語 | fr |
イタリア語 | it |
ロシア語 | ru |
中国語(繁体字) | zh-Hant |
中国語(簡体字) | zh-Hans |
トルコ語 | tr |
オランダ語 | nl |
デンマーク語 | da |
ポルトガル語(ポルトガル) | pt-PT |
日本語 | ja |
キー | 初期設定のテキスト | 説明 |
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」 | ナレッジベースのカテゴリーに記事が複数登録されている場合に表示されるテキストです |
func application (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.reduce ("", {$0 + String(format: "%02X", $1)}).uppercased() ZohoDeskPortalSDK.enablePushNotification (deviceToken:token, mode: .production) }
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString * token = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""]; [ZohoDeskPortalSDK enablePushNotificationWithDeviceToken:token isTestDevice:NO mode:APNSModeProduction]; }
import ZohoDeskPortalConfiguration ... func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { ZDPortalConfiguration.processRemoteNotification(userInfo: userInfo) }
@import ZohoDeskPortalConfiguration; ... - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^) (UIBackgroundFetchResult))completionHandler { [ZDPortalConfiguration processRemoteNotificationWithUserInfo:userInfo]; }
import ZohoDeskPortalChat ...ZDPortalChat.setGuestUser(email:<#Guest_User_Email#>, displayName:<#Guest_User_DisplayName#>", phoneNumber: <#Guest_User_PhoneNumber#>")
@import ZohoDeskPortalChat; ... [ZDPortalChat setGuestUserWithEmail:<#Guest_User_Email#> displayName:<#Guest_User_DisplayName#> phoneNumber:<#Guest_User_PhoneNumber#>];
import ZohoDeskPortalAPIKit
@import ZohoDeskPortalAPIKit;
ZohoDeskPortalSDK.getDepartments(onCompletion: { (departments, error) in // 成功時は、「departments」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「departments」は空(nil)を戻します }
[ZohoDeskPortalSDK getDepartmentsOnCompletion:^ (NSArray * departments, NSError * error) { // 成功時は、「departments」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「departments」は空(nil)を戻します }];
ZohoDeskPortalSDK.getProducts(inDepartmentID: String, [String: Any]?){ (products, error) in // 成功時は、「products」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「products」は空(nil)を戻します }
[ZohoDeskPortalSDK getProductsInDepartmentID:<#NSString#> params:<#NSDictionary#>onCompletion:^ (NSArray * products, NSError * error) { // 成功時は、「products」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「products」は空(nil)を戻します }];
ZohoDeskPortalSDK.Ticket.getFields([String: Any]?){ (fields, error) in // 成功時は、「fields」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「fields」は空(nil)を戻します }
[ZohoDeskPortalSDKTicket getFields: <#(NSDictionary * _Nullable)#>onCompletion:^ (NSArray * fields, NSError * error) { // 成功時は、「fields」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「fields」は空(nil)を戻します }];
ZohoDeskPortalSDK.Ticket.addAttachment(with:<#Data#>, andName:<#String#>, using: <#ZDPUploaderDelegate?#>) { (attachment, error) in // 成功時は、「attachment」によって値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「attachment」は空(nil)を戻します }
[ZohoDeskPortalSDKTicket addAttachmentWith: <#NSData#>andName:<#NSString#>using: <#(id _Nullable)#>onCompletion:^ (ZDPortalAttachment * attachment, NSError * error) { // 成功時は、「attachment」によって値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「attachment」は空(nil)を戻します }];
if ZohoDeskPortalSDK.isUserLoggedIn { ZohoDeskPortalSDK.Ticket.add(withFields:<#T##[String : Any]#>) { (ticket, error) in // 成功時は、「ticket」によってオブジェクトが出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します } } else { ZohoDeskPortalSDK.Ticket.addAsGuest (withFields: <#T##[String : Any]#>) { (ticketNumber, error) in // 成功時は、「ticketNumber」によって文字列の値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します } }
if (ZohoDeskPortalSDK.isUserLoggedIn) { [ZohoDeskPortalSDKTicket addWithFields:<#(NSDictionary * _Nonnull) #>onCompletion:^(ZDPTicket * ticket, NSError * error) { // 成功時は、「ticket」によってオブジェクトが出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します }]; }else { [ZohoDeskPortalSDKTicket addAsGuestWithFields: <#(NSDictionary * _Nonnull) #>onCompletion:^(NSString * ticketNumber, NSError * error) { // 成功時は、「ticketNumber」によって文字列の値が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「ticket」は空(nil)を戻します }] }
ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#> ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#> ZDPCommunityConfiguration.isReplyAllowed = <#Bool#> ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#> ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>
ZDPCommunityConfiguration.isTopicEditAllowed = <#Bool#>; ZDPCommunityConfiguration.isTopicDeleteAllowed = <#Bool#>; ZDPCommunityConfiguration.isReplyAllowed = <#Bool#>; ZDPCommunityConfiguration.iReplyEditAllowed = <#Bool#>; ZDPCommunityConfiguration.isReplyDeleteAllowed = <#Bool#>;
ZohoDeskPortalSDK.Community.getMostPopularTopics(<#[String:Any]?#>) { (result: Result<[ZDPCommunity.TopicDetail], ZDPError>) in // 成功時にのみトピックの配列を取得 }
[ZohoDeskPortalSDKCommunity getMostPopularTopics: <#(NSDictionary * _Nullable) #>onCompletion:^(NSArray * topics, NSError * error) { // 成功時は、「topics」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します }];
ZohoDeskPortalSDK.Community.getMostDiscussedTopics (<#[String:Any]?#>) { (topics, error) in // 成功時は、「topics」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します }
[ZohoDeskPortalSDKCommunity getMostDisuccedTopics: <#(NSDictionary * _Nullable) #>onCompletion:^(NSArray * topics, NSError * error) { 成功時は、「topics」によって配列が出力され、「error」は空(nil)を戻します // 失敗時は、「error」によって値が出力され、「topics」は空(nil)を戻します }];
ZDPortalSubmitTicket.setFieldsListTobeShown (fields: <#[ZDVisibleTicketField]#>)
[ZDPortalSubmitTicket setFieldsListTobeShownWithFields: <#(NSArray * _Nonnull)#>];
ZDPortalSubmitTicket.preFillTicketFields(forForms: <#[ZDCustomizedTicketForm]#>)
[ZDPortalSubmitTicket preFillTicketFieldsForForms:<#[ZDCustomizedTicketForm]#>];
ZDPTicketConfiguration.isCommentAllowed = <#Bool#> ZDPTicketConfiguration.isCommentDeleteAllowed = <#Bool#> ZDPTicketConfiguration.isCommentEditAllowed = <#Bool#> ZDPTicketConfiguration.isReplyAllowed = <#Bool#> ZDPTicketConfiguration.isTicketUpdateAllowed = <#Bool#>
ZDPTicketConfiguration.isCommentAllowed = YES; ZDPTicketConfiguration.isCommentDeleteAllowed = YES; ZDPTicketConfiguration.isCommentEditAllowed = YES; ZDPTicketConfiguration.isReplyAllowed = YES; ZDPTicketConfiguration.isTicketUpdateAllowed = YES;
import ZohoDeskPortalAPIKit ... var body = [String : Any]() body["displayName"] = "displayName" body["mobile"] = "123456" ZohoDeskPortalSDK.updateUserInformation(with: body) { (profile, error) in { 成功時は、「profile」のみが値を出力し、「error」は空(nil)を戻します // 失敗時は、「error」のみが値を出力し、「profile」は空(nil)を戻します }
NSMutableDictionary * body = [NSMutableDictionary new]; [body setObject:@"displayName" forKey:@"displayName"]; [body setObject:@"123456" forKey:@"mobile"]; [ZohoDeskPortalSDK updateUserInformationWith:body onCompletion: ^(Profile * profile, NSError * error) { // 成功時は、「profile」のみが値を出力し、「error」は空(nil)を戻します // 失敗時は、「error」のみが値を出力し、「profile」は空(nil)を戻します }];
import ZohoDeskPortalAPIKit ...ZohoDeskPortalSDK.disableLogs()
@import ZohoDeskPortalAPIKit; ...[ZohoDeskPortalKit disableLogs]
以下の表は、移行処理をスムーズに行うための変更内容の一覧です。
バージョン2.x | v3.0 |
let config = ZDPHomeConfiguration() config.enableHelpCenter = true config.enableCommunity = false config.enableCreateTicket = true config.enableMyTicket = true ZDPortalHome.show(withConfiguration: config) |
config.enableHelpCenter = true config.enableCommunity = true config.enableCreateTicket = true config.enableMyTicket = true config.enableAddTopic = true config.showChat = true config.showChatBot = true ZDPortalHome.updateConfiguration(with: config) ZDPortalHome.show()
// ホーム画面の設定に関する個別のメソッドが追加されました
|
テーマ設定に使用するAPIの変更
バージョン2.x | v3.0 |
import ZDThemeKit | import ZohoDeskPortalConfiguration |
ZDThemeManager.updateTheme(theme: <#ZDThemeProtocol#>) | ZDPThemeManager.updateLightTheme(theme: <#ZDPThemeProtocol#>) |
「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。
日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。