4

我想从应用程序的收据中读取原始应用程序版本。

在开发中,该应用程序不包含收据,因为它不是从商店安装的。我需要启动一个SKReceiptRefreshRequest才能获得沙盒收据。但这会提示用户登录。

那么问题来了:如果应用程序是在生产环境中从商店下载的,它是否保证包含收据?因为如果不是,我需要启动一个刷新请求,提示用户输入他们的凭据。我不想在没有上下文的情况下这样做。

如果它不可用,这种情况下的最佳做法是什么?将其SKReceiptRefreshRequest纳入“恢复购买”程序?

PS:该应用程序仅适用于 iOS 9+。

4

1 回答 1

8

编辑

iOS 应用收据何时不可用?这是缺少应用收据的一种情况。如果用户在计算机(非 iOS 设备)上从 iTunes 购买您的应用程序,然后将该应用程序同步到他们的设备,则不会有应用程序收据。

从大约 48:30 开始观看这个 WWDC 2014 视频


第二次编辑

缺少应用收据的另一种情况是用户恢复到新设备时。应用收据是特定于设备的,需要为新设备重新获取。


原始答案

我正在将应用程序从付费切换到免费增值,因此我还需要原始应用程序版本。我不知道你的“它保证在那里”问题的答案,但这是我决定如何处理它。

在启动时,我会寻找以前保留的原始应用程序版本。如果那还不存在(这可能是第一次发布),我会检查网络。如果没问题,我会检查应用收据。如果存在,我将其发送到应用商店进行验证,如果成功,则从响应中获取原始应用程序版本并将其保留。在随后的启动中,存在持久值,因此我不再进行收据验证。如果启动时不存在应用收据,我不会请求刷新收据。我同意你的看法,目前没有上下文。

我猜这在网络可达的所有情况下都有效,但我在 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  │                                                               
   └───────────────────────────────────────┘                      
于 2016-10-05T14:17:44.183 回答