当サイトを最適な状態で閲覧していただくにはブラウザのJavaScriptを有効にしてご利用下さい。
JavaScriptを無効のままご覧いただいた場合には一部機能がご利用頂けない場合や正しい情報を取得できない場合がございます。
承知しました
本サイトではWebサイトのエクスペリエンスを向上させるために、Cookieを使用しています。Cookieはブラウザの設定から無効にできます。本サイトで使用するCookieについては、プライバシーポリシーをご確認ください。

Blog

ブログ

開発者向け

Kentico Cloud iOSSDKの紹介

By Martin Makarsky  

AppleのiOSは、世界で2番目に人気のあるモバイルオペレーティングシステムであり、iOSユーザーがAndroidユーザーと比較してデバイスにはるかに多くを費やしていることは周知の事実です。 Appleのエコシステムデバイスにネイティブアプリを実装するという難しいプロセスを容易にするために、Swiftで記述されたKentico CloudSDKを作成しました。

Appleのデバイスの開発

Appleの開発スタックに精通していない人のために、Swiftと呼ばれる比較的新しいプログラミング言語があります。 Swiftは2014年に導入され、1年後にオープンソースになり、現在、最も急速に成長しているプログラミング言語の1つです。

Swiftは、複雑な対応するObjective-Cに取って代わり、C#、Java、JavaScriptなどの最新言語との類似性のおかげで、採用がはるかに簡単になっています。 AppleはXcodeと呼ばれる無料の統合開発環境を提供しているので、数分以内にプログラミングを開始できます。

Kentico Cloudのコンテンツを使用してiOSアプリを作成することは常に可能でしたが、すべてのネットワーク通信、クエリの作成、JSON応答の解析、モデルのマッピングなどを自分で処理する必要がありました。

しかし、ここでKentico Cloud Swift SDKを紹介します。このブログ投稿では、iOSアプリ(およびwatchOS、OS X、tvOS)にコンテンツを配信するためにKentico Cloud SwiftSDKを利用する方法を紹介します。

Kentico Cloud SwiftSDKの機能

Kentico Cloud Swift SDKは、コンテンツの取得、連絡先の追加、アクティビティの追跡に役立ちます。次のプロジェクトで使用できる機能はいくつかあります。

  • コンテンツアイテムの取得
  • コンテンツタイプの取得
  • 分類法の取得
  • 追跡活動
  • 連絡先の追加

そして、最高のものは?ネットワークやオブジェクトマッピングなどの難しい作業をすべて行う必要はありません。これはすべてSDK自体によって行われます。 SDKをプロジェクトに統合する方法を示し、いくつかの基本的な使用法を見てみましょう。

プロジェクトへのSDKの追加

最も簡単な方法は、 Cocoapodsを介してパッケージをインストールすることです。 Cocoapodsは、Swift(およびObjective-C)の依存関係マネージャーです。これは、Javascriptの世界の.NETのNuGetまたはnpmに対応するものの一種です。ポッドファイルにポッドを追加するだけです:

 target 'MyApp' do pod 'KenticoCloud', '~> 0.2'end


そして、 podinstallを実行します。このコマンドは、プロジェクトに必要なすべての依存関係を持つKenticoCloudSDKを追加します。

タイプオブジェクトの作成

強く型付けされたオブジェクトへの独自の応答のマッピングは、サードパーティのサービスと統合する上で最大かつ最も退屈な部分の1つです。ただし、ほとんどの作業はSDK自体によって行われるため、強く型付けされたオブジェクトに何を格納するかを定義する必要があります。

たとえば、Kentico Cloudから記事を取得するとします。記事には、タイトル(Text要素)、アセット(Asset要素)、およびpostDate (Date&Time要素)があります。ここには2つのオプションがあります。

  • 組み込みの要素タイプによって提供される強く型付けされたマッピングを使用する
import ObjectMapperimport KenticoCloudclass Article: Mappable { var title: TextElement? var asset: AssetElement? var postDate: DateTimeElement? required init?(map: Map){ let mapper = MapElement.init(map: map) title = mapper.map(elementName: 'title', elementType: TextElement.self) asset = mapper.map(elementName: 'teaser_image', elementType: AssetElement.self) postDate = mapper.map(elementName: 'post_date', elementType: DateTimeElement.self) } func mapping(map: Map) { }}


  • カスタムマッピングの使用
import ObjectMapperpublic class Article: Mappable { public var title: String? public var assetUrl: String? public var postDate: String? public required init?(map: Map){ } public func mapping(map: Map) { title <- map['elements.title.value'] assetUrl <- map['elements.teaser_image.value.0.url'] postDate <- map['elements.post_date.value'] }}


:マッピングの両方の方法は、 ObjectMapperフレームワークを利用します。高度なマッピングが必要な場合は、ドキュメントを参照してください。

アイテムの入手と使用

アイテムを取得するには、プロジェクトIDを使用してDeliveryClientのインスタンスを作成し、getItem / getItemsメソッドにクエリを渡す必要があります。クエリを作成するには、次の2つのオプションがあります。

  • 強く型付けされたオブジェクトクエリを使用できます。
let typeQueryParameter = QueryParameter.init(parameterKey: QueryParameterKey.type, parameterValue: 'article')let languageQueryParameter = QueryParameter.init(parameterKey: QueryParameterKey.language, parameterValue: 'es-ES')let query= [typeQueryParameter, languageQueryParameter]


  • より高度なクエリの場合は、独自にクエリを作成できます。クエリを作成するプロセスは、Kentico CloudDeliveryのドキュメントと同じです。
 let customQuery = 'items?system.type=article&order=elements.post_date[desc]'


最後のステップは、クラウドからアイテムを取得してアプリで使用することです。要求されたアイテムは、 完了ハンドラーに返されます。 Completionハンドラーは、受信したアイテムを含む単純なコールバックです。

 client.getItems(modelType: Article.self, queryParameters: query) { (isSuccess, itemsResponse, error) in if isSuccess { if let articles = itemsResponse?.items { // use your articles here } } else { if let error = error { print(error) } }}

単一アイテム、分類法、およびコンテンツタイプ

同様の方法で、単一のアイテム、複数のコンテンツタイプ、さらには分類法を取得できます。これらのオブジェクトを取得するためのその他の例は、GitHubのreadmeにあります

モジュラーコンテンツの取得

アイテムにリンクされたモジュラーコンテンツが含まれている場合は、deliveryResponseオブジェクトから直接このコンテンツを取得できます。サーバーリクエストをさらに行う必要はありません。特定のタイプのコードネームを持つモジュラーコンテンツを取得できます。

 let client = DeliveryClient.init(projectId: 'YOUR_PROJECT_ID')client.getItem(modelType: Article.self, itemName: 'on_roasts', completionHandler: { (isSuccess, itemResponse, error) in if isSuccess { let relatedArticle = itemResponse?.getModularContent(codename: 'on_roasts', type: Article.self) }}

デバッグ

アプリの開発中に、奇妙な動作が発生する場合があります。これを減らすために、DeliveryClientオブジェクトにデバッグフラグを渡すことができ、リクエストに関する追加のメッセージが出力に提供されます。オプションのenableDebugLoggingフラグを追加できます。

 let deliveryClient = DeliveryClient.init(projectId: 'YOUR_PROJECT_ID', enableDebugLogging = true)

連絡先の追加とアクティビティの追跡

従来のWeb分析ツールとは異なり、Kentico Cloudは個々の訪問者を追跡し、彼らの活動の全体像を構築します。このSDKを使用すると、iOSデバイスでもユーザーを追跡できます。セッションを開始してカスタムアクティビティを追跡するか、連絡先を追加するだけです。

 let client = TrackingClient.init(projectId: 'YOUR_PROJECT_ID')client.startSession()client.trackActivity(activityName: 'madrid')client.addContact(email: 'martinkoklingacik@local.com')

ここからどこへ行くか

SDKの機能と使用法の詳細については、公開されているGitHubリポジトリをご覧ください。機能が不足している場合は、ディスカッションフォーラムでお知らせいただくか、新しいGitHubの問題を作成してください。また、すべての機能を見つけることができるAPIリファレンスドキュメントもあります。

Kentico Cloud Swift SDK
CocoaPods: CocoaPodバージョン
プラットフォーム: プラットフォーム
ビルド: ビルド

長引く質問はありますか?以下のフォーラムで回答してください。

Headless CMSの導入をお考えでしょうか?

クラウドとマルチデバイスに最適化されたKentico Kontentをお試しください