Help us understand the problem. What is going on with this article?

iPhoneの設定アプリにライブラリのライセンスを表示するようにする

More than 3 years have passed since last update.

前書き

使用したライブラリのライセンスをどこかに記述しなければならないけど、アプリのコンテンツ内部には入れたくない、などなんらかの理由でiPhoneの設定アプリに謝辞を表示するときの方法を書きます。

シミュレータにデフォルトで入ってるNewsアプリを例に完成図を提示すると以下のようになります。

スクリーンショット 2015-12-27 18.18.06.png
スクリーンショット 2015-12-27 18.20.55.png
スクリーンショット 2015-12-27 18.15.19.png

ちなみにですが、探してみるとCocoaPodsで管理しているライブラリのライセンス情報を自動で書き出す方法を紹介している記事が見つかりますが、

  • CocoaPods以外の方法でライブラリ管理をしている
  • ライセンス表記が必要ではないライブラリを導入している(自動書き出しでどうなるのかはやったことないのでわからないですが)

などの場合は手動で設定を行う必要があります。
案外その手動でやる方法の情報が少なかったので紹介します。

手順

Settings.bundleの追加

New Fileを選択します。
スクリーンショット 2015-12-18 14.14.11.png

iOS -> Resource -> Settings Bundleを選択してNextをクリックします。
スクリーンショット 2015-12-18 14.14.37.png

Settings.bundleの追加が成功するとこんなかんじになります。
スクリーンショット 2015-12-18 14.15.28.png

Root.plistを見ると以下の通り。
スクリーンショット 2015-12-20 14.09.36.png

この時点で実行するとこんなかんじの表示がされると思います。
スクリーンショット 2015-12-18 14.51.51.png

先ほどのRoot.plistのItemとこの画面で表示されている値が連動していることがわかります。

ライセンス表示ページファイルを作成する

おそらく一番楽な方法は、FinderでSettings.bundleを右クリックしてパッケージの内容を表示をクリック、Root.plistを複製してもう一つ.plistファイルを作る、だと思います。

スクリーンショット 2015-12-27 17.15.28.png

今回はAcknowledgements.plistという名前で作っています。

ライセンス表示ページへ遷移できるようにする

Root.plistをコードで編集します。
Root.plistを右クリック -> Open As -> Source codeをクリックします。

スクリーンショット 2015-12-27 17.23.32.png

Root.plistを以下のように編集します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PreferenceSpecifiers</key>
        <array>
            <dict>
                <key>Title</key>
                <string>謝辞</string>
                <key>Type</key>
                <string>PSChildPaneSpecifier</string>
                <key>File</key>
                <string>Acknowledgements</string>
            </dict>
        </array>
        <key>StringsTable</key>
        <string>Root</string>
    </dict>
</plist>

ここでPSChildPaneSpecifierと言うTypeを指定していますが、これを指定することによって新しいページへのリンクを作ることができます。
Fileのところには先ほど作成した.plistの名前を挿入します。

この状態でプロジェクトを実行すると以下のようになります。

スクリーンショット 2015-12-27 17.29.33.png
スクリーンショット 2015-12-27 17.29.38.png

謝辞ページの内容を編集する

ダミーの情報を表示してみます。
Acknowledgements.plistを以下のように編集します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PreferenceSpecifiers</key>
        <array>
            <dict>
                <key>Type</key>
                <string>PSGroupSpecifier</string>
                <key>Title</key>
                <string>dummy</string>
                <key>FooterText</key>
                <string>
                    dummy
                </string>
            </dict>
        </array>
    </dict>
</plist>

これで完成です。
実行してみます。

スクリーンショット 2015-12-27 18.10.31.png

ダミーデータを表示することができました。

余談

  • 端末で謝辞ページを表示
  • 再度Run

のようにやっていると、

スクリーンショット 2015-12-27 18.26.57.png

こんなかんじで記述ミスったんじゃないかと疑いたくなる表示がされることがあります。
そんな時は

  • 設定アプリのHome画面?(設定アプリを開いて最初に表示される画面)まで一度戻り、再度自分のアプリ名のセルをタップ
  • 設定アプリのプロセスを切る
  • 別の端末やってみる

などを試してみてください。
記述が間違っていなければおそらく変更が反映されます。

参考

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html#//apple_ref/doc/uid/10000059i-CH6-SW4

akatsuki174
iOS→Androidエンジニアになりました。それなりに使える言語はSwift, Objective-C, Kotlin, Java。 UX, データ分析, グロースハック, デザイン, 自然言語処理にも興味あり。 1分野に固まらず、いろんな分野のことについて書いていこうと思います。
techtrain
プロのエンジニアを目指すU30(30歳以下)の方に現役エンジニアにメンタリングもらえるコミュニティです。
https://techbowl.co.jp/techtrain/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away