- AirCasting
- Conventions
- SwiftLint
- [Distributing builds](#Distributing builds)
- Feature Flags
For potential bugs or severe code quality issues:
- Place warnings in places that can potentially cause a bug (or bugs), and are too big to resolve ad hoc.
- When placing a warning, add a comprehensive explanation of the issue in the comment. Also link the ticket from
3)in this comment. - Add a ticket to github issues section with correct tag:
- A "warning" tag for every warning related issue
- An "AirBeam needed" tag for issues that require an AirBeam to resolve/reproduce
For less severe stuff like minor code quality issues
- When the problem is not causing bug-level issues, but is too big to resolve ad hoc, add a
// FIXME:marking in code and explain it really well, so that someone with more time that stumbles across this will be able to fully understand and refactor/fix. Also link the ticket from2)in this comment. - Add a ticket to github issues section with correct tag:
- A "code quality" tag for quality issues
- An "AirBeam needed" tag for issues that require an AirBeam to resolve/reproduce
We use swiftlint to preserve clean code.
Please, install it first using Homebrew: brew install swiftlint
Once your Apple ID is added to the project:
- Create, download and install (by clicking the downloaded file) into your keychain two types of certificates:
- Apple Development
- Apple Distribution
- Create, download and install (by clicking the downloaded file) two types of profiles:
- AD Hoc Distribution (connect the aforementioned Apple distribution certificate by selecting it from the list)
- App Store distribution
- In XCode project navigator select AirCasting > Signing & Capabilities > Signing, verify that the Ad Hoc Distribution provisioning profile is selected
- Potential issues
- You might need to uncheck Automatically manage signing checkbox
- You might need to download the profile by going to XCode > Settings > Accounts > Download Manual Profiles for HabitatMap Inc.
- Potential issues
- Set scheme to Beta (Product > Scheme > Edit Scheme > Archive > Build configuration)
- Generate Archive (Product > Archive)
- Go to Archive window, select the generated archive and click Distribute App > Custom > Release testing, go through the wizard, navigate to the generated folder, upload the IPA file to Firebase distribution
- In XCode project navigator select AirCasting > Signing & Capabilities > Signing, verify that the Ad Hoc Distribution provisioning profile is selected
- Potential issues
- You might need to uncheck Automatically manage signing checkbox
- You might need to download the profile by going to XCode > Settings > Accounts > Download Manual Profiles for HabitatMap Inc.
- Potential issues
- Set scheme to Release (Product > Scheme > Edit Scheme > Archive > Build configuration)
- Generate Archive (Product > Archive)
- Go to Archive window, select the generated archive and click Distribute App > App Store Connect, go through the wizard
- Select the newly distributed build in App Store Connect Distribution and release it
The app uses a concept called feature flagging to control which parts of code are ready to release and when. We're using Firebase Remote Config as a backend for those so we can adjust audiences on the fly not having to release new versions of the app. For beta testers there is a convenient AppSettings view which enables to manually flip any flag.
| Configuration | Firebase | AppSettings |
|---|---|---|
DEBUG |
🛑 | ✅ |
BETA |
✅ | ✅ |
RELEASE |
✅ | 🛑 |