These are the geteduroam and getgovroam apps for iPhone, iPad and Mac. Their purposes are to help people configure their devices for use with the eduroam and govroam networks. The eduroam and govroam networks allows them use the network at their organization of education or government or when visiting other participating organizations.
This is the code for version 2.0 and newer.
Device | Requirement |
---|---|
iPhone and iPad | iOS 15.0 or newer |
Mac | macOS 12.0 or newer |
Q: How to update the included discovery fallback files? A: Run these commands:
curl --silent --compressed 'https://discovery.eduroam.app/v3/discovery.json' > geteduroam/discovery.json
curl --silent --compressed 'https://getgovroam.nl/v3/discovery.json' > getgovroam/discovery.json
care prepare Config/appconfig.yaml geteduroam/appconfig.json
care prepare Config/appconfig.yaml getgovroam/appconfig.json
See license.
Open geteduroam.xcodeproj in a current version of Xcode (at least 14.3) and select the app target and the run destination.
The app is designed using The Composable Architecture (TCA) with SwiftUI. It uses modules to implement its various features. The app itself only contains a minimal amount of code as well as some theming.
The modules are all defined in the GeteduroamPackage package.
Minimal wrapper around the AppAuth library for authenticating with organizations that require OAuth for authentication.
Sometimes features in SwiftUI aren't available on all supported os versions. This module contains fallbacks so we can use them anyway.
Stores the responses from the discovery client to disk and helps to ensure there is always a list of organizations to show.
The detail screen with profile selection, helpdesk info and (re)connect functionality. Also collects credentials and agreements to terms of use as needed.
Retrieves the list of organizations from the backend.
Configures the network on iOS and iPadOS.
The main screen with the search functionality.
Models used throughout the app.
Schedules reminders for when network configurations expire.
To facilitate creating screenshots for the App Store, use these steps:
- In MainView.swift: comment out sending the
searchQueryChangeDebounced
action - In Screenshots.swift: verify
screenshotsFolder
goes to an existing folder - Select the
geteduroam/getgovroam Screenshots
target - Select the desired destination
- Use Product > Test (cmd-U)
If the tests hang, try running the app on that particular simulator first. Check that the simulator is in the desired orientation: portrait for this app.
Refer to the Screenshot specifications to pick the desired destinations.
Currently we use:
- iPhone 15 Pro Max
- iPhone 8 Plus
- iPad Pro (12.9-inch) (6th generation)
- iPad Pro (12.9-inch) (2nd generation)
- Mac with 1280 x 800 pixels
Currently we don't use:
- iPhone 15: generates screenshots with size 1178 x 2556, but App Store wants 1179 x 2556
In Xcode use Product > Export Localizations > geteduroam… and pick a location to store the output. This creates a folder with a package for each currently supported language with the extension xcloc. This package can be opened by Xcode to edit the translations. Alternatively, in the Finder control click on the xcloc package and use Show Package Contents to find amongst others an xliff file, which is an industry standard for localizing apps.
Important
In the xliff file you must replace all occurrences of state="new"
with state="translated"
or Xcode won't actually import them.
Note, temporarily add the AppStore.xcstrings files to their targets so that they get included in the xcloc package. They shouldn't ship with the app though. These are just to collect the translations for the App Store.
In Xcode use these steps:
- Select the project geteduroam
- Select the Info tab
- Find the Localizations section
- Add the language with the + button
- Use the menu Product > Export Localizations > geteduroam… and pick a location to store the output