491 lines
13 KiB
Markdown
491 lines
13 KiB
Markdown
# Google Play Store Publishing Guide
|
||
|
||
Complete step-by-step guide for publishing Placebo.mk PWA to Google Play Store using PWABuilder.
|
||
|
||
---
|
||
|
||
## Prerequisites Checklist
|
||
|
||
Before starting, ensure you have:
|
||
|
||
- [x] ✅ PWA deployed and accessible at `https://app.placebo.mk`
|
||
- [x] ✅ Privacy Policy accessible at `https://app.placebo.mk/privacy-policy`
|
||
- [x] ✅ PNG icons generated (72px - 512px)
|
||
- [x] ✅ Maskable icon (512x512)
|
||
- [x] ✅ Feature graphic (1024x500) at `pwa/public/assets/feature-graphic.png`
|
||
- [ ] ⏳ Screenshots captured (see `pwa/public/screenshots/README.md`)
|
||
- [x] ✅ Google Play Developer account ($25 one-time fee)
|
||
|
||
---
|
||
|
||
## Part 1: Capture Screenshots
|
||
|
||
**Time estimate:** 15-30 minutes
|
||
|
||
### Instructions:
|
||
|
||
1. Open Chrome browser
|
||
2. Navigate to `https://app.placebo.mk`
|
||
3. Press `F12` → Click device toolbar (or `Ctrl+Shift+M`)
|
||
4. Select device: **Pixel 5** (1080 x 2340)
|
||
5. Capture these screens:
|
||
- Homepage (hero article + latest articles)
|
||
- Article detail page
|
||
- Archive page
|
||
- Live blogs page
|
||
- Category page (Sport/Art/Science)
|
||
- Any other unique feature
|
||
|
||
6. Click three dots in device toolbar → "Capture screenshot"
|
||
7. Save as `screenshot-1.png`, `screenshot-2.png`, etc.
|
||
8. Place in `pwa/public/screenshots/`
|
||
|
||
**Requirements:**
|
||
- Minimum 2 screenshots
|
||
- Recommended 4-8 screenshots
|
||
- Format: PNG
|
||
- Portrait orientation (1080x2340)
|
||
|
||
---
|
||
|
||
## Part 2: Generate Android App with PWABuilder
|
||
|
||
**Time estimate:** 20-30 minutes
|
||
|
||
### Step 1: Access PWABuilder
|
||
|
||
1. Go to https://www.pwabuilder.com/
|
||
2. Enter your PWA URL: `https://app.placebo.mk`
|
||
3. Click "Start"
|
||
|
||
### Step 2: Review PWA Score
|
||
|
||
PWABuilder will analyze your PWA and show a score. You should see:
|
||
- ✅ Manifest detected
|
||
- ✅ Service Worker registered
|
||
- ✅ HTTPS enabled
|
||
- ✅ Icons present
|
||
|
||
If any checks fail, fix them before proceeding.
|
||
|
||
### Step 3: Package for Android
|
||
|
||
1. Click "Package For Stores"
|
||
2. Select **Android** platform
|
||
3. Click "Generate Package"
|
||
|
||
### Step 4: Configure Android Settings
|
||
|
||
Fill in the following:
|
||
|
||
| Field | Value |
|
||
|-------|-------|
|
||
| **App Name** | `Placebo.mk` |
|
||
| **Package ID** | `mk.placebo.app` |
|
||
| **Launch URL** | `https://app.placebo.mk/` |
|
||
| **Display Mode** | `standalone` |
|
||
| **Theme Color** | `#000000` |
|
||
| **Background Color** | `#ffffff` |
|
||
| **Orientation** | `portrait` |
|
||
| **Icon URL** | `https://app.placebo.mk/icons/icon-512.png` |
|
||
| **Maskable Icon URL** | `https://app.placebo.mk/icons/icon-512-maskable.png` |
|
||
| **Shortcuts** | Leave empty (optional) |
|
||
| **Splash Screen** | Auto-generated from icon |
|
||
|
||
### Step 5: Signing Options
|
||
|
||
Choose **one** of these options:
|
||
|
||
#### Option A: Use PWABuilder Cloud Signing (Recommended)
|
||
|
||
✅ **Pros:** Easy, no setup, signing key managed for you
|
||
❌ **Cons:** Key stored by PWABuilder (trusted service)
|
||
|
||
1. Select "Use new signing key"
|
||
2. PWABuilder will generate and store your key
|
||
3. Download the signing details (keep secure!)
|
||
|
||
#### Option B: Use Your Own Signing Key
|
||
|
||
✅ **Pros:** Full control over signing key
|
||
❌ **Cons:** More complex, must manage keystore securely
|
||
|
||
1. Generate keystore locally:
|
||
```bash
|
||
keytool -genkey -v -keystore placebo-release.keystore \
|
||
-alias placebo-key -keyalg RSA -keysize 2048 -validity 10000
|
||
```
|
||
|
||
2. Upload keystore to PWABuilder
|
||
3. Enter keystore password and alias
|
||
|
||
### Step 6: Generate Package
|
||
|
||
1. Click "Generate Package"
|
||
2. Wait 2-5 minutes for build to complete
|
||
3. Download the generated package (AAB or APK)
|
||
|
||
### Step 7: Extract SHA256 Fingerprint
|
||
|
||
PWABuilder will show your SHA256 fingerprint. It looks like:
|
||
```
|
||
14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E3:6D:3A:AE:4E:9F:5F:E8:E3:91:A0:7E
|
||
```
|
||
|
||
**IMPORTANT:** Copy this fingerprint - you'll need it for Digital Asset Links.
|
||
|
||
---
|
||
|
||
## Part 3: Update Digital Asset Links
|
||
|
||
**Time estimate:** 5-10 minutes
|
||
|
||
### Step 1: Update assetlinks.json
|
||
|
||
1. Open `pwa/public/.well-known/assetlinks.json`
|
||
2. Replace `PLACEHOLDER_SHA256_FINGERPRINT_FROM_PWABUILDER` with your actual fingerprint
|
||
3. Save the file
|
||
|
||
Example:
|
||
```json
|
||
{
|
||
"relation": ["delegate_permission/common.handle_all_urls"],
|
||
"target": {
|
||
"namespace": "android_app",
|
||
"package_name": "mk.placebo.app",
|
||
"sha256_cert_fingerprints": [
|
||
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E3:6D:3A:AE:4E:9F:5F:E8:E3:91:A0:7E"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### Step 2: Deploy Updated PWA
|
||
|
||
Rebuild and deploy your PWA with the updated assetlinks.json:
|
||
|
||
```bash
|
||
cd pwa
|
||
npm run build
|
||
# Deploy to Coolify or your hosting platform
|
||
```
|
||
|
||
### Step 3: Verify Deployment
|
||
|
||
Check that the file is accessible:
|
||
```bash
|
||
curl https://app.placebo.mk/.well-known/assetlinks.json
|
||
```
|
||
|
||
Validate with Google:
|
||
```bash
|
||
curl "https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://app.placebo.mk"
|
||
```
|
||
|
||
You should see your statement without errors.
|
||
|
||
---
|
||
|
||
## Part 4: Test Locally (Optional but Recommended)
|
||
|
||
**Time estimate:** 15-20 minutes
|
||
|
||
### Step 1: Install APK
|
||
|
||
PWABuilder provides a test APK. Install it on your Android device:
|
||
|
||
```bash
|
||
adb install -r placebo-mk.apk
|
||
```
|
||
|
||
Or email the APK to yourself and install manually.
|
||
|
||
### Step 2: Test Functionality
|
||
|
||
Verify:
|
||
- ✅ App opens without browser UI (TWA verification)
|
||
- ✅ Icons display correctly
|
||
- ✅ Offline mode works
|
||
- ✅ Navigation works
|
||
- ✅ PostHog analytics fires
|
||
- ✅ Deep links work (if applicable)
|
||
|
||
### Step 3: Debug Issues
|
||
|
||
If TWA doesn't work (shows browser UI):
|
||
- Check assetlinks.json is accessible
|
||
- Verify SHA256 fingerprint matches
|
||
- Ensure package name is correct
|
||
- Wait 5-10 minutes for DNS/CDN propagation
|
||
|
||
---
|
||
|
||
## Part 5: Upload to Google Play Console
|
||
|
||
**Time estimate:** 30-60 minutes
|
||
|
||
### Step 1: Create App in Play Console
|
||
|
||
1. Go to https://play.google.com/console
|
||
2. Click "Create app"
|
||
3. Fill in details:
|
||
- **App name:** Placebo.mk
|
||
- **Default language:** Macedonian (mk-MK)
|
||
- **App or game:** App
|
||
- **Free or paid:** Free
|
||
4. Accept declarations
|
||
5. Click "Create app"
|
||
|
||
### Step 2: Complete Store Listing
|
||
|
||
Navigate to **Store presence → Main store listing**
|
||
|
||
Fill in:
|
||
|
||
**App Details:**
|
||
- **App name:** Placebo.mk
|
||
- **Short description:** (max 80 chars)
|
||
```
|
||
Сатирични вести од Македонија - непристојно искрено и секогаш без филтер
|
||
```
|
||
- **Full description:** (max 4000 chars)
|
||
```
|
||
Placebo.mk е платформа за сатирични вести и коментари за локални и глобални настани во Македонија.
|
||
|
||
🎯 Што нудиме:
|
||
• Свежи сатирични вести за тековни настани
|
||
• Непристоен и директен коментар без филтер
|
||
• Live блогови за разбивачки вести во реално време
|
||
• Offline пристап до сите статии
|
||
• Категории: Политика, Спорт, Уметност, Наука и повеќе
|
||
|
||
⚡ Карактеристики:
|
||
• Брзо и лесно читање на статии
|
||
• Работи offline - читајте и без интернет
|
||
• Push известувања за нови статии
|
||
• Делете статии на социјални медиуми
|
||
• Темна и светла тема
|
||
|
||
Затоа што понекогаш вистината боли повеќе од фикцијата.
|
||
|
||
Следете не на web: https://placebo.mk
|
||
```
|
||
|
||
**Graphics:**
|
||
- Upload screenshots (2-8 images from `pwa/public/screenshots/`)
|
||
- Upload feature graphic (`pwa/public/assets/feature-graphic.png`)
|
||
- Upload app icon (512x512 from `pwa/public/icons/icon-512.png`)
|
||
|
||
**Categorization:**
|
||
- **App category:** News & Magazines
|
||
- **Tags:** news, satire, macedonia, politics (optional)
|
||
|
||
**Contact Details:**
|
||
- **Email:** privacy@placebo.mk (or your support email)
|
||
- **Website:** https://placebo.mk
|
||
- **Phone:** (optional)
|
||
|
||
**Privacy Policy:**
|
||
- **Privacy policy URL:** `https://app.placebo.mk/privacy-policy`
|
||
|
||
### Step 3: Set Up Content Rating
|
||
|
||
Navigate to **Policy → App content → Content rating**
|
||
|
||
1. Click "Start questionnaire"
|
||
2. Enter email address
|
||
3. Select category: **News & Reference**
|
||
4. Answer questions honestly:
|
||
- Does app contain violence? → (Select based on your content)
|
||
- Sexual content? → (Select based on your content)
|
||
- Language? → (Select based on your content)
|
||
- Drugs/alcohol references? → (Select based on your content)
|
||
5. Submit questionnaire
|
||
6. Apply ratings
|
||
|
||
### Step 4: Configure Target Audience
|
||
|
||
Navigate to **Policy → App content → Target audience and content**
|
||
|
||
1. **Target age:** 13+ (or 18+ if mature satire)
|
||
2. **App includes ads:** No (unless you add ads later)
|
||
3. Complete declaration
|
||
|
||
### Step 5: Select Countries
|
||
|
||
Navigate to **Release → Production → Countries/Regions**
|
||
|
||
1. Add countries:
|
||
- ✅ North Macedonia (primary)
|
||
- ✅ Other countries (optional - consider Albania, Serbia, Bulgaria, Greece for diaspora)
|
||
2. Click "Add countries/regions"
|
||
|
||
### Step 6: Upload AAB File
|
||
|
||
Navigate to **Release → Production → Create new release**
|
||
|
||
1. Click "Upload" and select the AAB file from PWABuilder
|
||
2. Wait for processing (may take 5-15 minutes)
|
||
3. Google Play will show:
|
||
- ✅ APK size
|
||
- ✅ Supported devices
|
||
- ✅ Permissions required
|
||
4. Review and confirm
|
||
|
||
### Step 7: Add Release Notes
|
||
|
||
Add release notes for the first version:
|
||
|
||
**Macedonian:**
|
||
```
|
||
Прва верзија на Placebo.mk апликацијата!
|
||
|
||
• Читајте сатирични вести од Македонија
|
||
• Offline пристап до содржини
|
||
• Live блогови за разбивачки настани
|
||
• Брз и едноставен интерфејс
|
||
```
|
||
|
||
**English (optional):**
|
||
```
|
||
First version of Placebo.mk app!
|
||
|
||
• Read satirical news from Macedonia
|
||
• Offline access to content
|
||
• Live blogs for breaking news
|
||
• Fast and simple interface
|
||
```
|
||
|
||
### Step 8: Review and Publish
|
||
|
||
1. Click "Review release"
|
||
2. Google will check for issues:
|
||
- ✅ All required fields complete
|
||
- ✅ Content rating assigned
|
||
- ✅ Target audience set
|
||
- ✅ Privacy policy accessible
|
||
3. Fix any warnings
|
||
4. Click "Start rollout to Production"
|
||
|
||
---
|
||
|
||
## Part 6: Wait for Review
|
||
|
||
**Time estimate:** 1-7 days
|
||
|
||
### What Happens Next:
|
||
|
||
1. **Submitted:** Your app enters Google's review queue
|
||
2. **Under Review:** Google reviews your app (usually 1-3 days)
|
||
3. **Approved:** App goes live on Play Store 🎉
|
||
4. **Rejected:** Fix issues and resubmit
|
||
|
||
### Common Rejection Reasons:
|
||
|
||
- ❌ Privacy policy not accessible
|
||
- ❌ Content rating doesn't match app content
|
||
- ❌ Misleading app description
|
||
- ❌ Copyright/trademark issues
|
||
- ❌ Broken functionality
|
||
|
||
### Tracking Status:
|
||
|
||
- Check Play Console dashboard
|
||
- You'll receive email notifications for status changes
|
||
- View detailed feedback in "Policy status"
|
||
|
||
---
|
||
|
||
## Part 7: Post-Publication
|
||
|
||
### After Your App is Live:
|
||
|
||
1. **Share the News!**
|
||
- Announce on your website
|
||
- Share on social media
|
||
- Email your users
|
||
|
||
2. **Monitor Performance:**
|
||
- Track downloads in Play Console
|
||
- Monitor crash reports
|
||
- Review user feedback/ratings
|
||
|
||
3. **Set Up Store Listing Experiments (Optional):**
|
||
- Test different screenshots
|
||
- A/B test descriptions
|
||
- Optimize icon designs
|
||
|
||
4. **Plan Updates:**
|
||
- Regular feature updates
|
||
- Bug fixes
|
||
- New content
|
||
|
||
5. **Respond to Reviews:**
|
||
- Reply to user reviews (especially negative ones)
|
||
- Show you care about user feedback
|
||
|
||
---
|
||
|
||
## Troubleshooting
|
||
|
||
### PWA Score is Low
|
||
- Verify manifest.json is valid
|
||
- Check service worker is registered
|
||
- Ensure HTTPS is enabled
|
||
- Add required icons
|
||
|
||
### TWA Verification Fails
|
||
- Double-check SHA256 fingerprint
|
||
- Verify assetlinks.json is at correct URL
|
||
- Ensure package name matches exactly
|
||
- Wait for CDN cache to clear (5-10 mins)
|
||
|
||
### Upload Failed
|
||
- Check AAB file size (max 150MB)
|
||
- Verify signing key is valid
|
||
- Ensure version code is unique
|
||
- Try uploading again (sometimes glitches occur)
|
||
|
||
### App Rejected
|
||
- Read rejection reason carefully
|
||
- Fix issues listed
|
||
- Update AAB and resubmit
|
||
- Contact Google Play support if unclear
|
||
|
||
---
|
||
|
||
## Important Files Reference
|
||
|
||
| File | Location | Purpose |
|
||
|------|----------|---------|
|
||
| Icons (PNG) | `pwa/public/icons/icon-*.png` | App icons |
|
||
| Maskable Icon | `pwa/public/icons/icon-512-maskable.png` | Adaptive icon |
|
||
| Screenshots | `pwa/public/screenshots/` | Play Store listing |
|
||
| Feature Graphic | `pwa/public/assets/feature-graphic.png` | Store banner |
|
||
| Privacy Policy | `https://app.placebo.mk/privacy-policy` | Required legal doc |
|
||
| Asset Links | `pwa/public/.well-known/assetlinks.json` | TWA verification |
|
||
| Manifest | `https://app.placebo.mk/manifest.webmanifest` | PWA config |
|
||
|
||
---
|
||
|
||
## Support & Resources
|
||
|
||
- **PWABuilder Docs:** https://docs.pwabuilder.com/
|
||
- **Google Play Help:** https://support.google.com/googleplay/android-developer/
|
||
- **TWA Guide:** https://developers.google.com/web/android/trusted-web-activity
|
||
- **Digital Asset Links:** https://developers.google.com/digital-asset-links/
|
||
|
||
---
|
||
|
||
## Next Steps After This Guide
|
||
|
||
1. ✅ Complete all phases
|
||
2. ✅ Deploy updated PWA with assetlinks.json
|
||
3. ✅ Capture screenshots
|
||
4. ✅ Generate Android app with PWABuilder
|
||
5. ✅ Upload to Google Play Console
|
||
6. ⏳ Wait for approval
|
||
7. 🎉 Celebrate when live!
|
||
|
||
Good luck! 🚀
|