コンテンツの設定
コンテンツを設定しておくことで、地図やAR、その他画面で適切なコンテンツ表示が自動的に行われます。
コンテンツの設定では、事前に用意しておいたjsonファイルを読み込ませます。

本ページの内容は、サンプルプログラム[TutorialSample.zip]に含まれています。
jsonファイルから読み込む
1. jsonファイルを用意する
コンテンツは所定のjsonフォーマットで記述します。
作成したjsonファイルは、専用のクラスを使用してアプリで利用可能な形に読み込んで使います。
[jsonとは?]

まずは、サンプルプログラムTutorialSample内で既に用意されている contents.json を見てみましょう。 【jsonファイルのフォーマット】
所定のフォーマットに則ることで、コンテンツ情報を自分で追加/変更していくことができます。

・(*)となっている箇所は必須の項目。
・idは全てのコンテンツで重複が無いように指定する。
{
  "contents": [
    {
      "id": コンテンツID (*),
      "name": "コンテンツ名称" (*),
      "description": "コンテンツ説明文" (*),
      "detailurl": "コンテンツ詳細画面で表示するHTMLのファイル名",
      "images": { (*)
        "thumb": "地図やARに表示される画像のファイル名" (*),
        "picture": "コンテンツ詳細画面に表示される画像のファイル名" (*),
        "frame": "記念撮影画面に表示される画像のファイル名" (*)
      },
      "attrs": { (*)
        "address": "住所",
        "bizhours": "営業時間",
        "tel": "電話番号",
        "site": "サイトURL",
        "email": "メールアドレス",
        "other": "自由コメント欄"
      },
      "location": { (*)
        "lat": コンテンツの緯度, (*)
        "lon": コンテンツの経度 (*)
      }
    }
  ]
}
画像ファイルは、プロジェクト内の任意の場所に格納します。
サンプルプログラムTutorialSampleでは、次の場所に画像ファイルが格納されています。
[アプリのプロジェクトルート]/images/*
2. jsonファイルをプロジェクトに入れる
作成したjsonファイルは、プロジェクト内の任意の場所に格納します。
サンプルプログラムTutorialSampleでは、次の場所にcontents.jsonが格納されています。
[アプリのプロジェクトルート]/Contents/contents.json
3. jsonファイルを読み込む
jsonファイルのコンテンツ情報をNSData型で読み込み、コンテンツ設定の専用クラスであるPicnicContentManager.sharedManager.setContentsFromJSONメソッドにコンテンツ情報を読み込ませます。
// コンテンツを読み込み
let path = NSBundle.mainBundle().pathForResource("contents", ofType: "json")
let contentsJSONData = NSData(contentsOfFile: path!)
if contentsJSONData == nil {
    assertionFailure("contents.jsonが読み込めませんでした")
}

do {
    // SDKにコンテンツを設定する
    try PicnicContentManager.sharedManager.setContentsFromJSON(contentsJSONData!)

} catch PicnicContentManager.Error.IllegalState(let message) {
    // コンテンツの設定に失敗した場合は、エラーメッセージを表示する
    let alert = UIAlertController(title: "Error", message: message, preferredStyle: .Alert)
    let action = UIAlertAction(title: "OK", style: .Default, handler: nil)
    alert.addAction(action)
    presentViewController(alert, animated: true, completion: nil)
    return false

} catch {
    assertionFailure("想定外のエラー発生")
}
サンプルプログラムTutorialSampleでは、ViewController.swiftのinitializePicnicSDKメソッドに記載されています。
4. コンテンツ詳細画面でHTMLを表示する
コンテンツの詳細画面をHTMLで独自にデザインしたい場合、コンテンツ情報に「detailurl」を指定してください。
具体的には、次以降の手順を行ってください。
{
  "contents": [
    {
      "id": コンテンツID (*),
      "name": "コンテンツ名称" (*),
      "description": "コンテンツ説明文" (*),
      "detailurl": "コンテンツ詳細画面で表示するHTMLのファイル名", ←コレを指定する!
      "images": { (*)
        "thumb": "地図やARに表示される画像のファイル名" (*),
        "picture": "コンテンツ詳細画面に表示される画像のファイル名" (*),
        "frame": "記念撮影画面に表示される画像のファイル名" (*)
      },
      省略...
    }
  ]
}
HTMLファイルを格納するためのグループを作成します。
左のツリーの「TutorialSample > TutorialSample」で右クリックし、「New Group」を選択します。

グループが作れたら、「html」という名前にします。

入植したらEnterキーで確定します。

コンテンツ詳細画面で表示させたいHTMLファイルを、作成したグループ「html」にドラッグ&ドロップします。 以下の通り設定し、Finishボタンを押します。
  • Distination:Copy items if needed
  • Added folders:Create folder references
  • Add to targets:TutorealSampleのみチェックON
このようになれば成功です。

コンテンツ詳細画面でHTMLを表示させたいコンテンツに「detialurl」の項目を追加します。
※サンプルでは、2つ目のコンテンツにHTMLを設定しています。 実行して確認してみましょう。

HTMLを指定していないコンテンツは、以下のように表示されます。

HTMLを指定したコンテンツは、独自のHTMLに置き換わりました。