前書き
使用したライブラリのライセンスをどこかに記述しなければならないけど、アプリのコンテンツ内部には入れたくない、などなんらかの理由でiPhoneの設定アプリに謝辞を表示するときの方法を書きます。
シミュレータにデフォルトで入ってるNewsアプリを例に完成図を提示すると以下のようになります。
ちなみにですが、探してみるとCocoaPodsで管理しているライブラリのライセンス情報を自動で書き出す方法を紹介している記事が見つかりますが、
- CocoaPods以外の方法でライブラリ管理をしている
- ライセンス表記が必要ではないライブラリを導入している(自動書き出しでどうなるのかはやったことないのでわからないですが)
などの場合は手動で設定を行う必要があります。
案外その手動でやる方法の情報が少なかったので紹介します。
手順
Settings.bundleの追加
iOS -> Resource -> Settings Bundleを選択してNextをクリックします。
Settings.bundleの追加が成功するとこんなかんじになります。
先ほどのRoot.plistのItemとこの画面で表示されている値が連動していることがわかります。
ライセンス表示ページファイルを作成する
おそらく一番楽な方法は、FinderでSettings.bundleを右クリックしてパッケージの内容を表示をクリック、Root.plistを複製してもう一つ.plistファイルを作る、だと思います。
今回はAcknowledgements.plistという名前で作っています。
ライセンス表示ページへ遷移できるようにする
Root.plistをコードで編集します。
Root.plistを右クリック -> Open As -> Source codeをクリックします。
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の名前を挿入します。
この状態でプロジェクトを実行すると以下のようになります。
謝辞ページの内容を編集する
ダミーの情報を表示してみます。
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>
これで完成です。
実行してみます。
ダミーデータを表示することができました。
余談
- 端末で謝辞ページを表示
- 再度Run
のようにやっていると、
こんなかんじで記述ミスったんじゃないかと疑いたくなる表示がされることがあります。
そんな時は
- 設定アプリのHome画面?(設定アプリを開いて最初に表示される画面)まで一度戻り、再度自分のアプリ名のセルをタップ
- 設定アプリのプロセスを切る
- 別の端末やってみる
などを試してみてください。
記述が間違っていなければおそらく変更が反映されます。
参考