Which raises the question of what is a reasonable expected lifetime of an application? If, say, my app stops working in a future iOS update years from now and I take no action to update it, should those customers still expect a full refund even though they've used my app for years already?
Assuming you weren't doing anything sneaky, I think not, because Apple (at least theoretically) takes responsibility for not breaking compliant applications with updates. There's a world of difference between Apple breaking your app and you breaking your app.
There seems to be a parallel with other warranty/consumer protection laws here.
In the UK, for example, we have laws like the Sale of Goods Act, under which anything you buy firsthand must meet certain criteria such as being fit for the purpose it was sold for. If it isn't, you are typically entitled to a repair/replacement/refund. However, that need not necessarily be a full refund or replacement with a brand new equivalent, depending on the circumstances.
Typically, if a physical product is found to be faulty within six months of purchase, the onus is on the merchant to prove that it was not faulty when it was bought. After that, the burden shifts somewhat, but the merchant can still be liable for fixing a problem even a few years after the original purchase if the item would normally be expected to last that long. As time goes by, the amount of a refund you might be entitled to receive if the product breaks and isn't be repaired or replaced instead would tend to diminish, to reflect the value you have already received from the use of the product before it broke.
Usually, in physical product world, a court could make a fair determination of how long something might reasonably be expected to last based on the general market, the original purchase price, etc. Of course with software it's harder, because bits don't magically break, but on the other hand there are platform compatibility issues to consider.
As you say, that raises the question of what is a reasonable expected lifetime. If we're talking about pure content -- an e-book, music, a movie, etc. -- then I would argue the answer is "forever". If someone has paid for the content, in the expectation that it was a full purchase and not for example a rental or all-you-can-watch fixed-time subscription, then there is simply no excuse for ever deactivating the product after the purchase.
If we're talking about executable code in an application, then I would argue that the answer must be as a minimum "as long as the supporting platform is available", where by supporting platform I mean the device/OS/etc. necessary to run the code, and not including any sort of artificial dependency introduced exclusively or primarily for the purpose of allowing the software to be disabled in the future. If there is a legitimate dependency on some system outside the consumer's personal control, for example a centralised server used to co-ordinate a multiplayer game and operated at the game developer's expense, then I wouldn't have a problem with a system whereby the dependency was OK but anyone who wanted to maintain the usual legal protections for software would have to leave in escrow a version of the software that allowed third party systems to replace such dependencies if and when the original systems ceased to be available.