Tip jars are an easy way to start generating revenue from users that love your app. We step through the entire process of adding a tip jar to an iOS app.
Table of Contents:
These days, it's easier than ever to put together an application you see a need for and release it to help the world.
Over time all apps need updating - new devices are released, features like Dark Mode, or just graphic design overhauls.
Anyone can support these changes for a while but eventually, the reality is that all app developers need money to keep an application going.
So why not let your biggest fans, the people who love using your app, help you out? If you don't even try, you might never know just how much people appreciate what you have built.
It seems daunting to put together a payment system, even more, to figure out what areas of your app you might want to change to paid access - but you don't have to go that far, there's a simpler path to start - the tip jar!
Simply put, the tip jar is a way for someone who really loves using your application, to show support for you through a one-time in-app purchase. It's a reward for work you've already done and for improving someone's life, a way for someone to ask you to please keep going because they love what you have done.
Technically speaking, Apple provides three distinct ways to receive payment:
The last category, consumable products, is perfect for tip jars - you can simply message your users from time to time or add a screen for them to find in your app when they seek a way to reward you for your work.
It's a single purchase that doesn't have to be remembered, although you may choose to do so if you wish to remember who recognized your app so you can provide them with some small reward.
You can just set up StoreKit yourself to create your own tip jar, but it can be complex to do right and frustrating to add without bugs that are hard to test for.
Nami can help you by providing the UI for the paywall for you, and over time can figure out what people are doing in your app (and for how long) that makes them more likely to tip - that way in the future you can prompt for tips only for users that are gaining the most from your application, and most likely would be happy to share their appreciation!
Setting up payments can be complex, Nami makes these basic cases incredibly simple for you to start using.
Create a consumable or non-recurring subscription product for your app (or possibly a few at different price points). In App Store Connect, visit your app, click on Features, then add products:
Give it a name and a product identifier, then set the price:
Sign-up for a Nami account for your app
Setup an application in our system
You'll need the application bundle ID.
Take the one or more product ID's you created earlier in App Store Connect, In Nami, go to Products, then add the same product ID's you have defined in App Store Connect - if they do not match exactly, you'll not see that product appear in your paywall (which can be a useful thing to double-check if you see a paywall but not your products).
Nami can handle more advanced cases like multiple paywalls, and campaigns that you can change out on the fly - but to start with for our simple Tip Jar, all we need is a single paywall built using the Paywall Creator!
Once you've added your products, go to the paywall tab on the side, and create a new paywall - Name it something like Tip Jar, then for the title and body put in something that makes people excited to be supporting your application, and gives further explanation of how their contributions will help you continue to improve the app. The products you add to this paywall will automatically show up below the title and body and can be purchased by your users. Also, make sure to add a background image for iPad and iPhone which is required to fully set up a paywall!
For example, here's the Nami Tip Jar example paywall:
Lastly even though you have just one paywall, you still need a campaign to display it - so quickly create a campaign, add your paywall you just added, and make the campaign live. You can leave the rules alone for now or have the paywall appear every so often after they open the app by selecting the rule to open after so many sessions. Here's how we have the tip jar for our example configured:
Be sure to make the campaign Active on the Overview tab, then you are ready to go! For more help please see the Nami documentation on setting up paywalls and campaigns.
Although Nami paywalls can be made to show automatically, for tip jars it's great to have a way for users to be able to seek out and find your tip jar to use whenever they like.
Usually, it's good to put this in something like an "About Me" page that you probably have already - for example in our demo app we have a section describing the basic philosophy of color, and telling people who the application developers are. That's the first place someone might look for ways to support your app, without it being too in the face for your users.
For example, to start with our sample Tip Jar application has this About screen:
After adding some text about why someone might want to tip, and a button that will enable the user to get to our tip jar:
Now that we have the UI to show the user how to get to our tip jar, we are ready to add Nami so that it can present the tip jar for us and handle payments!
Add the SDK to your application as described here:
https://docs.namiml.com/docs/add-the-nami-sdk-to-your-project
After you follow those instructions, you should have the Nami Framework added to your project/workspace like so:
Also make sure you have code in your AppDelegate to tell Nami what your App Platform ID is:
Once the SDK has been added, you just need one line of code to have the button you added raise the tip jar on demand!
Don't forget to import the Nami framework at the top of the file!
Run the project, and you should see something like this come up in the simulator when you use your button:
If you like, you can go ahead and tap one of the buttons to simulate a purchase.
There's one other thing we need to do to make sure the purchases work as intended - if we are using Consumable products, we need to consume them after purchase so they can be purchased again in the future.
It's also probably a good idea to thank whoever supports your app through purchases, so the last step is to add code that does just that - in the app delegate you can set up a handler to display such a message whenever a purchase through your tip jar is detected. Let's add a handler to do both things:
Now when a purchase is made, the user should get a nice message and the tip jar product will be cleared!
Once that is working, you should raise the test paywall again and take screenshot of the simulator using the File-New ScreenShot option of the simulator. Upload this image (saved onto your desktop and named "Simulator Screen Shot") into the review metadata for each of the product definitions in App Store Connect:
It is also a good idea to add in a description of how the App Store tester can access the payment screen in your app, to make it easier for them to test payments.
Lastly, you need to make sure the products you are using for your tip jar are added to your next App Store submission for review! Go to the App Store tab in App Store Connect for your app, then click on the prepare for submission item:
Scroll down to find the In-App Purchases section:
Click on "+" and add your products.
Now when you are ready to submit your app, the App Store reviewer will know they need to test these products and they can be added properly to your app on the App Store.
That's it! Now you have a path for your application community to provide you with support to help make your application even better.