Repository navigation
Distribution
Rob Lazzurs edited this page Jan 14, 2026
·
1 revision
OnCall Notify uses a dual distribution strategy to reach users through multiple channels.
What it is: Signed and notarized DMG/ZIP files distributed via GitHub Releases
Current Status: ✅ Fully Operational
How it works:
- Automated builds on every merge to
main - Signed with Developer ID Application certificate
- Notarized by Apple
- Published to GitHub Releases
- Users download directly from GitHub
Workflow: .github/workflows/release-on-merge.yml
Advantages:
- ✅ Full control over release timing
- ✅ No review process or delays
- ✅ No App Store fees or restrictions
- ✅ Can update anytime
- ✅ Direct relationship with users
- ✅ Faster iteration and bug fixes
Disadvantages:
- ❌ Users must find your GitHub repo
- ❌ No built-in update mechanism (yet)
- ❌ Less discoverable than App Store
- ❌ Manual download and installation
Best for:
- Power users and developers
- Early adopters
- Users who prefer open source downloads
- Beta testing
What it is: Official distribution through Apple's Mac App Store
Current Status: 🔧 Ready to Configure
How it works:
- Manual trigger via GitHub Actions workflow
- Signed with 3rd Party Mac Developer certificates
- Builds uploaded to App Store Connect
- Apple reviews before approval
- Users install via Mac App Store
Workflow: .github/workflows/appstore-release.yml
Advantages:
- ✅ Maximum discoverability
- ✅ Built-in auto-updates
- ✅ User trust (Apple review badge)
- ✅ Easier installation for non-technical users
- ✅ One-click updates
Disadvantages:
- ❌ 1-3 day review process for each update
- ❌ Must comply with App Store guidelines
- ❌ Requires App Sandbox (more restrictive)
- ❌ Less control over release timing
- ❌ Requires paid Apple Developer membership ($99/year)
Best for:
- Mainstream users
- Users who prefer App Store convenience
- Organizations with App Store policies
- Maximum reach
| Aspect | Direct Distribution | Mac App Store |
|---|---|---|
| Certificate | Developer ID Application | 3rd Party Mac Developer Application |
| Installer Cert | N/A (DMG) | 3rd Party Mac Developer Installer |
| Entitlements | Hardened Runtime | App Sandbox |
| Notarization | Yes (via notarytool) | No (App Store review instead) |
| Provisioning | No | Yes (required) |
| Distribution Format | DMG, ZIP | PKG (via App Store) |
| Auto-Updates | Not yet (planned) | Built-in (App Store) |
OnCallNotify/
├── OnCallNotify.entitlements # Direct distribution (Hardened Runtime)
└── OnCallNotify.AppStore.entitlements # App Store (App Sandbox)
build.sh # Local development builds
create-dmg.sh # DMG creation for direct distribution
build-appstore.sh # App Store archive and package (NEW)
.github/workflows/
├── release-on-merge.yml # Automatic: DMG releases on merge to main
├── appstore-release.yml # Manual: App Store builds (NEW)
└── pr-validation.yml # PR builds and validation
- ✅ Keep current automated DMG releases
- ✅ Build user base
- ✅ Gather feedback
- ✅ Iterate quickly
- 📋 Complete App Store Connect setup (see
APPSTORE_SETUP.md) - 📋 Prepare marketing materials
- 📋 Submit first version for review
- 📋 Address any review feedback
- 🔄 Release updates to both channels
- 🔄 Direct distribution: Fast iteration, beta features
- 🔄 App Store: Stable releases, broader audience
- 🔄 Consider 1-2 week offset (test via direct, then App Store)
-
Continuous Direct Distribution
- Every merge to
maincreates a GitHub Release - Uses semantic versioning from conventional commits
- Example:
v0.16.0,v0.17.0,v0.17.1
- Every merge to
-
Periodic App Store Releases
- Release to App Store every 2-4 weeks or for major features
- Use same version numbers as GitHub releases
- Example: Release
v0.17.0to App Store after testing via direct distribution
-
Beta Testing
- Use GitHub Releases for beta testing
- Use TestFlight for App Store beta testing
- Gather feedback before wide App Store release
## Download OnCall Notify
### Mac App Store (Coming Soon)
[Download from Mac App Store](link) - Recommended for most users
- One-click installation
- Automatic updates
- Apple security review
### Direct Download
[Download DMG](link) - For early access and beta features
- Latest features first
- Direct from GitHub
- Manual installationFor Direct Distribution:
- Release notes in GitHub Release
- Changelog from conventional commits
- Update README with latest version
For App Store:
- "What's New" in App Store Connect
- User-friendly description of changes
- Highlights user-facing features
- ✅ Developer ID signed
- ✅ Notarized by Apple
- ✅ No Gatekeeper warnings
- ✅ Hardened Runtime enabled
⚠️ Users must allow from "unidentified developer" (rare, if notarization fails)
- ✅ App Store reviewed
- ✅ App Sandbox enforced
- ✅ No additional security prompts
- ✅ Automatic security updates via App Store
- Cost: Free (GitHub Actions minutes included with public repo)
- Developer Certificate: $99/year (one-time for all apps)
- Storage: Free (GitHub Releases)
- Cost: Free to distribute (app is free)
- Developer Membership: $99/year (required, same as above)
- Commission: 0% (app is free, no IAP)
Total Annual Cost: $99/year (covers both distribution methods)
- ✅ Already set up - no action needed
- Keep releasing via GitHub
- Build user base organically
- 📋 Follow
APPSTORE_SETUP.mdguide - 📋 Set up App Store Connect account
- 📋 Create certificates and provisioning
- 📋 Configure GitHub secrets
- 📋 Prepare marketing materials
- 📋 Submit first build for review
- ✅ Continue current direct distribution (no changes)
- 📋 Follow App Store setup in parallel
- 📋 Release to App Store once approved
- 🔄 Maintain both channels going forward
- GitHub Release download counts
- GitHub stars and forks
- Issue tracker feedback
- Manual user surveys
- App Store Connect Analytics dashboard
- Download and update statistics
- User reviews and ratings
- Crash reports
- GitHub Issues for bug reports
- GitHub Discussions for questions
- Direct user engagement
- App Store reviews (respond to feedback)
- Support URL (points to GitHub Issues)
- App Store Connect review responses
- Auto-update mechanism (Sparkle framework)
- Update notifications
- Beta channel option
- In-app feedback mechanism
- App Store rating prompts
- StoreKit integration (if adding paid features)
| Need | Use |
|---|---|
| Quick bug fix | Direct distribution (minutes) |
| New feature testing | Direct distribution (immediate) |
| Maximum reach | App Store (1-3 day review) |
| Beta testing | GitHub Releases or TestFlight |
| Stable release | Both channels |
- Direct Distribution Issues: GitHub Issues
-
App Store Questions: See
APPSTORE_SETUP.md - General Questions: GitHub Discussions