App Store — Eric's Drop to Phone (Plan B)

Paid iPhone app. Windows zip stays free. No in-app purchases, no Stripe in the iOS app, no subscriptions.

Work one step at a time. Do not skip ahead. Tick the checkbox when that step is done, then continue.

Companion docs: TestFlight (CI upload), Privacy, Support (public URL Apple requires).

Locked decisions

Item Choice
Model Plan B — customers pay once for the iOS app
Windows Free download from https://droptophone.welchsoftware.net
IAP / Stripe in iOS None
Price (change in Connect if you want) USD $2.99 (tier 3)
Bundle ID com.droptophone.app
SKU droptophone-ios-1
Team 528M2RYVHB
Listing name Eric's Drop to Phone (add a suffix if Apple says the name is taken)

Safari on the phone still works without buying the app. You are charging for the native receiver: one QR scan (or Connect on Wi-Fi), later drops, gallery, Photos vs Files.


Status (already done)

These are not steps. Do not redo them unless something broke.

Still missing: Paid agreement, App Store Connect app record, support URL, privacy manifest, encryption flag, reviewer demo, screenshots, listing copy, paid price, App Review.


Step 1 — Paid Applications Agreement, tax, and bank

Who: the Account Holder of team 528M2RYVHB (not a Developer role).

You cannot ship a paid app until this is Active. It often takes a day after you submit tax/bank.

  1. Open Agreements, Tax, and Banking.
  2. Under Paid Applications, click Request / View and accept the contract.
  3. Banking → add the account that should receive proceeds (routing + account, or local equivalent). Confirm the micro-deposit if Apple sends one.
  4. Tax → US: complete W-9. Other countries: the forms Apple shows.
  5. Wait until Paid Applications shows Active (not Pending).

Stop. Do not create the app listing until Paid Applications is Active (or you accept that price cannot be selected yet).


Step 2 — Create the App Store Connect app record

Apple’s API cannot do this. Website only.

  1. App Store Connect → My Apps+New App.
  2. Platforms: iOS only.
  3. Name: Eric's Drop to Phone. If taken: Eric's Drop to Phone — LAN or similar.
  4. Primary language: English (US).
  5. Bundle ID: com.droptophone.app.
  6. SKU: droptophone-ios-1.
  7. User Access: Full Access.

You now have an app page. Builds cannot upload until this exists.

Stop.


Step 3 — Set the price (Plan B)

  1. Open the new app → MonetizationPricing and Availability (wording varies slightly).
  2. Price: $2.99 USD. Let Apple schedule other currencies.
  3. Availability: all countries unless you have a reason to limit.
  4. Confirm there are no in-app purchases.

Stop.


Step 4 — Public support page (required URL)

Apple requires a support URL. GitHub Issues is a weak choice (login, 404 if the repo is private).

The copy lives in SUPPORT.md. Production URL will be:

https://droptophone.welchsoftware.net/SUPPORT.html

  1. Confirm docs/SUPPORT.md looks right (email, steps, what the app is not).
  2. Ship it with the usual dev → site build → promote to main so production Netlify has SUPPORT.html.
  3. Open that URL in a private browser window and confirm it loads without the DEV banner.

Also add a Support link on the production homepage (next to Privacy) and in the iPhone About screen. That is a small code change; do it in Step 6 with the other app changes.

Stop until the production URL loads.


Step 5 — Privacy policy still accurate

Open https://droptophone.welchsoftware.net/PRIVACY_POLICY.html.

Plan B does not add analytics, accounts, or payment SDKs on iOS. Apple’s payment UI is Apple’s, not yours. The current policy is enough if it still says: no cloud account, LAN only, camera for QR, Photos/Files for save.

Update the Contact line so it points at the support page, not only GitHub.

Stop.


Step 6 — Code required before review (batch these together)

Do this in the iOS project / repo. Details for the implementer:

6a. Export compliance

In src/DropToPhone.iOS/Info.plist add:

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

LAN HTTP only; no custom crypto. Answer the same way in Connect when asked.

6b. Privacy manifest

Add PrivacyInfo.xcprivacy to the iOS target. Declare what you actually use:

No tracking. No third-party SDKs. Nutrition labels in Connect will be Data Not Collected.

6c. Reviewer sample drop

The app must do something useful without a Windows PC on Apple’s Wi-Fi.

Add a Try a sample drop control on the unlinked home screen that loads a bundled still image, runs the real Save / Discard / Save location flow, and says it is a demo.

6d. About + website

6e. Production homepage

Show Support next to Privacy for prod visitors (not only DEV docs).

Stop until this is on dev, tested on a device or simulator.


Step 7 — Reviewer video (phone + PC)

Apple often rejects companion apps with 2.1 (cannot test) or 4.2 (too little). The sample drop helps. A video still helps.

Record 30–60 seconds (iPhone camera on the desk is fine):

  1. Windows app running, drop a photo, QR visible.
  2. iPhone app scans QR.
  3. Image appears → Save to Photos.
  4. Drop a second file on Windows without scanning again; it appears on the phone.

Upload unlisted (YouTube/iCloud) and paste the link into Review Notes in Step 12. Do not make the video the only test path.

Stop.


Step 8 — Screenshots

In Connect you need at least iPhone 6.7" (the size Apple currently requires; add more sizes if Connect asks).

Capture from a real device or the 6.7" simulator, Release look (no DEBUG / DEV):

  1. Unlinked home + Get started + Scan / Connect
  2. Linked, incoming drop (one file or a gallery), Save / Discard
  3. Save location (Photos vs Files)
  4. About (privacy + support links)

No Windows desktop chrome in the iPhone screenshot frames. You may mention Windows in the caption.

Stop.


Step 9 — Store listing text (paste into Connect)

Subtitle (30 characters max):

PC files to your iPhone

Promotional text (optional, you can change without a new build):

Drop photos, videos, or PDFs on Windows. Scan once. Later drops land on this iPhone — even if the PC’s address changes. Same Wi-Fi, no cloud.

Description:

Eric's Drop to Phone moves photos, videos, PDFs, and other files from your Windows PC to this iPhone on the same Wi-Fi. Drop several files at once. No cloud account. No Bluetooth file send.

You need the free Windows app from droptophone.welchsoftware.net on the same network as your iPhone. Drop files on the PC, scan the QR once (or connect when this iPhone finds the PC), then later drops appear here. Photos and video save to Photos. PDFs and documents save to Files.

Large transfers show progress so they do not look frozen. If the PC’s Wi-Fi address changes, this app can find it again on the local network.

This is not AirDrop and not a public internet transfer. Guest Wi-Fi that isolates devices will block it. Do not use it on an untrusted café network if you need confidentiality.

Safari can still open the QR without this app. This app remembers the PC after one scan and saves with one tap.

Keywords (100 characters, commas, no spaces after commas if you need room):

windows,pc,photo,pdf,files,transfer,wifi,lan,qr,iphone,drop,heic

What's New (1.0.28):

Drop several files at once. PDFs and documents save to Files; photos stay in Photos. Progress on large videos. The iPhone finds the PC on Wi-Fi if the address changes.

Support URL: https://droptophone.welchsoftware.net/SUPPORT.html
Marketing URL: https://droptophone.welchsoftware.net
Privacy URL: https://droptophone.welchsoftware.net/PRIVACY_POLICY.html
Copyright: 2026 Eric (use your legal name)
Category: Photo & Video (primary), Utilities (secondary)
Age: 4+

Stop.


Step 10 — Privacy nutrition labels

App Store Connect → App Privacy → Get Started.

Stop.


Step 11 — TestFlight build (Release)

  1. Repo variable TESTFLIGHT_ENABLED = true if you want every main push to upload; otherwise run Deploy to TestFlight manually. See TESTFLIGHT.md.
  2. Promote devmain (or dispatch the workflow) so CI uploads a Release IPA.
  3. In Connect → TestFlight: wait for processing, add yourself as an internal tester, install on a physical iPhone.
  4. Real test: Windows zip + iPhone on the same Wi-Fi, scan (or Connect), several files in one drop, a PDF to Files, a large video with progress, second drop without a new QR, Photos and Files.
  5. Optional: external TestFlight group (still paid-app review later; TestFlight installs are free for testers).

Export compliance in Connect: No (non-exempt encryption) — matches the plist.

Stop until you have used the TestFlight build end-to-end.


Step 12 — App Review notes + submit

Version → this build → Add for Review.

Review notes (paste):

This iPhone app is a paid companion to a free Windows tray app. Traffic is HTTP on the local Wi-Fi only. There is no cloud backend and no user account.

Apple review may not have a Windows PC on the same LAN:
1. In the app, use “Try a sample drop” to exercise preview, Save, Discard, and Save location without a PC.
2. Full flow video: [PASTE URL]

Permissions you will see:
- Camera — QR on the Windows window
- Local Network — talk to the PC
- Photos — save (add-only, or library access if the Drop to Phone album is on)
- Files — optional folder

Windows app (free): https://droptophone.welchsoftware.net
Support: https://droptophone.welchsoftware.net/SUPPORT.html
Privacy: https://droptophone.welchsoftware.net/PRIVACY_POLICY.html

No demo account. Paid app, no IAP.

Contact: your email and phone for App Review.

Submit.

Stop until Approved, Rejected, or Metadata Rejected.


Step 13 — After the decision

Approved: select Release (manual or automatic). Confirm the public App Store listing, paid price, and that production Windows zip + support/privacy URLs still match.

Rejected 2.1 / 4.2: strengthen sample drop, shorten the video, make review notes even more literal. Reply in Resolution Center; do not argue about AirDrop.

Rejected 3.1.x: you put a non-Apple payment or unlocked iOS features from the website. Plan B forbids that. Remove it.

Metadata rejected: fix screenshots/URLs/privacy form; often no new binary.


What Plan B is not

If you change your mind