Eine der Pflichten, die man als Softwareentwickler hat, ist die Angabe der Lizenzen von Drittanbieter und Open-Source Software. Einerseits, damit sich der Nutzer darüber informieren kann, welche Drittanbieter Software verwendet wird, andererseits ist es auch eine Form des Respekts und der Anerkennung.
Bevor man die entsprechende Open-Source Software einbinden kann, sollte man die zugehörige Softwarelizenz überprüfen. Meist ist gewünscht, dass der Hersteller erwähnt wird. Nun stellt sich einem iOS-Softwareentwickler die Frage:

Wie und Wo sollen die Softwarelizenzen erwähnt werden?

Ein guter Platz hierfür ist in den iOS-Systemeinstellungen zu der jeweiligen App.

Screenshot aus den iOS Einstellungen
Screenshot aus den iOS Einstellungen
Screenshot aus den iOS Einstellungen der Excel App
Screenshot aus den iOS Einstellungen der Excel App

Das Ganze soll nun automatisiert erstellt und geupdated werden. Dadurch bleiben die Angaben zu den Softwarelizenzen immer auf dem aktuellsten Stand. Eine gute und einfache Lösung, um die Lizenzen zu generieren ist mittels der Open-Source Lösung: https://github.com/mono0926/LicensePlist mithilfe dieser Lösung werden die Einträge zu den Lizenzen generiert. Fügt man dies, wie folgt in ein Run Script ein, so ist dieser Prozess automatisiert.

if [ $CONFIGURATION = "Debug" ]; then
/usr/local/bin/license-plist --output-path $PRODUCT_NAME/Settings.bundle
fi

Angabe der Versionsnummer in den Einstellungen

Häufig wird zu den Lizenzen noch die Versionsnummer in den iOS-Einstellungen zu der App angegeben, siehe Screenshots. Hierzu kann man folgendes Standard-Pattern für die Root.plist in dem Settings.bundle verwenden.

<?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>StringsTable</key>
	<string>Root</string>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>FooterText</key>
            <string>Copyright © 2020 8devs GmbH. All rights reserved.</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>Licenses</string>
            <key>File</key>
            <string>com.mono0926.LicensePlist</string>
        </dict>
        <dict>
            <key>DefaultValue</key>
            <string>DummyVersion</string>
            <key>Key</key>
            <string>version_preference</string>
            <key>Title</key>
            <string>Version</string>
            <key>Type</key>
            <string>PSTitleValueSpecifier</string>
        </dict>
    </array>
</dict>
</plist>

Natürlich möchte man auch, dass hier die Versionsnummer automatisch geupdated wird. Dadurch muss man nicht immer daran denken, an verschiedenen Stellen den gleichen Arbeitsschritt (Aktualisieren der Versionsnummer) durchzuführen. Daher empfiehlt sich das oben beschriebene Run-Script wie folgt zu erweitern:

version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$PROJECT_DIR/$INFOPLIST_FILE")
build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PROJECT_DIR/$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $version ($build)"

Fazit

Mit diesen einfachen Schritten kann man der Pflicht zur Angabe von Drittanbietersoftware einfach und automatisch nachkommen. Wichtig ist es nicht nur, die Angabe durchzuführen, sondern dies zu automatisieren, damit diese immer auf dem aktuellen Stand ist.