title: When to use restoreCompletedTransactions for in-app purchases?
body: <p>For a basic app with nonconsumable in-app purchases, has anyone figured out best practices for using SKPaymentQueue's <code>restoreCompletedTransactions</code>?</p>
  
  <h3>Observations</h3>
  
  <p>I know it's recommended to always register a transaction observer to receive pending transactions that make their way back to the app, but this is a different question.  It looks like <code>restoreCompletedTransactions</code> is something the app has to actively decide when to call to poll for all the purchases the customer has already made.</p>
  
  <p>From what I can tell, the method is designed to retrieve purchases that may have been lost.  For example a customer might install or move an app to a new device in such a way where the app's local records of previous payments are lost or reset.</p>
  
  <h3>Concerns</h3>
  
  <p>What's not clear to me is how to automatically detect this condition (i.e. how to decide when to poll for missing purchases) in a reliable way.  I don't want to screw this up and risk denying a customer access to functionality they've already paid for.</p>
  
  <p>At the same time, I don't want to call <code>restoreCompletedTransactions</code> every single time the app launches just to be safe and basically get back transactions I already know about 99.9% of the time.  (Except for in-app purchasing, my app doesn't really require any network connectivity.)</p>
  
  <h3>Notes</h3>
  
  <p>Apple documentation clarifies that customers are not charged again for any nonconsumable purchases they have already made.  If they try to re-purchase, a payment transaction is still supposedly sent to the app.</p>
  
  <p>Worst-case, a customer could recover purchases this way but I'd still like to avoid walking them down a path that resembles re-purchasing something they've already paid for.</p>