Cocoapodsでサードパーティライブラリを利用する場合、ライセンス情報の表示が必須の場合があります。
その際のライセンス情報の自動取得と表示方法をご紹介します。
また、アプリ内に表示する方法も最後に説明します。
Settings.bundleを追加
プロジェクトフォルダ直下にSettings.Bundleを追加します。
名前はそのままでCreate
Root.plistを編集
追加されたSettings.bundle直下にあるRoot.plistを下記コードに丸ごと置き換えてください。
(FooterTextは適宜変更してください)
<?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>About</string>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>FooterText</key>
<string>Copyright © 2020 XXXXXXXXXXXXXXXXXXX All Rights Reserved.</string>
</dict>
<dict>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>DefaultValue</key>
<string>1.0.0</string>
<key>Title</key>
<string>Version</string>
<key>Key</key>
<string>sbVersion</string>
</dict>
<dict>
<key>Type</key>
<string>PSChildPaneSpecifier</string>
<key>Title</key>
<string>Acknowledgements</string>
<key>File</key>
<string>Acknowledgements</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
Acknowledgements.plistを追加
ライセンス情報用のplistファイルを追加します。
名前はAcknowledgements.plistにしてCreate
Acknowledgements.plistをSettings.bundle直下に移動します。
Podfileを編集
Podfileに下記コードを追加します。
(「●●●●●●●●」の箇所はプロジェクト名に置き換えてください)
post_install do | installer |
require 'fileutils'
FileUtils.cp_r('Pods/Target Support Files/Pods-●●●●●●●●/Pods-●●●●●●●●-acknowledgements.plist', '●●●●●●●●/Settings.bundle/Acknowledgements.plist', :remove_destination => true)
end
Podファイルは以下のようになります。
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
post_install do | installer |
require 'fileutils'
FileUtils.cp_r('Pods/Target Support Files/Pods-Sample/Pods-Sample-acknowledgements.plist', 'Sample/Settings.bundle/Acknowledgements.plist', :remove_destination => true)
end
target 'Sample' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Sample
end
ターミナルでpod installを行うと、Acknowledgements.plistが更新されて以下のようになります。
結果
設定アプリから対象のアプリを選択すると以下のようにバージョン情報とライセンス情報(Acknowledgements)の項目が追加されています。
Acknowledgementsをタップするとライセンス情報の詳細画面が開きます。
アプリ内にライセンス情報を表示する場合
設定アプリではなく、アプリ内に直接ライセンス情報を表示したい場合は下記コードでライセンス文字列を成形した状態で取得することができます。
/// Acknowledgements.plistからライセンステキストを成形して返す
///
/// - Returns: ライセンステキスト
func getAcknowledgementsText() -> String {
let acknowledgementsPlistPath = "./Settings.bundle/Acknowledgements.plist"
var acknowledgementsTextData: [String] = []
let filePath = Bundle.main.path(forResource: acknowledgementsPlistPath, ofType: nil)
if let infoList = NSMutableDictionary(contentsOfFile: filePath!) {
if let acknowledgementsDataList = infoList.value(forKeyPath: "PreferenceSpecifiers") as? [[String: String]] {
for acknowledgementsData in acknowledgementsDataList {
if let titleData = acknowledgementsData["Title"] {
acknowledgementsTextData.append(String(describing: titleData))
}
if let footerData = acknowledgementsData["FooterText"] {
acknowledgementsTextData.append(String(describing: footerData))
}
}
}
}
var acknowledgementsText: String = ""
for text in acknowledgementsTextData {
acknowledgementsText.append(text)
acknowledgementsText.append("\n\n")
}
return acknowledgementsText
}