Add Donation Dialog
Requirements
- [x] There are no existing issues for this feature.
- [x] This is a request for a single feature (create multiple issues for multiple feature requests).
Description
I am one of the Lemmy maintainers and work on the project fulltime together with Dessalines. Our work is funded by donations, but these are gradually going down and don't even cover a single dev salary now (see join-lemmy.org). That's why we added a new donation dialog in 0.19.11 which is shown once a year to every user:
Many people use Lemmy exclusively through apps, so we would greatly appreciate if you could add such a dialog to your app too. The logic is relatively simple:
- From the
/api/v3/siteresponse, checkmy_user.local_user_view.local_user.last_donation_notification - If the date is more than one year ago, display a dialog like the one above with buttons Donate, Close
- When Donate is clicked:
- Open
https://join-lemmy.org/donate - Close dialog
- Call
POST /api/v3/user/donation_dialog_shownto hide dialog until next year
- Open
- When Close is clicked also call the
donation_dialog_shownendpoint
To test this functionality with a 0.19.11 instance, run the SQL query update local_user set last_donation_notification = '2024-04-07 09:05:06'; which shows the dialog for all local users. You can reuse the code and strings used in lemmy-ui.
Thanks for your consideration!
Whilst this would be nice to have, I'm not sure that this is permitted under the App Store guidelines. We don't link to our own OpenCollective anywhere within Mlem because of this. Here's what the guidelines say:
Acceptable: (vi) Approved nonprofits may fundraise directly within their own apps or third-party apps, provided those fundraising campaigns adhere to all App Review Guidelines and offer Apple Pay support. These apps must disclose how the funds will be used, abide by all required local and federal laws, and ensure appropriate tax receipts are available to donors. Additional information shall be provided to App Review upon request. Nonprofit platforms that connect donors to other nonprofits must ensure that every nonprofit listed in the app has also gone through the nonprofit approval process. Learn more about becoming an approved nonprofit.
(vii) Apps may enable individual users to give a monetary gift to another individual without using in-app purchase, provided that (a) the gift is a completely optional choice by the giver, and (b) 100% of the funds go to the receiver of the gift. However, a gift that is connected to or associated at any point in time with receiving digital content or services must use in-app purchase.
Unacceptable: (iv) Unless you are an approved nonprofit or otherwise permitted under Section 3.2.1 (vi) above, collecting funds within the app for charities and fundraisers. Apps that seek to raise money for such causes must be free on the App Store and may only collect funds outside of the app, such as via Safari or SMS.
My understanding is that if Mlem was to offer any sort of "Donate" button through Mlem itself, we'd need to collect donations through Apple Pay rather than (or maybe in addition to?) linking to a site such as OpenCollective. If we offered a donation button for Lemmy, we'd need Lemmy to be approved by Apple (I haven't looked into how involved that process is).
The other open source iOS apps I've used (Ice Cubes for Mastodon and Apollo for Reddit) collected donations through Apple's IAP system.
Apps that seek to raise money for such causes must be free on the App Store and may only collect funds outside of the app, such as via Safari or SMS.
This sounds to me that if that donate button were to open the donate URL in the web browser and not the app, you'd be okay to show it. No?
Also, you could add a donate button to the About Mlem view so it's always there.
I went through a few forum pages and saw quite a few people saying they'd been rejected for linking to external sites. I'm yet to find any evidence of someone managing to get away with it.
Can confirm - I got rejected in review because I had a Buy Me a Coffee-button in the Settings view. Must be in-app purchases (but really easy to do with SwiftUI and StoreKit2)
I had a link from my app to a KoFi site where users could make donations and I was gently coached to remove that once it was noticed during an app review.
We found in our review that your app or its metadata provides access to mechanisms other than in-app purchase for purchases or subscriptions to be used in the app, which does not comply with the App Review Guidelines.
[...]
Regarding 3.1.1, as the gift would go directly to you, the developer, this is considered a shareware model.
To resolve this issue, it would be appropriate to use in-app purchase for any donations or gifts to development.
In that case it may be possible to link directly to the OpenCollective page instead. Then the money goes to Open Source Collective which is a nonprofit registered in the US.
Open Source Collective is a nonprofit, but they are a 501(c)(6) rather than 501(c)(3). I suspect Apple will take issue with this as only 501(c)(3) denotes charitable causes; moreover, as OSC is a fiscal host rather than a cause in itself and the end recipient of the funds would be Lemmy, I expect Apple will require Lemmy itself be registered as an approved nonprofit. Out of due diligence I will reach out to OSC for their insight here, but I do not expect we will be able to link directly to a donation page.
At this juncture I believe the best course of action is to include Lemmy donations when we build our own in-app purchase donation mechanism (#1967). If everything goes through IAP and Apple gets their cut, I don't think they'll complain.
With in-app purchases Apple charges a high fee right? There are some Lemmy instances which created foundations, maybe it would be possible to receive donations through them or at least get their advice. Namely lemmy.world and lemmy.ca.
Apple charges a 15% fee on IAPs.
I'll also note that google gives me the same issues with android, as I've had to remove donations links whenever they ding me for it. They do not like it when you add ways give money to developers outside their own payment systems.
Update:
Following a recent court order in the US, Apple has changed the guidelines. Apple is currently appealing the court decision, which may result in the reversal of these changes. The new guidelines now read as follows, with new changes in bold:
3.1.3 Other Purchase Methods: Apps in this section cannot, within the app, encourage users to use a purchasing method other than in-app purchase, except for apps on the United States storefront.
3.1.1(a) Link to Other Purchase Methods: Developers may apply for entitlements to provide a link in their app to a website the developer owns or maintains responsibility for in order to purchase digital content or services. These entitlements are not required for developers to include buttons, external links, or others calls to action in their United States storefront apps.
Following these changes, we're able to implement a donation prompt that links to Lemmy's donation site(s) for our users in the US (about 50% of our userbase) :)