-
Notifications
You must be signed in to change notification settings - Fork 291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Polish Damus Purple support #1814
Comments
This commit includes various code changes necessary to get a basic proof of concept of the feature working. This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes: - [X] Basic Storekit configuration - [X] Basic purchase mechanism - [X] Basic layout and copywriting - [X] Basic design - [X] Manage button (To help user cancel their subscription) - [X] Thank you confirmation + special welcome view - [X] Star badge on profile (by checking the Damus Purple API) - [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app) Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.0.1 Damus: This commit damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at damus-io#1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status Closes: damus-io#1422
This commit includes various code changes necessary to get a basic proof of concept of the feature working. This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes: - [X] Basic Storekit configuration - [X] Basic purchase mechanism - [X] Basic layout and copywriting - [X] Basic design - [X] Manage button (To help user cancel their subscription) - [X] Thank you confirmation + special welcome view - [X] Star badge on profile (by checking the Damus Purple API) - [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app) Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.0.1 Damus: This commit damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at damus-io#1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status 9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS 10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple. Feature flag testing -------------------- PASS Preconditions: Continue from above test Steps: 1. Disable Damus Purple experiment support on developer settings. Restart the app. 2. Check your post. There should be no star beside your profile name. PASS 3. Check side menu. There should be no "Damus Purple" option. PASS 4. Check server logs. There should be no new requests being done to the server. PASS Closes: damus-io#1422
On Mon, Dec 11, 2023 at 12:57:31PM -0800, Daniel D’Aquino wrote:
## Acceptance criteria
- [ ] Show user that apple takes X%/Y$ of each in app apple pay donation
this is technically not allowed by appstore guidelines
|
I also had a feeling this acceptance criteria item would be controversial with Apple. Thanks for confirming, I will cross it out. |
On Wed, Dec 13, 2023 at 09:52:04AM -0800, Daniel D’Aquino wrote:
>> - [ ] Show user that apple takes X%/Y$ of each in app apple pay donation
>
> this is technically not allowed by appstore guidelines
I also had a feeling this acceptance criteria item would be
controversial with Apple. Thanks for confirming, I will cross it out.
Here's another interesting thing that I thought you could do but can't.
Letting users know about other subscription options (lightning):
"Apple currently prevents apps from letting users know about a
purchasing method other than the App Store's in-app purchase system
within their apps, although it does allow developers to inform customers
by email. Now"
I learned this from an article I read today:
https://www.macrumors.com/2023/12/13/eu-plans-to-end-apple-anti-steering-rule/
Apparently EU/spotify are suing apple for this.
"Spotify has argued that being unable to let iPhone users know about
other payment options is anticompetitive."
|
@jb55, yes, I remember reading or hearing about this rule a while back. There is an alternative though. When we present the benefits of Damus Purple to the user on the app, we could place a link saying "Learn more about Damus Purple" which them to a page on our website. In that page we can present alternative payment methods (because Damus is not only limited to iOS) Whenever I think of this, I think OpenPhone is probably a good similar example. They offer their paid services via in-app subscriptions on their iOS app, but they also provide different payment options if the user signs up through their website. Apple cannot stop them from offering users different payment methods on their website (after all, some users might not even use iOS at all). All it takes is the user to go to the website once (even if by accident) to find it out. Maybe they will subscribe via in-app in the first month, but they might switch out of it soon after if they know. Especially if we are allowed to charge them a different amount via in-app vs. website to cover up for the Apple tax. |
On Wed, Dec 13, 2023 at 10:41:19AM -0800, Daniel D’Aquino wrote:
There is an alternative though. **When we present the benefits of Damus
Purple to the user on the app, we could place a link saying "Learn more
about Damus Purple" which them to a page on our website. In that page
we can present alternative payment methods** (because Damus is not only
limited to iOS)
good call. I like the "learn more about damus purple" approach. let's do that.
|
Added it to the acceptance criteria! |
This commit includes various code changes necessary to get a basic proof of concept of the feature working. This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes: - [X] Basic Storekit configuration - [X] Basic purchase mechanism - [X] Basic layout and copywriting - [X] Basic design - [X] Manage button (To help user cancel their subscription) - [X] Thank you confirmation + special welcome view - [X] Star badge on profile (by checking the Damus Purple API) - [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app) Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.0.1 Damus: This commit damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at #1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status 9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS 10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple. Feature flag testing -------------------- PASS Preconditions: Continue from above test Steps: 1. Disable Damus Purple experiment support on developer settings. Restart the app. 2. Check your post. There should be no star beside your profile name. PASS 3. Check side menu. There should be no "Damus Purple" option. PASS 4. Check server logs. There should be no new requests being done to the server. PASS Closes: #1422
Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.2 Damus: This commit damus-api: 626fb9665d8d6c576dd635d5224869cd9b69d190 Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at #1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status 9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS 10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple. Closes: #1809 Signed-off-by: Daniel D’Aquino <daniel@daquino.me> Signed-off-by: William Casarin <jb55@jb55.com>
This commit includes various code changes necessary to get a basic proof of concept of the feature working. This is NOT a full working feature yet, only a preliminary prototype/PoC. It includes: - [X] Basic Storekit configuration - [X] Basic purchase mechanism - [X] Basic layout and copywriting - [X] Basic design - [X] Manage button (To help user cancel their subscription) - [X] Thank you confirmation + special welcome view - [X] Star badge on profile (by checking the Damus Purple API) - [X] Connection to Damus purple API for fetching account info, registering for an account and sending over the App Store receipt data The feature sits behind a feature flag which is OFF by default (it can be turned ON via Settings --> Developer settings --> Enable experimental Purple API and restarting the app) Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.0.1 Damus: This commit damus-api: 59ce44a92cff1c1aaed9886f9befbd5f1053821d Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at #1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status 9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS 10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple. Feature flag testing -------------------- PASS Preconditions: Continue from above test Steps: 1. Disable Damus Purple experiment support on developer settings. Restart the app. 2. Check your post. There should be no star beside your profile name. PASS 3. Check side menu. There should be no "Damus Purple" option. PASS 4. Check server logs. There should be no new requests being done to the server. PASS Closes: #1422
Testing --------- PASS Device: iPhone 15 Pro simulator iOS: 17.2 Damus: This commit damus-api: 626fb9665d8d6c576dd635d5224869cd9b69d190 Server: Ubuntu 22.04 (VM) Setup: 1. On the server, delete the `mdb` database files to start from scratch 2. In iOS, reinstall the app if necessary to make sure there are no in-app purchases 3. Enable subscriptions support via developer settings with localhost test mode and restart app 4. Start server with mock parameters (Run `npm run dev`) Steps: 1. Open top bar and click on "Purple" 2. Purple screen should appear and show both benefits and the purchase options. PASS 3. Click on "monthly". An Apple screen to confirm purchase should appear. PASS 4. Welcome screen with animation should appear. PASS 5. Click continue and restart app (Due to known issue tracked at #1814) 6. Post something 7. Gold star should appear beside your name 8. Look at the server logs. There should be some requests to create the account (POST), to send the receipt (POST), and to get account status 9. Go to purple view. There should be some information about the subscription, as well as a "manage" button. PASS 10. Click on "manage" button. An iOS sheet should appear allow the user to unsubscribe or manage their subscription to Damus Purple. Closes: #1809 Signed-off-by: Daniel D’Aquino <daniel@daquino.me> Signed-off-by: William Casarin <jb55@jb55.com>
This commit adds support for purple subscriber number tracking, by enforcing the inclusion of this number whenever returning account info in any of the routes Testing ======= Device: iPhone 15 simulator iOS: 17.2 damus-api: This commit damus-website: `80a6b6211078e7a028a5d33ab97dc4f17b6dc1d0` Damus: `6731471c1745c86fc02d97d41abe54848f3a1029` Setup: - `npm run dev` mode - Clean DB (Delete `.mdb` files before testing) - Clean StoreKit transactions (Delete all test transactions before testing) - Damus setup with purple feature flag enabled, and localhost mode TEST 1: LN flow --------------- PASS Steps: 1. Start server 2. Open app 3. Open Purple screen 4. Go to the website 5. Go through the Lightning flow normally. Ensure that the flow is completed successfully. PASS 6. Continue in the app 7. Check that the user gets a star in their profile, with "1st" close to their name on the profile view. PASS TEST 2: IAP flow ---------------- PASS* Steps: 1. Start server 2. Open app 3. Open Purple screen 4. Pay for the subscription using IAP (Xcode environment) 5. Ensure that the flow is completed successfully. PASS* 6. Ensure that the user gets a star in their profile, with "1st" close to their name on the profile view. PASS *Note: An app restart is necessary to get the iOS app to send the receipt. This is a known issue. See damus-io/damus#1814 TEST 3: Multiple accounts ------------------------- Steps: 1. Purchase subscriptions on 3 different accounts (using any method) 2. Ensure the ordinal subscriber numbers are correct for each account (1st, 2nd, 3rd) by looking at the profile screen. PASS TEST 4: Unit tests ------------------ PASS Steps: Run unit tests Changelog-Added: Add subscriber ordinal number to account info Signed-off-by: Daniel D’Aquino <daniel@daquino.me> Reviewed-by: William Casarin <jb55@jb55.com> Signed-off-by: William Casarin <jb55@jb55.com>
@alltheseas, @jb55, the only remaining item on the acceptance criteria (Polish subscription mechanism so that it registers with the server immediately after subscribing (without having to restart the app) is only relevant for Apple in-app purchases. Perhaps we can either move this ticket to a future release milestone or split that item into a separate ticket and close this one? |
Acceptance criteria
Show user that apple takes X%/Y$ of each in app apple pay donation(Not allowed by Apple's AppStore guidelines)Optimize views to look good on all devices/screensDelegated to Purple iPad design (formerly Damus Purple: Polish UI/UX flow) #1847Mention that first 1,000 annual subscribers will receive "Nº 1", "Nº 2" subscriber numbersRequirement cancelled after discussion in Add ordinal number labels to Purple subscribers (1st subscriber, 2nd, etc) #1873 patchesPolish subscription mechanism so that it registers with the server immediately after subscribing (without having to restart the app)(moved to IAP Purple: Polish subscription mechanism so that it registers with the server immediately after subscribing (without having to restart the app #1948)The text was updated successfully, but these errors were encountered: