mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
244 lines
7.6 KiB
Markdown
244 lines
7.6 KiB
Markdown
# TestFlight and App Store Deployment Guide
|
|
|
|
## Prerequisites
|
|
|
|
- [x] Apple Developer Account ($99/year) - [developer.apple.com](https://developer.apple.com)
|
|
- [x] Xcode installed
|
|
- [x] Apple Transporter app installed
|
|
- [x] App icons ready (1024x1024px)
|
|
- [x] Bundle ID configured: `com.monitormx.meshcoreopen`
|
|
|
|
## Step 1: Register Bundle Identifier
|
|
|
|
1. Go to [Apple Developer - Identifiers](https://developer.apple.com/account/resources/identifiers/list)
|
|
2. Click the **"+"** button
|
|
3. Select **"App IDs"** → Continue
|
|
4. Select **"App"** → Continue
|
|
5. Fill in:
|
|
- **Description**: Meshcore Open
|
|
- **Bundle ID**: Explicit - `com.monitormx.meshcoreopen`
|
|
- **Capabilities**: Leave defaults (or add as needed)
|
|
6. Click **Continue** → **Register**
|
|
|
|
## Step 2: Create App in App Store Connect
|
|
|
|
1. Go to [App Store Connect](https://appstoreconnect.apple.com)
|
|
2. Sign in with your Apple ID
|
|
3. Click **"My Apps"**
|
|
4. Click the **"+"** button → **"New App"**
|
|
5. Fill in the form:
|
|
- **Platforms**: iOS
|
|
- **Name**: Meshcore Open
|
|
- **Primary Language**: English (U.S.)
|
|
- **Bundle ID**: Select `com.monitormx.meshcoreopen` from dropdown
|
|
- **SKU**: `meshcore-open-001` (or any unique identifier)
|
|
- **User Access**: Full Access
|
|
6. Click **"Create"**
|
|
|
|
## Step 3: Build the IPA
|
|
|
|
Run these commands from the project directory:
|
|
|
|
```bash
|
|
# Add CocoaPods to PATH
|
|
export PATH="/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH"
|
|
|
|
# Clean previous builds
|
|
../flutter/bin/flutter clean
|
|
|
|
# Build IPA for App Store
|
|
../flutter/bin/flutter build ipa
|
|
```
|
|
|
|
The IPA will be created at: `build/ios/ipa/meshcore_open.ipa`
|
|
|
|
## Step 4: Upload to App Store Connect via Transporter
|
|
|
|
1. **Open Apple Transporter**
|
|
- Launch from Applications folder
|
|
- Sign in with your Apple ID
|
|
|
|
2. **Upload the IPA**
|
|
- Drag and drop `build/ios/ipa/meshcore_open.ipa` into Transporter
|
|
- Click **"Deliver"**
|
|
- Wait for upload to complete (usually 1-5 minutes)
|
|
|
|
3. **Processing**
|
|
- Apple will process your build (10-30 minutes)
|
|
- You'll receive an email when processing is complete
|
|
|
|
## Step 5: Configure App Store Connect Metadata
|
|
|
|
### App Information
|
|
1. In App Store Connect, go to your app
|
|
2. Fill in required information:
|
|
- **Subtitle**: Short description (30 chars max)
|
|
- **Privacy Policy URL**: Required for Bluetooth apps
|
|
- **Category**: Utilities or Productivity
|
|
- **Age Rating**: Complete questionnaire
|
|
|
|
### App Store Listing
|
|
1. Go to **App Store** tab
|
|
2. Upload **Screenshots** (required):
|
|
- iPhone 6.7" display (1290 x 2796 pixels) - At least 1 screenshot
|
|
- iPhone 6.5" display (1242 x 2688 pixels) - At least 1 screenshot
|
|
- Optional: iPad screenshots
|
|
|
|
3. Fill in **Description**:
|
|
```
|
|
Meshcore Open is a Flutter client for MeshCore LoRa mesh networking devices.
|
|
|
|
Features:
|
|
- BLE connectivity to MeshCore devices
|
|
- Real-time mesh network communication
|
|
- Map visualization with OpenStreetMap
|
|
- Community management with QR code scanning
|
|
- Message tracking and retry system
|
|
|
|
Connect to your MeshCore LoRa device and start communicating over the mesh network.
|
|
```
|
|
|
|
4. **Keywords**: `lora,mesh,networking,bluetooth,communication`
|
|
5. **Support URL**: Your GitHub or website URL
|
|
6. **Marketing URL**: (Optional)
|
|
|
|
### Version Information
|
|
1. **What's New in This Version**:
|
|
```
|
|
Initial release of Meshcore Open
|
|
|
|
- BLE device connectivity
|
|
- Mesh network messaging
|
|
- Map integration
|
|
- Community features
|
|
```
|
|
|
|
2. **Build**: Select the uploaded build once processing completes
|
|
|
|
## Step 6: TestFlight Setup
|
|
|
|
### Internal Testing (No Review Required)
|
|
1. Go to **TestFlight** tab in App Store Connect
|
|
2. Click **Internal Testing** → **"+"** to create a group
|
|
3. Name your group (e.g., "Internal Testers")
|
|
4. Add yourself as a tester using your email
|
|
5. Select the build you uploaded
|
|
6. Testers will receive an email with TestFlight invitation
|
|
|
|
### External Testing (Requires Beta Review)
|
|
1. Click **External Testing** → **"+"** to create a group
|
|
2. Add build and testers
|
|
3. Fill in **Test Information**:
|
|
- **What to Test**: Brief description of features
|
|
- **Feedback Email**: Your email address
|
|
4. Click **Submit for Review**
|
|
5. Beta review typically takes 24-48 hours
|
|
|
|
## Step 7: App Store Submission
|
|
|
|
Once you're ready for public release:
|
|
|
|
1. Go to **App Store** tab
|
|
2. Complete all required metadata (if not done)
|
|
3. Select your build
|
|
4. Fill in **App Review Information**:
|
|
- **Contact Information**: Your name, phone, email
|
|
- **Demo Account**: If app requires login
|
|
- **Notes**: Any special instructions for reviewers
|
|
5. Answer **Export Compliance** questions:
|
|
- Does your app use encryption? **Yes** (uses TLS/HTTPS)
|
|
- Is encryption registration required? **No** (standard encryption)
|
|
6. Click **Add for Review**
|
|
7. Review summary and click **Submit to App Review**
|
|
|
|
## Step 8: After Submission
|
|
|
|
- **App Review**: Typically 24-48 hours
|
|
- **Common Rejection Reasons**:
|
|
- Missing privacy policy
|
|
- Incomplete app information
|
|
- Crashes or bugs
|
|
- Misleading app description
|
|
|
|
- **If Approved**: You can release immediately or schedule a release date
|
|
- **If Rejected**: Address issues and resubmit
|
|
|
|
## Updating the App
|
|
|
|
When you need to release an update:
|
|
|
|
1. **Update version** in `pubspec.yaml`:
|
|
```yaml
|
|
version: 0.5.0+6 # Increment version (0.5.0) and build number (+6)
|
|
```
|
|
|
|
2. **Build new IPA**:
|
|
```bash
|
|
export PATH="/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH"
|
|
../flutter/bin/flutter clean
|
|
../flutter/bin/flutter build ipa
|
|
```
|
|
|
|
3. **Upload via Transporter** (same process as above)
|
|
|
|
4. **Create new version** in App Store Connect:
|
|
- Click **"+"** next to versions
|
|
- Select version number
|
|
- Update "What's New" text
|
|
- Select new build
|
|
- Submit for review
|
|
|
|
## macOS Build (Bonus)
|
|
|
|
To build for macOS:
|
|
|
|
```bash
|
|
export PATH="/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH"
|
|
../flutter/bin/flutter build macos --release
|
|
cd build/macos/Build/Products/Release
|
|
zip -r meshcore_open-macos.zip meshcore_open.app
|
|
```
|
|
|
|
Distribution:
|
|
- Share the zip file directly
|
|
- Users unzip and drag to Applications
|
|
- First run: Right-click → Open (to bypass Gatekeeper)
|
|
|
|
## Troubleshooting
|
|
|
|
### Build Errors
|
|
- **CocoaPods not found**: Ensure PATH includes `/opt/homebrew/lib/ruby/gems/4.0.0/bin`
|
|
- **No signing certificate**: Configure Team in Xcode (Signing & Capabilities)
|
|
- **Bundle ID mismatch**: Check `ios/Runner.xcodeproj/project.pbxproj`
|
|
|
|
### Upload Errors
|
|
- **No profiles found**: Create app in App Store Connect first
|
|
- **Bundle ID not registered**: Register in Apple Developer portal
|
|
- **Authentication failed**: Use Transporter app instead of CLI
|
|
|
|
### TestFlight Issues
|
|
- **Build not appearing**: Wait 10-30 minutes for processing
|
|
- **Can't add testers**: Check you have available slots (100 internal, 10,000 external)
|
|
- **TestFlight crashes**: Check device logs in Xcode → Devices & Simulators
|
|
|
|
## Important Files
|
|
|
|
- **iOS IPA**: `build/ios/ipa/meshcore_open.ipa`
|
|
- **macOS App**: `build/macos/Build/Products/Release/meshcore_open.app`
|
|
- **Bundle ID Config**: `ios/Runner.xcodeproj/project.pbxproj`
|
|
- **Version Info**: `pubspec.yaml`
|
|
|
|
## Useful Links
|
|
|
|
- [App Store Connect](https://appstoreconnect.apple.com)
|
|
- [Apple Developer Portal](https://developer.apple.com/account)
|
|
- [TestFlight Documentation](https://developer.apple.com/testflight/)
|
|
- [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/)
|
|
- [Flutter iOS Deployment](https://docs.flutter.dev/deployment/ios)
|
|
|
|
## Support
|
|
|
|
For issues with:
|
|
- **App Store Process**: [Apple Developer Support](https://developer.apple.com/contact/)
|
|
- **Flutter Build Issues**: [Flutter GitHub](https://github.com/flutter/flutter/issues)
|
|
- **Meshcore Open App**: [GitHub Issues](https://github.com/wel97459/meshcore-open/issues)
|