This tutorial is a bit incomplete, because it assumes someone who subscribes to a product gets access to lifetime. I.e. it does not handle cancellations, non-renewals, expired subscriptions, and all these other corner cases causing the subscription to end.
I understand that the server component is hard, so maybe you should include some stubs for verifying the receipt using your server and mark them as TODO, or use a client library to verify (such as SwiftyStoreKit).
I ended up following the tutorial, thought I was ready to ship, but then noticed the whole renewals / cancellations / expired part was missing, so ended up using SwiftyStoreKit in the end.
I would at least mention these unhandled cases in the ‘where to go from here’ section. I could see a newbie getting lost after reading this tutorial and shipping subscription without these unhandled cases in mind.