Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
48
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

前書き

使用したライブラリのライセンスをどこかに記述しなければならないけど、アプリのコンテンツ内部には入れたくない、などなんらかの理由で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画面?(設定アプリを開いて最初に表示される画面)まで一度戻り、再度自分のアプリ名のセルをタップ
  • 設定アプリのプロセスを切る
  • 別の端末やってみる

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

参考

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
48
Help us understand the problem. What are the problem?