2016-09-23 7 views
1

元のアプリケーションのバージョンをアプリの領収書から読みたいと思います。iOSアプリの領収書はいつ利用できますか?

店舗からインストールされていないため、開発中のアプリケーションには領収書が含まれていません。サンドボックス領収書を取得するには、SKReceiptRefreshRequestを開始する必要があります。しかし、それはユーザーにログインするように促します。

ここに質問があります:アプリケーションが本場のStoreからダウンロードされた場合は、領収書が入っていることが保証されていますか?もしそうでなければ私はリフレッシュ要求を開始する必要があるでしょう。これはユーザーに資格情報を要求します。そして私は文脈なしでそれをしたくありません。

利用できない場合は、このケースのベストプラクティスは何ですか? SKReceiptRefreshRequestを「買い物を復元する」ルーチンに組み込みますか?

PS:このアプリはiOS 9以降でのみご利用いただけます。

答えて

3

編集

iOSアプリの領収書使用できない場合は?アプリの領収書がなくなるケースが1つあります。ユーザーがコンピュータ(iOS以外のデバイス)のiTunesからあなたのアプリを購入し、その後そのアプリをデバイスに同期させると、アプリの領収書はありません。

約48:30


第二編集

アプリの領収書は、ユーザーが新しいデバイスに復元するときで失われます別の状況から始まるthis WWDC 2014 videoを参照してください。アプリの領収書は端末固有のもので、新しい端末のために再設定する必要があります。


オリジナル回答私はフリーミアムために支払わからのアプリの切り替え処理で午前

ので、私はまた、元のアプリケーションのバージョンが必要です。私はあなたの "あなたがそこにいることが保証されている"という答えを知らないが、ここでそれをどのように扱うか決めている。

起動時に、以前に保持されていた元のアプリケーションのバージョンが検索されます。それがまだ存在しない場合(これはおそらく最初の打ち上げです)、私はネットワークをチェックします。それがうまくいけば、私はアプリの領収書をチェックします。それがあれば、私は検証のためにそれをアプリケーションストアに送り、成功した場合は、元のアプリケーションバージョンを応答から取り出して永続させます。それ以降の起動時に値が保持されているので、私は再度受信確認を行いません。起動時にアプリの領収書がない場合は、領収書更新をリクエストしません。私はあなたに同意します、この時点で文脈はありません。

私は、これがネットワークに到達可能なすべてのケースでうまくいくと思っていますが、IAPの時点でもう一度チェックします。このように...

            ┌────────────┐            
               │ Tap Add │            
               └────────────┘            
                 │             
┌───────────────────────────────────────────────────────┤             
│              │             
│              ▼             
│           ┌────────────────────┐    ┌──────────────────────┐ 
│    ┌──Don't Know─────────────────│ Pre-IAP customer? │───Yes─────────▶│ Create new thing │ 
│    │        └────────────────────┘    └──────────────────────┘ 
│    │          │             
│    │          │       ┌──────────────────────┐ 
│    │          └──────No─────────────────▶│   IAP   │ 
│    │                 └──────────────────────┘ 
│    │                       
│    ▼      ┌────────────────────────────────────────┐       
│ ┌──────────────────────┐    │Maybe: Allow one grace thing. Warn that │       
│ │ Network Reachable? │────No──────▶│ the user must connect to the internet │       
│ └──────────────────────┘    │  before adding another thing.  │       
│    │      └────────────────────────────────────────┘       
│    Yes                       
│    │                       
│    ▼      ┌────────────────────────────────────────────────────┐    
│ ┌──────────────────────┐    │ Maybe, depending on your requirements: Alert the │    
│ │ Receipt Present? │────No──────▶│user that the app receipt is not present and the app│    
│ └──────────────────────┘    │  store may ask for their credentials.  │    
│    │      └────────────────────────────────────────────────────┘    
│    Yes             │          
│    │          ┌─────────────┘          
│    ▼          ▼              
│ ┌──────────────────────┐    ┌────────────────────────┐           
│ │  Valid?  │◀────────────│ Refresh the receipt. │           
│ └──────────────────────┘    └────────────────────────┘           
│    │                       
│    └─Yes───┐                     
│      ▼                     
│ ┌───────────────────────────────────────┐                
└──│ Persist original_application_version │                
    └───────────────────────────────────────┘      
+0

徹底的な答えをありがとう。私はちょうど迷っていましたが、領収書はそこにはないでしょうし、もう一度リクエストする必要があります...ところで、あなたはまた、ローカル領収書のバリデーションやバージョン番号の読み込みができます。 iTunesにお問い合わせください。 –

+0

この回答は、ベストプラクティスに関する最後の質問に対する回答が多かった。私のアプローチがベストプラクティスであるとは思わない。それは私がそれをどう扱うかだけです。ローカル検証に関して、私はそのアプローチを評価しましたが、アプリストア検証を選択しました。ローカル検証のために必要なすべての暗号化を取得することは、少なくとも私のためには自明ではなく、IAPを完成させるためには、とにかくアプリストアに話をする必要があります。 –

関連する問題